aboutsummaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--include/linux/netdev_features.h2
-rw-r--r--include/linux/netdevice.h3
-rw-r--r--net/core/dev.c15
-rw-r--r--net/core/ethtool.c1
4 files changed, 0 insertions, 21 deletions
diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
index 9c6c8ef2e9e7..9a0419594e84 100644
--- a/include/linux/netdev_features.h
+++ b/include/linux/netdev_features.h
@@ -71,7 +71,6 @@ enum {
71 NETIF_F_HW_VLAN_STAG_RX_BIT, /* Receive VLAN STAG HW acceleration */ 71 NETIF_F_HW_VLAN_STAG_RX_BIT, /* Receive VLAN STAG HW acceleration */
72 NETIF_F_HW_VLAN_STAG_FILTER_BIT,/* Receive filtering on VLAN STAGs */ 72 NETIF_F_HW_VLAN_STAG_FILTER_BIT,/* Receive filtering on VLAN STAGs */
73 NETIF_F_HW_L2FW_DOFFLOAD_BIT, /* Allow L2 Forwarding in Hardware */ 73 NETIF_F_HW_L2FW_DOFFLOAD_BIT, /* Allow L2 Forwarding in Hardware */
74 NETIF_F_BUSY_POLL_BIT, /* Busy poll */
75 74
76 NETIF_F_HW_TC_BIT, /* Offload TC infrastructure */ 75 NETIF_F_HW_TC_BIT, /* Offload TC infrastructure */
77 76
@@ -134,7 +133,6 @@ enum {
134#define NETIF_F_HW_VLAN_STAG_RX __NETIF_F(HW_VLAN_STAG_RX) 133#define NETIF_F_HW_VLAN_STAG_RX __NETIF_F(HW_VLAN_STAG_RX)
135#define NETIF_F_HW_VLAN_STAG_TX __NETIF_F(HW_VLAN_STAG_TX) 134#define NETIF_F_HW_VLAN_STAG_TX __NETIF_F(HW_VLAN_STAG_TX)
136#define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD) 135#define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD)
137#define NETIF_F_BUSY_POLL __NETIF_F(BUSY_POLL)
138#define NETIF_F_HW_TC __NETIF_F(HW_TC) 136#define NETIF_F_HW_TC __NETIF_F(HW_TC)
139 137
140#define for_each_netdev_feature(mask_addr, bit) \ 138#define for_each_netdev_feature(mask_addr, bit) \
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index f3878fbe7786..6f18b509fb2f 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1185,9 +1185,6 @@ struct net_device_ops {
1185 struct netpoll_info *info); 1185 struct netpoll_info *info);
1186 void (*ndo_netpoll_cleanup)(struct net_device *dev); 1186 void (*ndo_netpoll_cleanup)(struct net_device *dev);
1187#endif 1187#endif
1188#ifdef CONFIG_NET_RX_BUSY_POLL
1189 int (*ndo_busy_poll)(struct napi_struct *dev);
1190#endif
1191 int (*ndo_set_vf_mac)(struct net_device *dev, 1188 int (*ndo_set_vf_mac)(struct net_device *dev,
1192 int queue, u8 *mac); 1189 int queue, u8 *mac);
1193 int (*ndo_set_vf_vlan)(struct net_device *dev, 1190 int (*ndo_set_vf_vlan)(struct net_device *dev,
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
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 6b3eee0834a0..d5f412b3093d 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -102,7 +102,6 @@ static const char netdev_features_strings[NETDEV_FEATURE_COUNT][ETH_GSTRING_LEN]
102 [NETIF_F_RXFCS_BIT] = "rx-fcs", 102 [NETIF_F_RXFCS_BIT] = "rx-fcs",
103 [NETIF_F_RXALL_BIT] = "rx-all", 103 [NETIF_F_RXALL_BIT] = "rx-all",
104 [NETIF_F_HW_L2FW_DOFFLOAD_BIT] = "l2-fwd-offload", 104 [NETIF_F_HW_L2FW_DOFFLOAD_BIT] = "l2-fwd-offload",
105 [NETIF_F_BUSY_POLL_BIT] = "busy-poll",
106 [NETIF_F_HW_TC_BIT] = "hw-tc-offload", 105 [NETIF_F_HW_TC_BIT] = "hw-tc-offload",
107}; 106};
108 107