[BRIDGE]: adding new device to bridge should enable if up
authorAji Srinivas <emc.com>
Thu, 8 Mar 2007 00:10:53 +0000 (16:10 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 8 Mar 2007 00:10:53 +0000 (16:10 -0800)
One change introduced by the workqueue removal patch is that adding an
interface that is up to a bridge which is also up does not ever call
br_stp_enable_port(), leaving the port in DISABLED state until we do
ifconfig down and up or link events occur.

The following patch to the br_add_if function fixes it.
This is a regression introduced in 2.6.21.

Submitted-by: Aji_Srinivas@emc.com
Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_if.c

index 6845a258408ff9a08cfd57b166464a1f2cd402b4..f3a2e29be40c30b173f447bc5ee412cf28c2dcc4 100644 (file)
@@ -428,6 +428,10 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
        spin_lock_bh(&br->lock);
        br_stp_recalculate_bridge_id(br);
        br_features_recompute(br);
+
+       if ((dev->flags & IFF_UP) && netif_carrier_ok(dev) &&
+           (br->dev->flags & IFF_UP))
+               br_stp_enable_port(p);
        spin_unlock_bh(&br->lock);
 
        dev_set_mtu(br->dev, br_min_mtu(br));