Skip to content

Commit

Permalink
e1000e: Fix queue interrupt re-raising in Other interrupt
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Benjamin Poirier authored and Jeff Kirsher committed Mar 5, 2018
1 parent 1f0ea19 commit 361a954
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/net/ethernet/intel/e1000e/netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -1919,6 +1919,9 @@ static irqreturn_t e1000_msix_other(int __always_unused irq, void *data)
icr = er32(ICR);
ew32(ICR, E1000_ICR_OTHER);

if (icr & adapter->eiac_mask)
ew32(ICS, (icr & adapter->eiac_mask));

if (icr & E1000_ICR_LSC) {
ew32(ICR, E1000_ICR_LSC);
hw->mac.get_link_status = true;
Expand Down

0 comments on commit 361a954

Please sign in to comment.