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:
		
					parent
					
						
							
								6c60408e33
							
						
					
				
			
			
				commit
				
					
						afe12cc86b
					
				
			
		
					 2 changed files with 26 additions and 0 deletions
				
			
		|  | @ -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 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Michał Mirosław
				Michał Mirosław