From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff Kirsher Subject: Re: pegged softirq and NAPI race (?) Date: Tue, 18 Sep 2018 14:36:54 -0700 Message-ID: References: <0FD562CC-CDE9-43C8-9623-B42AC7A208C8@fb.com> <324c4a85-1749-9129-bf03-73a49d9a4059@gmail.com> Reply-To: jeffrey.t.kirsher@intel.com Mime-Version: 1.0 Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="=-9JbKj99gtVA9uM9b1Zm+" Cc: Alexei Starovoitov , netdev , Alexander Duyck , michael.chan@broadcom.com, kernel-team To: Eric Dumazet , Eric Dumazet , songliubraving@fb.com Return-path: Received: from mga12.intel.com ([192.55.52.136]:5306 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730315AbeISDL0 (ORCPT ); Tue, 18 Sep 2018 23:11:26 -0400 In-Reply-To: <324c4a85-1749-9129-bf03-73a49d9a4059@gmail.com> Sender: netdev-owner@vger.kernel.org List-ID: --=-9JbKj99gtVA9uM9b1Zm+ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2018-09-18 at 14:21 -0700, Eric Dumazet wrote: >=20 > On 09/18/2018 02:13 PM, Eric Dumazet wrote: > > On Tue, Sep 18, 2018 at 1:37 PM Song Liu > > wrote: > > >=20 > > > Looks like a patch like the following fixes the issue for ixgbe. > > > But I > > > cannot explain it yet. > > >=20 > > > Does this ring a bell? > >=20 > > I dunno, it looks like the NIC is generating an interrupt while it > > should not, > > and constantly sets NAPI_STATE_MISSED. > >=20 > > Or maybe we need to properly check napi_complete_done() return > > value. > >=20 > > diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c > > b/drivers/net/ethernet/intel/ixgb/ixgb_main.c > > index > > d3e72d0f66ef428b08e4bd88508e05b734bc43a4..c4c565c982a98a5891603cedc > > dcb72dc1c401813 > > 100644 > > --- a/drivers/net/ethernet/intel/ixgb/ixgb_main.c > > +++ b/drivers/net/ethernet/intel/ixgb/ixgb_main.c > > @@ -1773,8 +1773,8 @@ ixgb_clean(struct napi_struct *napi, int > > budget) > > ixgb_clean_rx_irq(adapter, &work_done, budget); > >=20 > > /* If budget not fully consumed, exit the polling mode */ > > - if (work_done < budget) { > > - napi_complete_done(napi, work_done); > > + if (work_done < budget && > > + napi_complete_done(napi, work_done)) { > > if (!test_bit(__IXGB_DOWN, &adapter->flags)) > > ixgb_irq_enable(adapter); > > } > >=20 >=20 >=20 > ixgbe patch would be : >=20 > diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > index > 604282f03d236e4358fc91e64d8ba00a9b36cb8c..80d00aecb6e3e3e950ce6309bfe > 3639953dd73d9 100644 > --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > @@ -3196,12 +3196,12 @@ int ixgbe_poll(struct napi_struct *napi, int > budget) > return budget; > =20 > /* all work done, exit the polling mode */ > - napi_complete_done(napi, work_done); > - if (adapter->rx_itr_setting & 1) > - ixgbe_set_itr(q_vector); > - if (!test_bit(__IXGBE_DOWN, &adapter->state)) > - ixgbe_irq_enable_queues(adapter, BIT_ULL(q_vector- > >v_idx)); > - > + if (napi_complete_done(napi, work_done)) { > + if (adapter->rx_itr_setting & 1) > + ixgbe_set_itr(q_vector); > + if (!test_bit(__IXGBE_DOWN, &adapter->state)) > + ixgbe_irq_enable_queues(adapter, > BIT_ULL(q_vector->v_idx)); > + } > return min(work_done, budget - 1); > } > =20 Eric, after Song does some testing on these changes, will you be submitting a formal patch? If so, make sure to send it to=20 intel-wired-lan@lists.osuosl.org mailing list so I can pick up the fix. By the way, thanks! --=-9JbKj99gtVA9uM9b1Zm+ Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEiTyZWz+nnTrOJ1LZ5W/vlVpL7c4FAluhb/YACgkQ5W/vlVpL 7c5ZGQ//Wpnt/1/SloJk8cuCld8VucaPY6i1Vai86tz7/K6nXGAf0QHvn58K9OCS PbvwD0JH6QsU1ZmxPZ2PRnjGdpR7Ra9bdi8FqnFCBvYSXcHP4irlF1QGuvpei6A3 Xu+ffavS/3TnV+L4qpFtZVz5U77LPfgbbusEz4ce+8hEQcpyzMm0NPUbVj5kj4YW peY6Ye12clifAiZcidWS4JxfCxtZmcJhnalRrBwC6JHK+scuSx0UK0TK9YLpdDPW 3fPS/usqy8smX1LD1InL6hiHJAXMCIu2Z6epExlhFZhQGM8vZ5lUXTg2snz7QJx0 Z1bUS4wUFOXq5mOxKFDiJS3WpM2VLc41AYkZ6NX+fR2VZ5VEPzsQblt3S2ZEuSb0 lyc6tvWP6slEt0EJBuqebGM1+hHW5dHqlko9fkXnFJgyZOYTikzRMwsLrf9LsXRk qdcH6JcphCAki4/Gz796C6Fy8ugIoAbv30mRIxcETolnOOSOqLhqo1AHfrV+qgwQ EFzX1QMkr5oaEzFDiKTrfL4WOmw4Y5C8ChGjAEeB7fZW81dUXeHZ3skLs0cY35k0 thaK5/6A0+L58kAP6n+aMX9M3RdKsvIRFbZpW84xaP5jxpDlqMM/sfKfHhOIuWbI 6GW3TRp8ksbl9RVs/RU1O9wX234pLR24uC0fop8uOPsgkSqprsw= =Rmsy -----END PGP SIGNATURE----- --=-9JbKj99gtVA9uM9b1Zm+--