提交 afe12cc8 编写于 作者: M Michał Mirosław 提交者: David S. Miller

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: NMichał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 6c60408e
...@@ -2565,6 +2565,7 @@ u32 netdev_increment_features(u32 all, u32 one, u32 mask); ...@@ -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) ...@@ -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) ...@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册