On Wed, 20 Feb 2019 10:32:52 +0000, Russell King <rmk+ker...@armlinux.org.uk> wrote: > When a DSA port is added to a bridge and brought up, the resulting STP > state programmed into the hardware depends on the order that these > operations are performed. However, the Linux bridge code believes that > the port is in disabled mode. > > If the DSA port is first added to a bridge and then brought up, it will > be in blocking mode. If it is brought up and then added to the bridge, > it will be in disabled mode. > > This difference is caused by DSA always setting the STP mode in > dsa_port_enable() whether or not this port is part of a bridge. Since > bridge always sets the STP state when the port is added, brought up or > taken down, it is unnecessary for us to manipulate the STP state. > > Apparently, this code was copied from Rocker, and the very next day a > similar fix for Rocker was merged but was not propagated to DSA. See > e47172ab7e41 ("rocker: put port in FORWADING state after leaving bridge") > > Fixes: b73adef67765 ("net: dsa: integrate with SWITCHDEV for HW bridging") > Signed-off-by: Russell King <rmk+ker...@armlinux.org.uk>
Reviewed-by: Vivien Didelot <vivien.dide...@gmail.com>