Skip to content

Commit 5239be0

Browse files
gobenjigregkh
authored andcommitted
Partial revert "e1000e: Avoid receiver overrun interrupt bursts"
commit 1f0ea19 upstream. This partially reverts commit 4aea7a5. We keep the fix for the first part of the problem (1) described in the log of that commit, that is to read ICR in the other interrupt handler. We remove the fix for the second part of the problem (2), Other interrupt throttling. Bursts of "Other" interrupts may once again occur during rxo (receive overflow) traffic conditions. This is deemed acceptable in the interest of avoiding unforeseen fallout from changes that are not strictly necessary. As discussed, the e1000e driver should be in "maintenance mode". Link: https://www.spinics.net/lists/netdev/msg480675.html 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 0d99649 commit 5239be0

1 file changed

Lines changed: 2 additions & 14 deletions

File tree

  • drivers/net/ethernet/intel/e1000e

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

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1911,21 +1911,10 @@ static irqreturn_t e1000_msix_other(int __always_unused irq, void *data)
19111911
struct e1000_adapter *adapter = netdev_priv(netdev);
19121912
struct e1000_hw *hw = &adapter->hw;
19131913
u32 icr;
1914-
bool enable = true;
19151914

19161915
icr = er32(ICR);
19171916
ew32(ICR, E1000_ICR_OTHER);
19181917

1919-
if (icr & E1000_ICR_RXO) {
1920-
ew32(ICR, E1000_ICR_RXO);
1921-
enable = false;
1922-
/* napi poll will re-enable Other, make sure it runs */
1923-
if (napi_schedule_prep(&adapter->napi)) {
1924-
adapter->total_rx_bytes = 0;
1925-
adapter->total_rx_packets = 0;
1926-
__napi_schedule(&adapter->napi);
1927-
}
1928-
}
19291918
if (icr & E1000_ICR_LSC) {
19301919
ew32(ICR, E1000_ICR_LSC);
19311920
hw->mac.get_link_status = true;
@@ -1934,7 +1923,7 @@ static irqreturn_t e1000_msix_other(int __always_unused irq, void *data)
19341923
mod_timer(&adapter->watchdog_timer, jiffies + 1);
19351924
}
19361925

1937-
if (enable && !test_bit(__E1000_DOWN, &adapter->state))
1926+
if (!test_bit(__E1000_DOWN, &adapter->state))
19381927
ew32(IMS, E1000_IMS_OTHER);
19391928

19401929
return IRQ_HANDLED;
@@ -2704,8 +2693,7 @@ static int e1000e_poll(struct napi_struct *napi, int weight)
27042693
napi_complete_done(napi, work_done);
27052694
if (!test_bit(__E1000_DOWN, &adapter->state)) {
27062695
if (adapter->msix_entries)
2707-
ew32(IMS, adapter->rx_ring->ims_val |
2708-
E1000_IMS_OTHER);
2696+
ew32(IMS, adapter->rx_ring->ims_val);
27092697
else
27102698
e1000_irq_enable(adapter);
27112699
}

0 commit comments

Comments
 (0)