|
@@ -184,27 +184,6 @@ void unregister_vlan_dev(struct net_device *dev, struct list_head *head)
|
|
|
dev_put(real_dev);
|
|
|
}
|
|
|
|
|
|
-static void vlan_transfer_operstate(const struct net_device *dev,
|
|
|
- struct net_device *vlandev)
|
|
|
-{
|
|
|
- /* Have to respect userspace enforced dormant state
|
|
|
- * of real device, also must allow supplicant running
|
|
|
- * on VLAN device
|
|
|
- */
|
|
|
- if (dev->operstate == IF_OPER_DORMANT)
|
|
|
- netif_dormant_on(vlandev);
|
|
|
- else
|
|
|
- netif_dormant_off(vlandev);
|
|
|
-
|
|
|
- if (netif_carrier_ok(dev)) {
|
|
|
- if (!netif_carrier_ok(vlandev))
|
|
|
- netif_carrier_on(vlandev);
|
|
|
- } else {
|
|
|
- if (netif_carrier_ok(vlandev))
|
|
|
- netif_carrier_off(vlandev);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
int vlan_check_real_dev(struct net_device *real_dev, u16 vlan_id)
|
|
|
{
|
|
|
const char *name = real_dev->name;
|
|
@@ -262,7 +241,7 @@ int register_vlan_dev(struct net_device *dev)
|
|
|
/* Account for reference in struct vlan_dev_info */
|
|
|
dev_hold(real_dev);
|
|
|
|
|
|
- vlan_transfer_operstate(real_dev, dev);
|
|
|
+ netif_stacked_transfer_operstate(real_dev, dev);
|
|
|
linkwatch_fire_event(dev); /* _MUST_ call rfc2863_policy() */
|
|
|
|
|
|
/* So, got the sucker initialized, now lets place
|
|
@@ -453,7 +432,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
|
|
|
if (!vlandev)
|
|
|
continue;
|
|
|
|
|
|
- vlan_transfer_operstate(dev, vlandev);
|
|
|
+ netif_stacked_transfer_operstate(dev, vlandev);
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -511,7 +490,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
|
|
|
vlan = vlan_dev_info(vlandev);
|
|
|
if (!(vlan->flags & VLAN_FLAG_LOOSE_BINDING))
|
|
|
dev_change_flags(vlandev, flgs & ~IFF_UP);
|
|
|
- vlan_transfer_operstate(dev, vlandev);
|
|
|
+ netif_stacked_transfer_operstate(dev, vlandev);
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -529,7 +508,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
|
|
|
vlan = vlan_dev_info(vlandev);
|
|
|
if (!(vlan->flags & VLAN_FLAG_LOOSE_BINDING))
|
|
|
dev_change_flags(vlandev, flgs | IFF_UP);
|
|
|
- vlan_transfer_operstate(dev, vlandev);
|
|
|
+ netif_stacked_transfer_operstate(dev, vlandev);
|
|
|
}
|
|
|
break;
|
|
|
|