netdevice: provide common routine for macvlan and vlan operstate management
Provide common routine for the transition of operational state for a leaf device during a root device transition. Signed-off-by: Patrick Mullaney <pmullaney@novell.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
012093f6d5
commit
fc4a748966
@@ -4900,6 +4900,33 @@ unsigned long netdev_fix_features(unsigned long features, const char *name)
|
||||
}
|
||||
EXPORT_SYMBOL(netdev_fix_features);
|
||||
|
||||
/**
|
||||
* netif_stacked_transfer_operstate - transfer operstate
|
||||
* @rootdev: the root or lower level device to transfer state from
|
||||
* @dev: the device to transfer operstate to
|
||||
*
|
||||
* Transfer operational state from root to device. This is normally
|
||||
* called when a stacking relationship exists between the root
|
||||
* device and the device(a leaf device).
|
||||
*/
|
||||
void netif_stacked_transfer_operstate(const struct net_device *rootdev,
|
||||
struct net_device *dev)
|
||||
{
|
||||
if (rootdev->operstate == IF_OPER_DORMANT)
|
||||
netif_dormant_on(dev);
|
||||
else
|
||||
netif_dormant_off(dev);
|
||||
|
||||
if (netif_carrier_ok(rootdev)) {
|
||||
if (!netif_carrier_ok(dev))
|
||||
netif_carrier_on(dev);
|
||||
} else {
|
||||
if (netif_carrier_ok(dev))
|
||||
netif_carrier_off(dev);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(netif_stacked_transfer_operstate);
|
||||
|
||||
/**
|
||||
* register_netdevice - register a network device
|
||||
* @dev: device to register
|
||||
|
Reference in New Issue
Block a user