net: introduce netdev_change_features()
It will be needed by bonding and other drivers changing vlan_features after ndo_init callback. As a bonus, this includes kernel-doc for netdev_update_features(). Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
6c60408e33
commit
afe12cc86b
@@ -2565,6 +2565,7 @@ u32 netdev_increment_features(u32 all, u32 one, u32 mask);
|
|||||||
u32 netdev_fix_features(struct net_device *dev, u32 features);
|
u32 netdev_fix_features(struct net_device *dev, u32 features);
|
||||||
int __netdev_update_features(struct net_device *dev);
|
int __netdev_update_features(struct net_device *dev);
|
||||||
void netdev_update_features(struct net_device *dev);
|
void netdev_update_features(struct net_device *dev);
|
||||||
|
void netdev_change_features(struct net_device *dev);
|
||||||
|
|
||||||
void netif_stacked_transfer_operstate(const struct net_device *rootdev,
|
void netif_stacked_transfer_operstate(const struct net_device *rootdev,
|
||||||
struct net_device *dev);
|
struct net_device *dev);
|
||||||
|
@@ -5289,6 +5289,14 @@ int __netdev_update_features(struct net_device *dev)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* netdev_update_features - recalculate device features
|
||||||
|
* @dev: the device to check
|
||||||
|
*
|
||||||
|
* Recalculate dev->features set and send notifications if it
|
||||||
|
* has changed. Should be called after driver or hardware dependent
|
||||||
|
* conditions might have changed that influence the features.
|
||||||
|
*/
|
||||||
void netdev_update_features(struct net_device *dev)
|
void netdev_update_features(struct net_device *dev)
|
||||||
{
|
{
|
||||||
if (__netdev_update_features(dev))
|
if (__netdev_update_features(dev))
|
||||||
@@ -5296,6 +5304,23 @@ void netdev_update_features(struct net_device *dev)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(netdev_update_features);
|
EXPORT_SYMBOL(netdev_update_features);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* netdev_change_features - recalculate device features
|
||||||
|
* @dev: the device to check
|
||||||
|
*
|
||||||
|
* Recalculate dev->features set and send notifications even
|
||||||
|
* if they have not changed. Should be called instead of
|
||||||
|
* netdev_update_features() if also dev->vlan_features might
|
||||||
|
* have changed to allow the changes to be propagated to stacked
|
||||||
|
* VLAN devices.
|
||||||
|
*/
|
||||||
|
void netdev_change_features(struct net_device *dev)
|
||||||
|
{
|
||||||
|
__netdev_update_features(dev);
|
||||||
|
netdev_features_change(dev);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(netdev_change_features);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* netif_stacked_transfer_operstate - transfer operstate
|
* netif_stacked_transfer_operstate - transfer operstate
|
||||||
* @rootdev: the root or lower level device to transfer state from
|
* @rootdev: the root or lower level device to transfer state from
|
||||||
|
Reference in New Issue
Block a user