mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	net: remove support for per driver ndo_busy_poll()
We added generic support for busy polling in NAPI layer in linux-4.5 No network driver uses ndo_busy_poll() anymore, we can get rid of the pointer in struct net_device_ops, and its use in sk_busy_loop() Saves NETIF_F_BUSY_POLL features bit. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									7a655c6324
								
							
						
					
					
						commit
						79e7fff47b
					
				
					 4 changed files with 0 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -71,7 +71,6 @@ enum {
 | 
			
		|||
	NETIF_F_HW_VLAN_STAG_RX_BIT,	/* Receive VLAN STAG HW acceleration */
 | 
			
		||||
	NETIF_F_HW_VLAN_STAG_FILTER_BIT,/* Receive filtering on VLAN STAGs */
 | 
			
		||||
	NETIF_F_HW_L2FW_DOFFLOAD_BIT,	/* Allow L2 Forwarding in Hardware */
 | 
			
		||||
	NETIF_F_BUSY_POLL_BIT,		/* Busy poll */
 | 
			
		||||
 | 
			
		||||
	NETIF_F_HW_TC_BIT,		/* Offload TC infrastructure */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -134,7 +133,6 @@ enum {
 | 
			
		|||
#define NETIF_F_HW_VLAN_STAG_RX	__NETIF_F(HW_VLAN_STAG_RX)
 | 
			
		||||
#define NETIF_F_HW_VLAN_STAG_TX	__NETIF_F(HW_VLAN_STAG_TX)
 | 
			
		||||
#define NETIF_F_HW_L2FW_DOFFLOAD	__NETIF_F(HW_L2FW_DOFFLOAD)
 | 
			
		||||
#define NETIF_F_BUSY_POLL	__NETIF_F(BUSY_POLL)
 | 
			
		||||
#define NETIF_F_HW_TC		__NETIF_F(HW_TC)
 | 
			
		||||
 | 
			
		||||
#define for_each_netdev_feature(mask_addr, bit)	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1184,9 +1184,6 @@ struct net_device_ops {
 | 
			
		|||
	int			(*ndo_netpoll_setup)(struct net_device *dev,
 | 
			
		||||
						     struct netpoll_info *info);
 | 
			
		||||
	void			(*ndo_netpoll_cleanup)(struct net_device *dev);
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_NET_RX_BUSY_POLL
 | 
			
		||||
	int			(*ndo_busy_poll)(struct napi_struct *dev);
 | 
			
		||||
#endif
 | 
			
		||||
	int			(*ndo_set_vf_mac)(struct net_device *dev,
 | 
			
		||||
						  int queue, u8 *mac);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4978,7 +4978,6 @@ bool sk_busy_loop(struct sock *sk, int nonblock)
 | 
			
		|||
{
 | 
			
		||||
	unsigned long end_time = !nonblock ? sk_busy_loop_end_time(sk) : 0;
 | 
			
		||||
	int (*napi_poll)(struct napi_struct *napi, int budget);
 | 
			
		||||
	int (*busy_poll)(struct napi_struct *dev);
 | 
			
		||||
	void *have_poll_lock = NULL;
 | 
			
		||||
	struct napi_struct *napi;
 | 
			
		||||
	int rc;
 | 
			
		||||
| 
						 | 
				
			
			@ -4993,17 +4992,10 @@ bool sk_busy_loop(struct sock *sk, int nonblock)
 | 
			
		|||
	if (!napi)
 | 
			
		||||
		goto out;
 | 
			
		||||
 | 
			
		||||
	/* Note: ndo_busy_poll method is optional in linux-4.5 */
 | 
			
		||||
	busy_poll = napi->dev->netdev_ops->ndo_busy_poll;
 | 
			
		||||
 | 
			
		||||
	preempt_disable();
 | 
			
		||||
	for (;;) {
 | 
			
		||||
		rc = 0;
 | 
			
		||||
		local_bh_disable();
 | 
			
		||||
		if (busy_poll) {
 | 
			
		||||
			rc = busy_poll(napi);
 | 
			
		||||
			goto count;
 | 
			
		||||
		}
 | 
			
		||||
		if (!napi_poll) {
 | 
			
		||||
			unsigned long val = READ_ONCE(napi->state);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -6956,13 +6948,6 @@ static netdev_features_t netdev_fix_features(struct net_device *dev,
 | 
			
		|||
		features &= ~dev->gso_partial_features;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_NET_RX_BUSY_POLL
 | 
			
		||||
	if (dev->netdev_ops->ndo_busy_poll)
 | 
			
		||||
		features |= NETIF_F_BUSY_POLL;
 | 
			
		||||
	else
 | 
			
		||||
#endif
 | 
			
		||||
		features &= ~NETIF_F_BUSY_POLL;
 | 
			
		||||
 | 
			
		||||
	return features;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -102,7 +102,6 @@ static const char netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN]
 | 
			
		|||
	[NETIF_F_RXFCS_BIT] =            "rx-fcs",
 | 
			
		||||
	[NETIF_F_RXALL_BIT] =            "rx-all",
 | 
			
		||||
	[NETIF_F_HW_L2FW_DOFFLOAD_BIT] = "l2-fwd-offload",
 | 
			
		||||
	[NETIF_F_BUSY_POLL_BIT] =        "busy-poll",
 | 
			
		||||
	[NETIF_F_HW_TC_BIT] =		 "hw-tc-offload",
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue