|
@@ -462,6 +462,7 @@ static int vlan_dev_open(struct net_device *dev)
|
|
if (vlan->flags & VLAN_FLAG_GVRP)
|
|
if (vlan->flags & VLAN_FLAG_GVRP)
|
|
vlan_gvrp_request_join(dev);
|
|
vlan_gvrp_request_join(dev);
|
|
|
|
|
|
|
|
+ netif_carrier_on(dev);
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
clear_allmulti:
|
|
clear_allmulti:
|
|
@@ -471,6 +472,7 @@ del_unicast:
|
|
if (compare_ether_addr(dev->dev_addr, real_dev->dev_addr))
|
|
if (compare_ether_addr(dev->dev_addr, real_dev->dev_addr))
|
|
dev_unicast_delete(real_dev, dev->dev_addr, ETH_ALEN);
|
|
dev_unicast_delete(real_dev, dev->dev_addr, ETH_ALEN);
|
|
out:
|
|
out:
|
|
|
|
+ netif_carrier_off(dev);
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -492,6 +494,7 @@ static int vlan_dev_stop(struct net_device *dev)
|
|
if (compare_ether_addr(dev->dev_addr, real_dev->dev_addr))
|
|
if (compare_ether_addr(dev->dev_addr, real_dev->dev_addr))
|
|
dev_unicast_delete(real_dev, dev->dev_addr, dev->addr_len);
|
|
dev_unicast_delete(real_dev, dev->dev_addr, dev->addr_len);
|
|
|
|
|
|
|
|
+ netif_carrier_off(dev);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -612,6 +615,8 @@ static int vlan_dev_init(struct net_device *dev)
|
|
struct net_device *real_dev = vlan_dev_info(dev)->real_dev;
|
|
struct net_device *real_dev = vlan_dev_info(dev)->real_dev;
|
|
int subclass = 0;
|
|
int subclass = 0;
|
|
|
|
|
|
|
|
+ netif_carrier_off(dev);
|
|
|
|
+
|
|
/* IFF_BROADCAST|IFF_MULTICAST; ??? */
|
|
/* IFF_BROADCAST|IFF_MULTICAST; ??? */
|
|
dev->flags = real_dev->flags & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI);
|
|
dev->flags = real_dev->flags & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI);
|
|
dev->iflink = real_dev->ifindex;
|
|
dev->iflink = real_dev->ifindex;
|