From patchwork Wed Jun 28 08:01:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Mike Galbraith X-Patchwork-Id: 781489 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wyFbl3W3Bz9s7g for ; Wed, 28 Jun 2017 18:01:07 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751509AbdF1IBF convert rfc822-to-8bit (ORCPT ); Wed, 28 Jun 2017 04:01:05 -0400 Received: from mout.gmx.net ([212.227.17.20]:59195 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750829AbdF1IBD (ORCPT ); Wed, 28 Jun 2017 04:01:03 -0400 Received: from homer.simpson.net ([185.191.217.38]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LcFTN-1e93d33oSj-00jXbO; Wed, 28 Jun 2017 10:01:01 +0200 Message-ID: <1498636860.5505.28.camel@gmx.de> Subject: kernel (master) build failure w. !CONFIG_NET_RX_BUSY_POLL From: Mike Galbraith To: netdev Cc: RT Date: Wed, 28 Jun 2017 10:01:00 +0200 X-Mailer: Evolution 3.20.5 Mime-Version: 1.0 X-Provags-ID: V03:K0:At9pfEEgoO9QjjUAcE2bxUrbqpYNhFljaXEcEsizodTDLnPhH38 xK3+mIP71pRU/d5jp8u9OMBC7HF6S8wyhFGjd8ObeDsTq1wOa/UUprjFDQ3g2tpDhrDyE2j /yzdhoQo3ELolxazj6X81TyPm0nAxSd3ECz+JvY+5kUnw+AowkYo434pXrlhmzu3X5s+deQ Mve0ll4kPDGukZiY4H36Q== X-UI-Out-Filterresults: notjunk:1; V01:K0:nbCIRIWf7c4=:XcBeseT9a2+pkc+vqapXkk 6AkUNYoZzZZIIF8ThJblpgvQE22BTgh2q8+UdKBBGvOjdeabK1JL6uf/mKa+vWvfyMTyCo/Oa oJMsxm2bphnxYnQ55VZcVy00mRT51RSK24B0r/wSMZ1bup8IBl9sZ6BYW9VMlmHWW++9pOSh7 eS3ybdvEalCSI+gObJCoKAMwSV2mYpcxLQXu64T2W6CyV0WyKBJLKOJWBaAd5mgN0AVCH2iAp nFFaQvZgTx8cN+wOJvHtd1Bv3nH2G+IPM+lIE4raofJUc6YnPam9pPNZITacSGokxQyOdd9Tj Lk/wlZLMC6qrRx7S0LxlatZLBURguHeRhFcgaHaVaVVGfxHWamg7ERNISI1nThs7a1ZUHHSiK qj4QjlMjOZhpi6jBatET/AJTAGLNuN9rwVWmBYRd9R01AJqBVmIoMiPLyiCm8/3AzGcJbso+L fLRnlXeE6iudBNy1QSqADR+WgwJWVpG+kVKum/nSduL3Iw1rNlPIIV+V/5G610CifLuEGj7Qj 5NfjRRaVyujYsAKSEPWuUkMuNSqdtBxeYILkZvAVeMvD4yUDH8gjQrE8XqsynFuai5FPzu7tL XHIctvCuaxGH4ViZN810M2GtfvTMOiYUYxbiOb6IRg4/PD7DevAJfRzDF9m7Abb5HfqAjsncA DARJHphaKPKOnwfTGXShkS0PRE2nH1nFCdSk90DUauO38CxUiSZ+eoSOQa1o1eUw98GD11BlD KdACIWXYDQ5Rlxbk7aLXJ9iFcsr1FZNOyeY6iX/MIA5oBsfiKGWl5HWykPGo6MIHh5/oehsik nl8XRBH Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Greetings network wizards, The latest RT explicitly disables CONFIG_NET_RX_BUSY_POLL, thus uncovering $subject.  Below is what I did about it. -Mike net: Move napi_hash_add/del() inside CONFIG_NET_RX_BUSY_POLL Since 545cd5e5ec54 ("net: Busy polling should ignore sender CPUs"), kernel build fails when CONFIG_NET_RX_BUSY_POLL is disabled. Move napi_hash_add/del() accordingly. Banged-upon-by: Mike Galbraith --- include/linux/netdevice.h | 8 ++++++++ net/core/dev.c | 12 ++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -479,6 +479,8 @@ static inline bool napi_complete(struct return napi_complete_done(n, 0); } +#ifdef CONFIG_NET_RX_BUSY_POLL + /** * napi_hash_del - remove a NAPI from global table * @napi: NAPI context @@ -493,6 +495,12 @@ static inline bool napi_complete(struct */ bool napi_hash_del(struct napi_struct *napi); +#else /* !CONFIG_NET_RX_BUSY_POLL */ + +static inline bool napi_hash_del(struct napi_struct *napi) { return false; } + +#endif /* CONFIG_NET_RX_BUSY_POLL */ + /** * napi_disable - prevent NAPI from scheduling * @n: NAPI context --- a/net/core/dev.c +++ b/net/core/dev.c @@ -184,11 +184,13 @@ static int call_netdevice_notifiers_info DEFINE_RWLOCK(dev_base_lock); EXPORT_SYMBOL(dev_base_lock); +#ifdef CONFIG_NET_RX_BUSY_POLL /* protects napi_hash addition/deletion and napi_gen_id */ static DEFINE_SPINLOCK(napi_hash_lock); static unsigned int napi_gen_id = NR_CPUS; static DEFINE_READ_MOSTLY_HASHTABLE(napi_hash, 8); +#endif static seqcount_t devnet_rename_seq; static DEFINE_MUTEX(devnet_rename_mutex); @@ -5185,6 +5187,8 @@ bool napi_complete_done(struct napi_stru } EXPORT_SYMBOL(napi_complete_done); +#if defined(CONFIG_NET_RX_BUSY_POLL) + /* must be called under rcu_read_lock(), as we dont take a reference */ static struct napi_struct *napi_by_id(unsigned int napi_id) { @@ -5198,8 +5202,6 @@ static struct napi_struct *napi_by_id(un return NULL; } -#if defined(CONFIG_NET_RX_BUSY_POLL) - #define BUSY_POLL_BUDGET 8 static void busy_poll_stop(struct napi_struct *napi, void *have_poll_lock) @@ -5300,8 +5302,6 @@ void napi_busy_loop(unsigned int napi_id } EXPORT_SYMBOL(napi_busy_loop); -#endif /* CONFIG_NET_RX_BUSY_POLL */ - static void napi_hash_add(struct napi_struct *napi) { if (test_bit(NAPI_STATE_NO_BUSY_POLL, &napi->state) || @@ -5341,6 +5341,8 @@ bool napi_hash_del(struct napi_struct *n } EXPORT_SYMBOL_GPL(napi_hash_del); +#endif /* CONFIG_NET_RX_BUSY_POLL */ + static enum hrtimer_restart napi_watchdog(struct hrtimer *timer) { struct napi_struct *napi; @@ -5377,7 +5379,9 @@ void netif_napi_add(struct net_device *d napi->poll_owner = -1; #endif set_bit(NAPI_STATE_SCHED, &napi->state); +#ifdef CONFIG_NET_RX_BUSY_POLL napi_hash_add(napi); +#endif } EXPORT_SYMBOL(netif_napi_add);