On 23/03/2021 01:51, Vladimir Oltean wrote: > From: Vladimir Oltean <vladimir.oltean@xxxxxxx> > > It may happen that we have the following topology with DSA or any other > switchdev driver with LAG offload: > > 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. > > We need a function in the bridge driver 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: Florian Fainelli <f.fainelli@xxxxxxxxx> > Reviewed-by: Tobias Waldekranz <tobias@xxxxxxxxxxxxxx> > --- > include/linux/if_bridge.h | 6 ++++++ > net/bridge/br_stp.c | 14 ++++++++++++++ > 2 files changed, 20 insertions(+) > Acked-by: Nikolay Aleksandrov <nikolay@xxxxxxxxxx>