• Vladimir Oltean's avatar
    net: bridge: add helper for retrieving the current bridge port STP state · c0e715bb
    Vladimir Oltean authored
    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: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: default avatarTobias Waldekranz <tobias@waldekranz.com>
    Acked-by: default avatarNikolay Aleksandrov <nikolay@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c0e715bb
br_stp.c 15.9 KB