1 From patchwork Mon Mar 5 21:40:27 2018
2 Content-Type: text/plain; charset="utf-8"
4 Content-Transfer-Encoding: 7bit
6 3/6] e1000e: Fix queue interrupt re-raising in Other interrupt
7 X-Patchwork-Submitter: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com>
9 X-Patchwork-Delegate: davem@davemloft.net
10 Message-Id: <20180305214030.25141-4-jeffrey.t.kirsher@intel.com>
11 To: davem@davemloft.net
12 Cc: Benjamin Poirier <bpoirier@suse.com>, netdev@vger.kernel.org,
13 nhorman@redhat.com, sassmann@redhat.com, jogreene@redhat.com,
14 Jeff Kirsher <jeffrey.t.kirsher@intel.com>
15 Date: Mon, 5 Mar 2018 13:40:27 -0800
16 From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
17 List-Id: <netdev.vger.kernel.org>
19 From: Benjamin Poirier <bpoirier@suse.com>
21 Restores the ICS write for Rx/Tx queue interrupts which was present before
22 commit 16ecba59bc33 ("e1000e: Do not read ICR in Other interrupt", v4.5-rc1)
23 but was not restored in commit 4aea7a5c5e94
24 ("e1000e: Avoid receiver overrun interrupt bursts", v4.15-rc1).
26 This re-raises the queue interrupts in case the txq or rxq bits were set in
27 ICR and the Other interrupt handler read and cleared ICR before the queue
30 Fixes: 4aea7a5c5e94 ("e1000e: Avoid receiver overrun interrupt bursts")
31 Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
32 Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
33 Tested-by: Aaron Brown <aaron.f.brown@intel.com>
34 Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
36 drivers/net/ethernet/intel/e1000e/netdev.c | 3 +++
37 1 file changed, 3 insertions(+)
39 --- a/drivers/net/ethernet/intel/e1000e/netdev.c
40 +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
41 @@ -1915,6 +1915,9 @@ static irqreturn_t e1000_msix_other(int
43 ew32(ICR, E1000_ICR_OTHER);
45 + if (icr & adapter->eiac_mask)
46 + ew32(ICS, (icr & adapter->eiac_mask));
48 if (icr & E1000_ICR_LSC) {
49 ew32(ICR, E1000_ICR_LSC);
50 hw->mac.get_link_status = true;