From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH v2 net] r8169: fix NAPI handling under high load Date: Thu, 18 Oct 2018 11:34:44 -0700 (PDT) Message-ID: <20181018.113444.1204585260740847818.davem@davemloft.net> References: <8d75498e-6f43-a699-3a0a-fb4a2b5dc860@gmail.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: nic_swsd@realtek.com, netdev@vger.kernel.org To: hkallweit1@gmail.com Return-path: Received: from shards.monkeyblade.net ([23.128.96.9]:38450 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728570AbeJSChB (ORCPT ); Thu, 18 Oct 2018 22:37:01 -0400 In-Reply-To: <8d75498e-6f43-a699-3a0a-fb4a2b5dc860@gmail.com> Sender: netdev-owner@vger.kernel.org List-ID: From: Heiner Kallweit Date: Thu, 18 Oct 2018 19:56:01 +0200 > rtl_rx() and rtl_tx() are called only if the respective bits are set > in the interrupt status register. Under high load NAPI may not be > able to process all data (work_done == budget) and it will schedule > subsequent calls to the poll callback. > rtl_ack_events() however resets the bits in the interrupt status > register, therefore subsequent calls to rtl8169_poll() won't call > rtl_rx() and rtl_tx() - chip interrupts are still disabled. > > Fix this by calling rtl_rx() and rtl_tx() independent of the bits > set in the interrupt status register. Both functions will detect > if there's nothing to do for them. > > Fixes: da78dbff2e05 ("r8169: remove work from irq handler.") > Signed-off-by: Heiner Kallweit > --- > v2: > - added "Fixes" tag Applied and queued up for -stable, thanks! And I agree that moving the IRQ ACKing to the hw irq handler is net-next material.