Skip to content

Commit dd5456a

Browse files
gobenjigregkh
authored andcommitted
e1000e: Fix queue interrupt re-raising in Other interrupt
commit 361a954 upstream. Restores the ICS write for Rx/Tx queue interrupts which was present before commit 16ecba5 ("e1000e: Do not read ICR in Other interrupt", v4.5-rc1) but was not restored in commit 4aea7a5 ("e1000e: Avoid receiver overrun interrupt bursts", v4.15-rc1). This re-raises the queue interrupts in case the txq or rxq bits were set in ICR and the Other interrupt handler read and cleared ICR before the queue interrupt was raised. Fixes: 4aea7a5 ("e1000e: Avoid receiver overrun interrupt bursts") Signed-off-by: Benjamin Poirier <bpoirier@suse.com> Acked-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Cc: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 5239be0 commit dd5456a

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

  • drivers/net/ethernet/intel/e1000e

drivers/net/ethernet/intel/e1000e/netdev.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1915,6 +1915,9 @@ static irqreturn_t e1000_msix_other(int __always_unused irq, void *data)
19151915
icr = er32(ICR);
19161916
ew32(ICR, E1000_ICR_OTHER);
19171917

1918+
if (icr & adapter->eiac_mask)
1919+
ew32(ICS, (icr & adapter->eiac_mask));
1920+
19181921
if (icr & E1000_ICR_LSC) {
19191922
ew32(ICR, E1000_ICR_LSC);
19201923
hw->mac.get_link_status = true;

0 commit comments

Comments
 (0)