Now that all switchdev drivers have been converted to checking the
bridge port flags during the prepare phase of the
switchdev_port_attr_set(), we can move straight to trying to set the
desired flag through SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS.

Signed-off-by: Florian Fainelli <f.faine...@gmail.com>
---
 net/bridge/br_switchdev.c | 20 +++-----------------
 1 file changed, 3 insertions(+), 17 deletions(-)

diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c
index db9e8ab96d48..939f300522c5 100644
--- a/net/bridge/br_switchdev.c
+++ b/net/bridge/br_switchdev.c
@@ -64,29 +64,15 @@ int br_switchdev_set_port_flag(struct net_bridge_port *p,
 {
        struct switchdev_attr attr = {
                .orig_dev = p->dev,
-               .id = SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT,
+               .id = SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS,
+               .flags = SWITCHDEV_F_DEFER,
+               .u.brport_flags = flags,
        };
        int err;
 
        if (mask & ~BR_PORT_FLAGS_HW_OFFLOAD)
                return 0;
 
-       err = switchdev_port_attr_get(p->dev, &attr);
-       if (err == -EOPNOTSUPP)
-               return 0;
-       if (err)
-               return err;
-
-       /* Check if specific bridge flag attribute offload is supported */
-       if (!(attr.u.brport_flags_support & mask)) {
-               br_warn(p->br, "bridge flag offload is not supported %u(%s)\n",
-                       (unsigned int)p->port_no, p->dev->name);
-               return -EOPNOTSUPP;
-       }
-
-       attr.id = SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS;
-       attr.flags = SWITCHDEV_F_DEFER;
-       attr.u.brport_flags = flags;
        err = switchdev_port_attr_set(p->dev, &attr);
        if (err) {
                br_warn(p->br, "error setting offload flag on port %u(%s)\n",
-- 
2.17.1

Reply via email to