Now that all switchdev drivers have been converted to checking the
bridge port flags during the prepare phase of the
switchdev_port_attr_set() when the process
SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS, we can avoid calling
switchdev_port_attr_get() with
SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS_SUPPORT.

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

diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c
index db9e8ab96d48..8f88f8a1a7fa 100644
--- a/net/bridge/br_switchdev.c
+++ b/net/bridge/br_switchdev.c
@@ -64,29 +64,27 @@ 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_PRE_BRIDGE_FLAGS,
+               .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)
+       err = switchdev_port_attr_set(p->dev, &attr);
+       if (err && err != -EOPNOTSUPP)
                return err;
 
-       /* Check if specific bridge flag attribute offload is supported */
-       if (!(attr.u.brport_flags_support & mask)) {
+       if (err == -EOPNOTSUPP) {
                br_warn(p->br, "bridge flag offload is not supported %u(%s)\n",
                        (unsigned int)p->port_no, p->dev->name);
-               return -EOPNOTSUPP;
+               return err;
        }
 
        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

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to