| From 8043c845b63a2dd88daf2d2d268a33e1872800f0 Mon Sep 17 00:00:00 2001 |
| From: Vladimir Oltean <vladimir.oltean@nxp.com> |
| Date: Sun, 7 Feb 2021 21:47:33 +0200 |
| Subject: net: bridge: use switchdev for port flags set through sysfs too |
| |
| From: Vladimir Oltean <vladimir.oltean@nxp.com> |
| |
| commit 8043c845b63a2dd88daf2d2d268a33e1872800f0 upstream. |
| |
| Looking through patchwork I don't see that there was any consensus to |
| use switchdev notifiers only in case of netlink provided port flags but |
| not sysfs (as a sort of deprecation, punishment or anything like that), |
| so we should probably keep the user interface consistent in terms of |
| functionality. |
| |
| http://patchwork.ozlabs.org/project/netdev/patch/20170605092043.3523-3-jiri@resnulli.us/ |
| http://patchwork.ozlabs.org/project/netdev/patch/20170608064428.4785-3-jiri@resnulli.us/ |
| |
| Fixes: 3922285d96e7 ("net: bridge: Add support for offloading port attributes") |
| Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> |
| Acked-by: Nikolay Aleksandrov <nikolay@nvidia.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/bridge/br_sysfs_if.c | 9 ++++++--- |
| 1 file changed, 6 insertions(+), 3 deletions(-) |
| |
| --- a/net/bridge/br_sysfs_if.c |
| +++ b/net/bridge/br_sysfs_if.c |
| @@ -55,9 +55,8 @@ static BRPORT_ATTR(_name, 0644, \ |
| static int store_flag(struct net_bridge_port *p, unsigned long v, |
| unsigned long mask) |
| { |
| - unsigned long flags; |
| - |
| - flags = p->flags; |
| + unsigned long flags = p->flags; |
| + int err; |
| |
| if (v) |
| flags |= mask; |
| @@ -65,6 +64,10 @@ static int store_flag(struct net_bridge_ |
| flags &= ~mask; |
| |
| if (flags != p->flags) { |
| + err = br_switchdev_set_port_flag(p, flags, mask); |
| + if (err) |
| + return err; |
| + |
| p->flags = flags; |
| br_port_flags_change(p, mask); |
| } |