diff options
Diffstat (limited to 'net/switchdev')
| -rw-r--r-- | net/switchdev/switchdev.c | 30 | 
1 files changed, 6 insertions, 24 deletions
diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c index 8d40a7d31c99..25dc67ef9d37 100644 --- a/net/switchdev/switchdev.c +++ b/net/switchdev/switchdev.c @@ -571,24 +571,17 @@ int switchdev_port_obj_dump(struct net_device *dev, struct switchdev_obj *obj,  }  EXPORT_SYMBOL_GPL(switchdev_port_obj_dump); -static RAW_NOTIFIER_HEAD(switchdev_notif_chain); +static ATOMIC_NOTIFIER_HEAD(switchdev_notif_chain);  /**   *	register_switchdev_notifier - Register notifier   *	@nb: notifier_block   * - *	Register switch device notifier. This should be used by code - *	which needs to monitor events happening in particular device. - *	Return values are same as for atomic_notifier_chain_register(). + *	Register switch device notifier.   */  int register_switchdev_notifier(struct notifier_block *nb)  { -	int err; - -	rtnl_lock(); -	err = raw_notifier_chain_register(&switchdev_notif_chain, nb); -	rtnl_unlock(); -	return err; +	return atomic_notifier_chain_register(&switchdev_notif_chain, nb);  }  EXPORT_SYMBOL_GPL(register_switchdev_notifier); @@ -597,16 +590,10 @@ EXPORT_SYMBOL_GPL(register_switchdev_notifier);   *	@nb: notifier_block   *   *	Unregister switch device notifier. - *	Return values are same as for atomic_notifier_chain_unregister().   */  int unregister_switchdev_notifier(struct notifier_block *nb)  { -	int err; - -	rtnl_lock(); -	err = raw_notifier_chain_unregister(&switchdev_notif_chain, nb); -	rtnl_unlock(); -	return err; +	return atomic_notifier_chain_unregister(&switchdev_notif_chain, nb);  }  EXPORT_SYMBOL_GPL(unregister_switchdev_notifier); @@ -616,18 +603,13 @@ EXPORT_SYMBOL_GPL(unregister_switchdev_notifier);   *	@dev: port device   *	@info: notifier information data   * - *	Call all network notifier blocks. This should be called by driver - *	when it needs to propagate hardware event. - *	Return values are same as for atomic_notifier_call_chain(). - *	rtnl_lock must be held. + *	Call all network notifier blocks.   */  int call_switchdev_notifiers(unsigned long val, struct net_device *dev,  			     struct switchdev_notifier_info *info)  { -	ASSERT_RTNL(); -  	info->dev = dev; -	return raw_notifier_call_chain(&switchdev_notif_chain, val, info); +	return atomic_notifier_call_chain(&switchdev_notif_chain, val, info);  }  EXPORT_SYMBOL_GPL(call_switchdev_notifiers);  | 
