aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2017-02-02 21:43:28 -0500
committerDavid S. Miller <davem@davemloft.net>2017-02-03 17:28:29 -0500
commit79e7fff47b7bb4124ef970a13eac4fdeddd1fc25 (patch)
tree484a1b06f220a2e6566ddbaba553eaa831eca1ba /net/core/dev.c
parent7a655c6324a8968ea2f027bf3660c87c42ac3de4 (diff)
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>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c15
1 files changed, 0 insertions, 15 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 727b6fda0e8c..4cde8bfb9bab 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4978,7 +4978,6 @@ bool sk_busy_loop(struct sock *sk, int nonblock)
4978{ 4978{
4979 unsigned long end_time = !nonblock ? sk_busy_loop_end_time(sk) : 0; 4979 unsigned long end_time = !nonblock ? sk_busy_loop_end_time(sk) : 0;
4980 int (*napi_poll)(struct napi_struct *napi, int budget); 4980 int (*napi_poll)(struct napi_struct *napi, int budget);
4981 int (*busy_poll)(struct napi_struct *dev);
4982 void *have_poll_lock = NULL; 4981 void *have_poll_lock = NULL;
4983 struct napi_struct *napi; 4982 struct napi_struct *napi;
4984 int rc; 4983 int rc;
@@ -4993,17 +4992,10 @@ restart:
4993 if (!napi) 4992 if (!napi)
4994 goto out; 4993 goto out;
4995 4994
4996 /* Note: ndo_busy_poll method is optional in linux-4.5 */
4997 busy_poll = napi->dev->netdev_ops->ndo_busy_poll;
4998
4999 preempt_disable(); 4995 preempt_disable();
5000 for (;;) { 4996 for (;;) {
5001 rc = 0; 4997 rc = 0;
5002 local_bh_disable(); 4998 local_bh_disable();
5003 if (busy_poll) {
5004 rc = busy_poll(napi);
5005 goto count;
5006 }
5007 if (!napi_poll) { 4999 if (!napi_poll) {
5008 unsigned long val = READ_ONCE(napi->state); 5000 unsigned long val = READ_ONCE(napi->state);
5009 5001
@@ -6956,13 +6948,6 @@ static netdev_features_t netdev_fix_features(struct net_device *dev,
6956 features &= ~dev->gso_partial_features; 6948 features &= ~dev->gso_partial_features;
6957 } 6949 }
6958 6950
6959#ifdef CONFIG_NET_RX_BUSY_POLL
6960 if (dev->netdev_ops->ndo_busy_poll)
6961 features |= NETIF_F_BUSY_POLL;
6962 else
6963#endif
6964 features &= ~NETIF_F_BUSY_POLL;
6965
6966 return features; 6951 return features;
6967} 6952}
6968 6953