From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Dumazet Subject: [PATCH net 01/11] netpoll: do not test NAPI_STATE_SCHED in poll_one_napi() Date: Thu, 27 Sep 2018 09:31:51 -0700 Message-ID: <20180927163201.56609-2-edumazet@google.com> References: <20180927163201.56609-1-edumazet@google.com> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Cc: netdev , Eric Dumazet , Michael Chan , Aviad Krawczyk , Song Liu , Douglas Miller , Yisen Zhuang , "Michael S . Tsirkin" , Jason Wang , Harish Patil , Manish Chopra , Netanel Belgazal , Solarflare linux maintainers , Thomas Falcon To: "David S . Miller" Return-path: Received: from mail-pf1-f196.google.com ([209.85.210.196]:38466 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728178AbeI0WvL (ORCPT ); Thu, 27 Sep 2018 18:51:11 -0400 Received: by mail-pf1-f196.google.com with SMTP id x17-v6so2289030pfh.5 for ; Thu, 27 Sep 2018 09:32:06 -0700 (PDT) In-Reply-To: <20180927163201.56609-1-edumazet@google.com> Sender: netdev-owner@vger.kernel.org List-ID: Since we do no longer require NAPI drivers to provide an ndo_poll_controller(), napi_schedule() has not been done before poll_one_napi() invocation. So testing NAPI_STATE_SCHED is likely to cause early returns. While we are at it, remove outdated comment. Note to future bisections : This change might surface prior bugs in drivers. See commit 73f21c653f93 ("bnxt_en: Fix TX timeout during netpoll.") for one occurrence. Fixes: ac3d9dd034e5 ("netpoll: make ndo_poll_controller() optional") Signed-off-by: Eric Dumazet Tested-by: Song Liu Cc: Michael Chan --- net/core/netpoll.c | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 3219a2932463096566ce8ff336ecdf699422dd65..3ae899805f8b674b4ffb7d791330f836d38eff7d 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -135,27 +135,9 @@ static void queue_process(struct work_struct *work) } } -/* - * Check whether delayed processing was scheduled for our NIC. If so, - * we attempt to grab the poll lock and use ->poll() to pump the card. - * If this fails, either we've recursed in ->poll() or it's already - * running on another CPU. - * - * Note: we don't mask interrupts with this lock because we're using - * trylock here and interrupts are already disabled in the softirq - * case. Further, we test the poll_owner to avoid recursion on UP - * systems where the lock doesn't exist. - */ static void poll_one_napi(struct napi_struct *napi) { - int work = 0; - - /* net_rx_action's ->poll() invocations and our's are - * synchronized by this test which is only made while - * holding the napi->poll_lock. - */ - if (!test_bit(NAPI_STATE_SCHED, &napi->state)) - return; + int work; /* If we set this bit but see that it has already been set, * that indicates that napi has been disabled and we need -- 2.19.0.605.g01d371f741-goog