From f4637b55ba960d9987a836617271659e9b7b0de8 Mon Sep 17 00:00:00 2001 From: Tommy Christensen Date: Tue, 12 Jul 2005 12:13:49 -0700 Subject: [PATCH] [VLAN]: Fix early vlan adding leads to not functional device OK, I can see what's happening here. eth0 doesn't detect link-up until after a few seconds, so when the vlan interface is opened immediately after eth0 has been opened, it inherits the link-down state. Subsequently the vlan interface is never properly activated and are thus unable to transmit any packets. dev->state bits are not supposed to be manipulated directly. Something similar is probably needed for the netif_device_present() bit, although I don't know how this is meant to work for a virtual device. Signed-off-by: David S. Miller --- net/8021q/vlan.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index 1f6d31670bc7..91e412b0ab00 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c @@ -578,6 +578,14 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event, if (!vlandev) continue; + if (netif_carrier_ok(dev)) { + if (!netif_carrier_ok(vlandev)) + netif_carrier_on(vlandev); + } else { + if (netif_carrier_ok(vlandev)) + netif_carrier_off(vlandev); + } + if ((vlandev->state & VLAN_LINK_STATE_MASK) != flgs) { vlandev->state = (vlandev->state &~ VLAN_LINK_STATE_MASK) | flgs; -- 2.30.2