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
|
@ -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) \
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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 @@ restart:
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue