Re: [RFC PATCH v2 net-next 04/16] net: dsa: sync up with bridge port's STP state when joining

From: Tobias Waldekranz
Date: Mon Mar 22 2021 - 06:31:03 EST


On Fri, Mar 19, 2021 at 01:18, Vladimir Oltean <olteanv@xxxxxxxxx> wrote:
> From: Vladimir Oltean <vladimir.oltean@xxxxxxx>
>
> It may happen that we have the following topology:
>
> ip link add br0 type bridge stp_state 1
> ip link add bond0 type bond
> ip link set bond0 master br0
> ip link set swp0 master bond0
> ip link set swp1 master bond0
>
> STP decides that it should put bond0 into the BLOCKING state, and
> that's that. The ports that are actively listening for the switchdev
> port attributes emitted for the bond0 bridge port (because they are
> offloading it) and have the honor of seeing that switchdev port
> attribute can react to it, so we can program swp0 and swp1 into the
> BLOCKING state.
>
> But if then we do:
>
> ip link set swp2 master bond0
>
> then as far as the bridge is concerned, nothing has changed: it still
> has one bridge port. But this new bridge port will not see any STP state
> change notification and will remain FORWARDING, which is how the
> standalone code leaves it in.
>
> Add a function to the bridge which retrieves the current STP state, such
> that drivers can synchronize to it when they may have missed switchdev
> events.
>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@xxxxxxx>
> ---

Reviewed-by: Tobias Waldekranz <tobias@xxxxxxxxxxxxxx>