diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 26 | 
1 files changed, 19 insertions, 7 deletions
| diff --git a/net/core/dev.c b/net/core/dev.c index 4ce07dc25573..ea6312057a71 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3975,6 +3975,22 @@ sch_handle_ingress(struct sk_buff *skb, struct packet_type **pt_prev, int *ret,  }  /** + *	netdev_is_rx_handler_busy - check if receive handler is registered + *	@dev: device to check + * + *	Check if a receive handler is already registered for a given device. + *	Return true if there one. + * + *	The caller must hold the rtnl_mutex. + */ +bool netdev_is_rx_handler_busy(struct net_device *dev) +{ +	ASSERT_RTNL(); +	return dev && rtnl_dereference(dev->rx_handler); +} +EXPORT_SYMBOL_GPL(netdev_is_rx_handler_busy); + +/**   *	netdev_rx_handler_register - register receive handler   *	@dev: device to register a handler for   *	@rx_handler: receive handler to register @@ -6045,8 +6061,7 @@ void *netdev_lower_dev_get_private(struct net_device *dev,  EXPORT_SYMBOL(netdev_lower_dev_get_private); -int dev_get_nest_level(struct net_device *dev, -		       bool (*type_check)(const struct net_device *dev)) +int dev_get_nest_level(struct net_device *dev)  {  	struct net_device *lower = NULL;  	struct list_head *iter; @@ -6056,15 +6071,12 @@ int dev_get_nest_level(struct net_device *dev,  	ASSERT_RTNL();  	netdev_for_each_lower_dev(dev, lower, iter) { -		nest = dev_get_nest_level(lower, type_check); +		nest = dev_get_nest_level(lower);  		if (max_nest < nest)  			max_nest = nest;  	} -	if (type_check(dev)) -		max_nest++; - -	return max_nest; +	return max_nest + 1;  }  EXPORT_SYMBOL(dev_get_nest_level); |