From: Vladimir Oltean <olteanv@gmail.com> To: Tobias Waldekranz <tobias@waldekranz.com> Cc: davem@davemloft.net, kuba@kernel.org, Andrew Lunn <andrew@lunn.ch>, Vivien Didelot <vivien.didelot@gmail.com>, Florian Fainelli <f.fainelli@gmail.com>, Jiri Pirko <jiri@resnulli.us>, Ivan Vecera <ivecera@redhat.com>, Roopa Prabhu <roopa@nvidia.com>, Nikolay Aleksandrov <razor@blackwall.org>, Russell King <linux@armlinux.org.uk>, Petr Machata <petrm@nvidia.com>, Ido Schimmel <idosch@nvidia.com>, Matt Johnston <matt@codeconstruct.com.au>, Cooper Lees <me@cooperlees.com>, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, bridge@lists.linux-foundation.org Subject: Re: [PATCH v5 net-next 07/15] net: bridge: mst: Add helper to map an MSTI to a VID set Date: Thu, 17 Mar 2022 02:43:26 +0200 [thread overview] Message-ID: <20220317004326.ebsc5xjug76qqen3@skbuf> (raw) In-Reply-To: <20220316150857.2442916-8-tobias@waldekranz.com> On Wed, Mar 16, 2022 at 04:08:49PM +0100, Tobias Waldekranz wrote: > br_mst_get_info answers the question: "On this bridge, which VIDs are > mapped to the given MSTI?" > > This is useful in switchdev drivers, which might have to fan-out > operations, relating to an MSTI, per VLAN. > > An example: When a port's MST state changes from forwarding to > blocking, a driver may choose to flush the dynamic FDB entries on that > port to get faster reconvergence of the network, but this should only > be done in the VLANs that are managed by the MSTI in question. > > Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com> > --- Reviewed-by: Vladimir Oltean <olteanv@gmail.com> > include/linux/if_bridge.h | 7 +++++++ > net/bridge/br_mst.c | 26 ++++++++++++++++++++++++++ > 2 files changed, 33 insertions(+) > > diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h > index 3aae023a9353..1cf0cc46d90d 100644 > --- a/include/linux/if_bridge.h > +++ b/include/linux/if_bridge.h > @@ -119,6 +119,7 @@ int br_vlan_get_info(const struct net_device *dev, u16 vid, > struct bridge_vlan_info *p_vinfo); > int br_vlan_get_info_rcu(const struct net_device *dev, u16 vid, > struct bridge_vlan_info *p_vinfo); > +int br_mst_get_info(const struct net_device *dev, u16 msti, unsigned long *vids); > #else > static inline bool br_vlan_enabled(const struct net_device *dev) > { > @@ -151,6 +152,12 @@ static inline int br_vlan_get_info_rcu(const struct net_device *dev, u16 vid, > { > return -EINVAL; > } > + > +static inline int br_mst_get_info(const struct net_device *dev, u16 msti, > + unsigned long *vids) > +{ > + return -EINVAL; > +} > #endif > > #if IS_ENABLED(CONFIG_BRIDGE) > diff --git a/net/bridge/br_mst.c b/net/bridge/br_mst.c > index 00935a19afcc..00b36e629224 100644 > --- a/net/bridge/br_mst.c > +++ b/net/bridge/br_mst.c > @@ -13,6 +13,32 @@ > > DEFINE_STATIC_KEY_FALSE(br_mst_used); > > +int br_mst_get_info(const struct net_device *dev, u16 msti, unsigned long *vids) > +{ > + const struct net_bridge_vlan_group *vg; > + const struct net_bridge_vlan *v; > + const struct net_bridge *br; > + > + ASSERT_RTNL(); > + > + if (!netif_is_bridge_master(dev)) > + return -EINVAL; > + > + br = netdev_priv(dev); > + if (!br_opt_get(br, BROPT_MST_ENABLED)) > + return -EINVAL; > + > + vg = br_vlan_group(br); > + > + list_for_each_entry(v, &vg->vlan_list, vlist) { > + if (v->msti == msti) > + __set_bit(v->vid, vids); > + } > + > + return 0; > +} > +EXPORT_SYMBOL_GPL(br_mst_get_info); > + > static void br_mst_vlan_set_state(struct net_bridge_port *p, struct net_bridge_vlan *v, > u8 state) > { > -- > 2.25.1 >
WARNING: multiple messages have this Message-ID (diff)
From: Vladimir Oltean <olteanv@gmail.com> To: Tobias Waldekranz <tobias@waldekranz.com> Cc: Ivan Vecera <ivecera@redhat.com>, Andrew Lunn <andrew@lunn.ch>, Florian Fainelli <f.fainelli@gmail.com>, Jiri Pirko <jiri@resnulli.us>, Petr Machata <petrm@nvidia.com>, Nikolay Aleksandrov <razor@blackwall.org>, bridge@lists.linux-foundation.org, Russell King <linux@armlinux.org.uk>, Vivien Didelot <vivien.didelot@gmail.com>, Ido Schimmel <idosch@nvidia.com>, netdev@vger.kernel.org, Cooper Lees <me@cooperlees.com>, Roopa Prabhu <roopa@nvidia.com>, kuba@kernel.org, Matt Johnston <matt@codeconstruct.com.au>, davem@davemloft.net, linux-kernel@vger.kernel.org Subject: Re: [Bridge] [PATCH v5 net-next 07/15] net: bridge: mst: Add helper to map an MSTI to a VID set Date: Thu, 17 Mar 2022 02:43:26 +0200 [thread overview] Message-ID: <20220317004326.ebsc5xjug76qqen3@skbuf> (raw) In-Reply-To: <20220316150857.2442916-8-tobias@waldekranz.com> On Wed, Mar 16, 2022 at 04:08:49PM +0100, Tobias Waldekranz wrote: > br_mst_get_info answers the question: "On this bridge, which VIDs are > mapped to the given MSTI?" > > This is useful in switchdev drivers, which might have to fan-out > operations, relating to an MSTI, per VLAN. > > An example: When a port's MST state changes from forwarding to > blocking, a driver may choose to flush the dynamic FDB entries on that > port to get faster reconvergence of the network, but this should only > be done in the VLANs that are managed by the MSTI in question. > > Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com> > --- Reviewed-by: Vladimir Oltean <olteanv@gmail.com> > include/linux/if_bridge.h | 7 +++++++ > net/bridge/br_mst.c | 26 ++++++++++++++++++++++++++ > 2 files changed, 33 insertions(+) > > diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h > index 3aae023a9353..1cf0cc46d90d 100644 > --- a/include/linux/if_bridge.h > +++ b/include/linux/if_bridge.h > @@ -119,6 +119,7 @@ int br_vlan_get_info(const struct net_device *dev, u16 vid, > struct bridge_vlan_info *p_vinfo); > int br_vlan_get_info_rcu(const struct net_device *dev, u16 vid, > struct bridge_vlan_info *p_vinfo); > +int br_mst_get_info(const struct net_device *dev, u16 msti, unsigned long *vids); > #else > static inline bool br_vlan_enabled(const struct net_device *dev) > { > @@ -151,6 +152,12 @@ static inline int br_vlan_get_info_rcu(const struct net_device *dev, u16 vid, > { > return -EINVAL; > } > + > +static inline int br_mst_get_info(const struct net_device *dev, u16 msti, > + unsigned long *vids) > +{ > + return -EINVAL; > +} > #endif > > #if IS_ENABLED(CONFIG_BRIDGE) > diff --git a/net/bridge/br_mst.c b/net/bridge/br_mst.c > index 00935a19afcc..00b36e629224 100644 > --- a/net/bridge/br_mst.c > +++ b/net/bridge/br_mst.c > @@ -13,6 +13,32 @@ > > DEFINE_STATIC_KEY_FALSE(br_mst_used); > > +int br_mst_get_info(const struct net_device *dev, u16 msti, unsigned long *vids) > +{ > + const struct net_bridge_vlan_group *vg; > + const struct net_bridge_vlan *v; > + const struct net_bridge *br; > + > + ASSERT_RTNL(); > + > + if (!netif_is_bridge_master(dev)) > + return -EINVAL; > + > + br = netdev_priv(dev); > + if (!br_opt_get(br, BROPT_MST_ENABLED)) > + return -EINVAL; > + > + vg = br_vlan_group(br); > + > + list_for_each_entry(v, &vg->vlan_list, vlist) { > + if (v->msti == msti) > + __set_bit(v->vid, vids); > + } > + > + return 0; > +} > +EXPORT_SYMBOL_GPL(br_mst_get_info); > + > static void br_mst_vlan_set_state(struct net_bridge_port *p, struct net_bridge_vlan *v, > u8 state) > { > -- > 2.25.1 >
next prev parent reply other threads:[~2022-03-17 0:43 UTC|newest] Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-03-16 15:08 [PATCH v5 net-next 00/15] net: bridge: Multiple Spanning Trees Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-16 15:08 ` [PATCH v5 net-next 01/15] net: bridge: mst: Multiple Spanning Tree (MST) mode Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2023-01-09 8:05 ` Ido Schimmel 2023-01-09 8:05 ` [Bridge] " Ido Schimmel 2023-01-09 10:02 ` Vladimir Oltean 2023-01-09 10:02 ` [Bridge] " Vladimir Oltean 2023-01-09 11:43 ` Ido Schimmel 2023-01-09 11:43 ` [Bridge] " Ido Schimmel 2023-01-09 11:51 ` Nikolay Aleksandrov 2023-01-09 11:51 ` [Bridge] " Nikolay Aleksandrov 2023-01-09 11:56 ` Vladimir Oltean 2023-01-09 11:56 ` [Bridge] " Vladimir Oltean 2023-01-09 12:20 ` Ido Schimmel 2023-01-09 12:20 ` [Bridge] " Ido Schimmel 2023-01-09 12:29 ` Vladimir Oltean 2023-01-09 12:29 ` [Bridge] " Vladimir Oltean 2022-03-16 15:08 ` [PATCH v5 net-next 02/15] net: bridge: mst: Allow changing a VLAN's MSTI Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-16 15:08 ` [PATCH v5 net-next 03/15] net: bridge: mst: Support setting and reporting MST port states Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-17 8:55 ` Nikolay Aleksandrov 2022-03-17 8:55 ` [Bridge] " Nikolay Aleksandrov 2022-03-16 15:08 ` [PATCH v5 net-next 04/15] net: bridge: mst: Notify switchdev drivers of MST mode changes Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-17 8:56 ` Nikolay Aleksandrov 2022-03-17 8:56 ` [Bridge] " Nikolay Aleksandrov 2022-03-16 15:08 ` [PATCH v5 net-next 05/15] net: bridge: mst: Notify switchdev drivers of VLAN MSTI migrations Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-17 8:57 ` Nikolay Aleksandrov 2022-03-17 8:57 ` [Bridge] " Nikolay Aleksandrov 2022-03-16 15:08 ` [PATCH v5 net-next 06/15] net: bridge: mst: Notify switchdev drivers of MST state changes Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-17 8:57 ` Nikolay Aleksandrov 2022-03-17 8:57 ` [Bridge] " Nikolay Aleksandrov 2022-03-16 15:08 ` [PATCH v5 net-next 07/15] net: bridge: mst: Add helper to map an MSTI to a VID set Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-17 0:43 ` Vladimir Oltean [this message] 2022-03-17 0:43 ` Vladimir Oltean 2022-03-17 9:01 ` Nikolay Aleksandrov 2022-03-17 9:01 ` [Bridge] " Nikolay Aleksandrov 2022-03-16 15:08 ` [PATCH v5 net-next 08/15] net: bridge: mst: Add helper to check if MST is enabled Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-17 0:42 ` Vladimir Oltean 2022-03-17 0:42 ` [Bridge] " Vladimir Oltean 2022-03-17 9:01 ` Nikolay Aleksandrov 2022-03-17 9:01 ` [Bridge] " Nikolay Aleksandrov 2022-03-16 15:08 ` [PATCH v5 net-next 09/15] net: bridge: mst: Add helper to query a port's MST state Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-17 0:41 ` Vladimir Oltean 2022-03-17 0:41 ` [Bridge] " Vladimir Oltean 2022-03-17 9:01 ` Nikolay Aleksandrov 2022-03-17 9:01 ` [Bridge] " Nikolay Aleksandrov 2022-03-16 15:08 ` [PATCH v5 net-next 10/15] net: dsa: Validate hardware support for MST Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-16 15:59 ` Vladimir Oltean 2022-03-16 15:59 ` [Bridge] " Vladimir Oltean 2022-03-16 15:08 ` [PATCH v5 net-next 11/15] net: dsa: Pass VLAN MSTI migration notifications to driver Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-16 15:08 ` [PATCH v5 net-next 12/15] net: dsa: Handle MST state changes Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-16 15:56 ` Vladimir Oltean 2022-03-16 15:56 ` [Bridge] " Vladimir Oltean 2022-03-16 15:08 ` [PATCH v5 net-next 13/15] net: dsa: mv88e6xxx: Disentangle STU from VTU Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-16 15:08 ` [PATCH v5 net-next 14/15] net: dsa: mv88e6xxx: Export STU as devlink region Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-16 15:08 ` [PATCH v5 net-next 15/15] net: dsa: mv88e6xxx: MST Offloading Tobias Waldekranz 2022-03-16 15:08 ` [Bridge] " Tobias Waldekranz 2022-03-17 9:00 ` [PATCH v5 net-next 00/15] net: bridge: Multiple Spanning Trees Nikolay Aleksandrov 2022-03-17 9:00 ` [Bridge] " Nikolay Aleksandrov 2022-03-17 9:50 ` Tobias Waldekranz 2022-03-17 9:50 ` [Bridge] " Tobias Waldekranz 2022-03-17 9:56 ` Nikolay Aleksandrov 2022-03-17 9:56 ` [Bridge] " Nikolay Aleksandrov 2022-03-18 0:20 ` patchwork-bot+netdevbpf 2022-03-18 0:20 ` [Bridge] " patchwork-bot+netdevbpf
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220317004326.ebsc5xjug76qqen3@skbuf \ --to=olteanv@gmail.com \ --cc=andrew@lunn.ch \ --cc=bridge@lists.linux-foundation.org \ --cc=davem@davemloft.net \ --cc=f.fainelli@gmail.com \ --cc=idosch@nvidia.com \ --cc=ivecera@redhat.com \ --cc=jiri@resnulli.us \ --cc=kuba@kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=matt@codeconstruct.com.au \ --cc=me@cooperlees.com \ --cc=netdev@vger.kernel.org \ --cc=petrm@nvidia.com \ --cc=razor@blackwall.org \ --cc=roopa@nvidia.com \ --cc=tobias@waldekranz.com \ --cc=vivien.didelot@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.