Re: [RFC PATCH v2 net-next 10/16] net: dsa: replay VLANs installed on port when joining the bridge
From: Florian Fainelli <f.fainelli@gmail.com>
Date: 2021-03-19 22:25:24
Also in:
linux-omap, lkml
On 3/18/2021 4:18 PM, Vladimir Oltean wrote:
quoted hunk ↗ jump to hunk
From: Vladimir Oltean <vladimir.oltean@nxp.com> Currently this simple setup: ip link add br0 type bridge vlan_filtering 1 ip link add bond0 type bond ip link set bond0 master br0 ip link set swp0 master bond0 will not work because the bridge has created the PVID in br_add_if -> nbp_vlan_init, and it has notified switchdev of the existence of VLAN 1, but that was too early, since swp0 was not yet a lower of bond0, so it had no reason to act upon that notification. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> --- include/linux/if_bridge.h | 10 ++++++ net/bridge/br_vlan.c | 71 +++++++++++++++++++++++++++++++++++++++ net/dsa/port.c | 6 ++++ 3 files changed, 87 insertions(+)diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h index 89596134e88f..ea176c508c0d 100644 --- a/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h@@ -111,6 +111,8 @@ int br_vlan_get_pvid_rcu(const struct net_device *dev, u16 *p_pvid); int br_vlan_get_proto(const struct net_device *dev, u16 *p_proto); int br_vlan_get_info(const struct net_device *dev, u16 vid, struct bridge_vlan_info *p_vinfo); +int br_vlan_replay(struct net_device *br_dev, struct net_device *dev, + struct notifier_block *nb, struct netlink_ext_ack *extack); #else static inline bool br_vlan_enabled(const struct net_device *dev) {@@ -137,6 +139,14 @@ static inline int br_vlan_get_info(const struct net_device *dev, u16 vid, { return -EINVAL; } + +static inline int br_vlan_replay(struct net_device *br_dev, + struct net_device *dev, + struct notifier_block *nb, + struct netlink_ext_ack *extack) +{ + return -EINVAL;
Same comment as patch 8, CONFIG_BRIDGE_VLAN_FILTERING can be turned off even if this does not really make practical sense with a hardware switch. Should we return -EOPNOTSUPP instead? -- Florian