diff options
Diffstat (limited to 'target/linux/generic/backport-4.14/700-2-6-Partial-revert-e1000e-Avoid-receiver-overrun-interrupt-bursts.diff')
-rw-r--r-- | target/linux/generic/backport-4.14/700-2-6-Partial-revert-e1000e-Avoid-receiver-overrun-interrupt-bursts.diff | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/target/linux/generic/backport-4.14/700-2-6-Partial-revert-e1000e-Avoid-receiver-overrun-interrupt-bursts.diff b/target/linux/generic/backport-4.14/700-2-6-Partial-revert-e1000e-Avoid-receiver-overrun-interrupt-bursts.diff new file mode 100644 index 0000000..2800e6f --- /dev/null +++ b/target/linux/generic/backport-4.14/700-2-6-Partial-revert-e1000e-Avoid-receiver-overrun-interrupt-bursts.diff @@ -0,0 +1,84 @@ +From patchwork Mon Mar 5 21:40:26 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [net, v2, + 2/6] Partial revert "e1000e: Avoid receiver overrun interrupt bursts" +X-Patchwork-Submitter: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com> +X-Patchwork-Id: 881769 +X-Patchwork-Delegate: davem@davemloft.net +Message-Id: <20180305214030.25141-3-jeffrey.t.kirsher@intel.com> +To: davem@davemloft.net +Cc: Benjamin Poirier <bpoirier@suse.com>, netdev@vger.kernel.org, + nhorman@redhat.com, sassmann@redhat.com, jogreene@redhat.com, + Jeff Kirsher <jeffrey.t.kirsher@intel.com> +Date: Mon, 5 Mar 2018 13:40:26 -0800 +From: Jeff Kirsher <jeffrey.t.kirsher@intel.com> +List-Id: <netdev.vger.kernel.org> + +From: Benjamin Poirier <bpoirier@suse.com> + +This partially reverts commit 4aea7a5c5e940c1723add439f4088844cd26196d. + +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> +--- + drivers/net/ethernet/intel/e1000e/netdev.c | 16 ++-------------- + 1 file changed, 2 insertions(+), 14 deletions(-) + +--- a/drivers/net/ethernet/intel/e1000e/netdev.c ++++ b/drivers/net/ethernet/intel/e1000e/netdev.c +@@ -1911,21 +1911,10 @@ static irqreturn_t e1000_msix_other(int + struct e1000_adapter *adapter = netdev_priv(netdev); + struct e1000_hw *hw = &adapter->hw; + u32 icr; +- bool enable = true; + + icr = er32(ICR); + ew32(ICR, E1000_ICR_OTHER); + +- if (icr & E1000_ICR_RXO) { +- ew32(ICR, E1000_ICR_RXO); +- enable = false; +- /* napi poll will re-enable Other, make sure it runs */ +- if (napi_schedule_prep(&adapter->napi)) { +- adapter->total_rx_bytes = 0; +- adapter->total_rx_packets = 0; +- __napi_schedule(&adapter->napi); +- } +- } + if (icr & E1000_ICR_LSC) { + ew32(ICR, E1000_ICR_LSC); + hw->mac.get_link_status = true; +@@ -1934,7 +1923,7 @@ static irqreturn_t e1000_msix_other(int + mod_timer(&adapter->watchdog_timer, jiffies + 1); + } + +- if (enable && !test_bit(__E1000_DOWN, &adapter->state)) ++ if (!test_bit(__E1000_DOWN, &adapter->state)) + ew32(IMS, E1000_IMS_OTHER); + + return IRQ_HANDLED; +@@ -2704,8 +2693,7 @@ static int e1000e_poll(struct napi_struc + napi_complete_done(napi, work_done); + if (!test_bit(__E1000_DOWN, &adapter->state)) { + if (adapter->msix_entries) +- ew32(IMS, adapter->rx_ring->ims_val | +- E1000_IMS_OTHER); ++ ew32(IMS, adapter->rx_ring->ims_val); + else + e1000_irq_enable(adapter); + } |