Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79e7fff4 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

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: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7a655c63
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -71,7 +71,6 @@ enum {
	NETIF_F_HW_VLAN_STAG_RX_BIT,	/* Receive VLAN STAG HW acceleration */
	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_VLAN_STAG_FILTER_BIT,/* Receive filtering on VLAN STAGs */
	NETIF_F_HW_L2FW_DOFFLOAD_BIT,	/* Allow L2 Forwarding in Hardware */
	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 */
	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_RX	__NETIF_F(HW_VLAN_STAG_RX)
#define NETIF_F_HW_VLAN_STAG_TX	__NETIF_F(HW_VLAN_STAG_TX)
#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_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 NETIF_F_HW_TC		__NETIF_F(HW_TC)


#define for_each_netdev_feature(mask_addr, bit)	\
#define for_each_netdev_feature(mask_addr, bit)	\
+0 −3
Original line number Original line Diff line number Diff line
@@ -1184,9 +1184,6 @@ struct net_device_ops {
	int			(*ndo_netpoll_setup)(struct net_device *dev,
	int			(*ndo_netpoll_setup)(struct net_device *dev,
						     struct netpoll_info *info);
						     struct netpoll_info *info);
	void			(*ndo_netpoll_cleanup)(struct net_device *dev);
	void			(*ndo_netpoll_cleanup)(struct net_device *dev);
#endif
#ifdef CONFIG_NET_RX_BUSY_POLL
	int			(*ndo_busy_poll)(struct napi_struct *dev);
#endif
#endif
	int			(*ndo_set_vf_mac)(struct net_device *dev,
	int			(*ndo_set_vf_mac)(struct net_device *dev,
						  int queue, u8 *mac);
						  int queue, u8 *mac);
+0 −15
Original line number Original line Diff line number Diff line
@@ -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;
	unsigned long end_time = !nonblock ? sk_busy_loop_end_time(sk) : 0;
	int (*napi_poll)(struct napi_struct *napi, int budget);
	int (*napi_poll)(struct napi_struct *napi, int budget);
	int (*busy_poll)(struct napi_struct *dev);
	void *have_poll_lock = NULL;
	void *have_poll_lock = NULL;
	struct napi_struct *napi;
	struct napi_struct *napi;
	int rc;
	int rc;
@@ -4993,17 +4992,10 @@ bool sk_busy_loop(struct sock *sk, int nonblock)
	if (!napi)
	if (!napi)
		goto out;
		goto out;


	/* Note: ndo_busy_poll method is optional in linux-4.5 */
	busy_poll = napi->dev->netdev_ops->ndo_busy_poll;

	preempt_disable();
	preempt_disable();
	for (;;) {
	for (;;) {
		rc = 0;
		rc = 0;
		local_bh_disable();
		local_bh_disable();
		if (busy_poll) {
			rc = busy_poll(napi);
			goto count;
		}
		if (!napi_poll) {
		if (!napi_poll) {
			unsigned long val = READ_ONCE(napi->state);
			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;
		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;
	return features;
}
}


+0 −1
Original line number Original line Diff line number Diff line
@@ -102,7 +102,6 @@ static const char netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN]
	[NETIF_F_RXFCS_BIT] =            "rx-fcs",
	[NETIF_F_RXFCS_BIT] =            "rx-fcs",
	[NETIF_F_RXALL_BIT] =            "rx-all",
	[NETIF_F_RXALL_BIT] =            "rx-all",
	[NETIF_F_HW_L2FW_DOFFLOAD_BIT] = "l2-fwd-offload",
	[NETIF_F_HW_L2FW_DOFFLOAD_BIT] = "l2-fwd-offload",
	[NETIF_F_BUSY_POLL_BIT] =        "busy-poll",
	[NETIF_F_HW_TC_BIT] =		 "hw-tc-offload",
	[NETIF_F_HW_TC_BIT] =		 "hw-tc-offload",
};
};