Message ID | 1486089808.21871.59.camel@edumazet-glaptop3.roam.corp.google.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Hi Eric, [auto build test ERROR on net-next/master] url: https://github.com/0day-ci/linux/commits/Eric-Dumazet/net-remove-support-for-per-driver-ndo_busy_poll/20170203-104846 config: x86_64-rhel (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): >> drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:3982:2: error: unknown field 'ndo_busy_poll' specified in initializer .ndo_busy_poll = ixgbevf_busy_poll_recv, ^ >> drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:3982:20: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types] .ndo_busy_poll = ixgbevf_busy_poll_recv, ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c:3982:20: note: (near initialization for 'ixgbevf_netdev_ops.ndo_poll_controller') cc1: some warnings being treated as errors -- >> drivers/net/ethernet/sfc/efx.c:2406:2: error: unknown field 'ndo_busy_poll' specified in initializer .ndo_busy_poll = efx_busy_poll, ^ >> drivers/net/ethernet/sfc/efx.c:2406:20: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types] .ndo_busy_poll = efx_busy_poll, ^~~~~~~~~~~~~ drivers/net/ethernet/sfc/efx.c:2406:20: note: (near initialization for 'efx_netdev_ops.ndo_fcoe_enable') cc1: some warnings being treated as errors vim +/ndo_busy_poll +3982 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c c12db769 drivers/net/ixgbevf/ixgbevf_main.c Stephen Hemminger 2011-06-09 3976 .ndo_set_mac_address = ixgbevf_set_mac, c12db769 drivers/net/ixgbevf/ixgbevf_main.c Stephen Hemminger 2011-06-09 3977 .ndo_change_mtu = ixgbevf_change_mtu, c12db769 drivers/net/ixgbevf/ixgbevf_main.c Stephen Hemminger 2011-06-09 3978 .ndo_tx_timeout = ixgbevf_tx_timeout, c12db769 drivers/net/ixgbevf/ixgbevf_main.c Stephen Hemminger 2011-06-09 3979 .ndo_vlan_rx_add_vid = ixgbevf_vlan_rx_add_vid, c12db769 drivers/net/ixgbevf/ixgbevf_main.c Stephen Hemminger 2011-06-09 3980 .ndo_vlan_rx_kill_vid = ixgbevf_vlan_rx_kill_vid, c777cdfa drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c Jacob Keller 2013-09-21 3981 #ifdef CONFIG_NET_RX_BUSY_POLL c777cdfa drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c Jacob Keller 2013-09-21 @3982 .ndo_busy_poll = ixgbevf_busy_poll_recv, c777cdfa drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c Jacob Keller 2013-09-21 3983 #endif 688ff32d drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c Emil Tantilov 2014-11-08 3984 #ifdef CONFIG_NET_POLL_CONTROLLER 688ff32d drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c Emil Tantilov 2014-11-08 3985 .ndo_poll_controller = ixgbevf_netpoll, :::::: The code at line 3982 was first introduced by commit :::::: c777cdfa4e69548f45078165d17828dd6711120f ixgbevf: implement CONFIG_NET_RX_BUSY_POLL :::::: TO: Jacob Keller <jacob.e.keller@intel.com> :::::: CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Thu, 02 Feb 2017 18:43:28 -0800 > From: Eric Dumazet <edumazet@google.com> > > 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> Applied.
On Fri, 2017-02-03 at 17:18 -0500, David Miller wrote: > From: Eric Dumazet <eric.dumazet@gmail.com> > Date: Thu, 02 Feb 2017 18:43:28 -0800 > > > From: Eric Dumazet <edumazet@google.com> > > > > 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> > > Applied. Nice ! Thanks !
diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h index 9c6c8ef2e9e704513cc4272b0a3ee2fec6809d46..9a0419594e842ca00a5ecfca53823b38bad207bb 100644 --- a/include/linux/netdev_features.h +++ b/include/linux/netdev_features.h @@ -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) \ diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index f3878fbe7786854c2028055cf6d0a52a20762d6e..6f18b509fb2f473029561d85646713c149df49ac 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1185,9 +1185,6 @@ struct net_device_ops { 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); int (*ndo_set_vf_vlan)(struct net_device *dev, diff --git a/net/core/dev.c b/net/core/dev.c index 727b6fda0e8c6497ee42dc6d3065e326e9192c21..4cde8bfb9bab449b83890192a7e28a423b319e23 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -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; } diff --git a/net/core/ethtool.c b/net/core/ethtool.c index 6b3eee0834a0663d3c48ae42a34e3bdd032fa5f9..d5f412b3093d4b3ccef40d4808bedf353f483594 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] [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", };