aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/pending-4.14/191-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff
diff options
context:
space:
mode:
authorStijn Tintel <stijn@linux-ipv6.be>2018-06-28 11:44:10 +0200
committerStijn Tintel <stijn@linux-ipv6.be>2018-07-31 05:11:34 +0300
commitef025e6417abd608ee398039623ac8a306bb92c5 (patch)
tree7610f18fcc17078ac3adfb39941decec564bc3f2 /target/linux/generic/pending-4.14/191-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff
parent22b9f99b87fa1ff991180cabf02dd04d1bddce2b (diff)
downloadupstream-ef025e6417abd608ee398039623ac8a306bb92c5.tar.gz
upstream-ef025e6417abd608ee398039623ac8a306bb92c5.tar.bz2
upstream-ef025e6417abd608ee398039623ac8a306bb92c5.zip
kernel: add pending e1000e fixes
The previous round of fixes for the 82574 chip cause an issue with emulated e1000e devices in VMware ESXi 6.5. It also contains changes that are not strictly necessary. These patches fix the issues introduced in the previous series, revert the unnecessary changes to avoid unforeseen fallout, and avoid a case where interrupts can be missed. The final two patches of this series are already in the kernel, so no need to include them here. Patchwork: https://patchwork.ozlabs.org/cover/881776/ Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Diffstat (limited to 'target/linux/generic/pending-4.14/191-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff')
-rw-r--r--target/linux/generic/pending-4.14/191-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff50
1 files changed, 50 insertions, 0 deletions
diff --git a/target/linux/generic/pending-4.14/191-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff b/target/linux/generic/pending-4.14/191-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff
new file mode 100644
index 0000000000..8ad13ba69a
--- /dev/null
+++ b/target/linux/generic/pending-4.14/191-3-6-e1000e-Fix-queue-interrupt-re-raising-in-Other-interrupt.diff
@@ -0,0 +1,50 @@
+From patchwork Mon Mar 5 21:40:27 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [net, v2,
+ 3/6] e1000e: Fix queue interrupt re-raising in Other interrupt
+X-Patchwork-Submitter: "Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com>
+X-Patchwork-Id: 881775
+X-Patchwork-Delegate: davem@davemloft.net
+Message-Id: <20180305214030.25141-4-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:27 -0800
+From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+List-Id: <netdev.vger.kernel.org>
+
+From: Benjamin Poirier <bpoirier@suse.com>
+
+Restores the ICS write for Rx/Tx queue interrupts which was present before
+commit 16ecba59bc33 ("e1000e: Do not read ICR in Other interrupt", v4.5-rc1)
+but was not restored in commit 4aea7a5c5e94
+("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: 4aea7a5c5e94 ("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>
+---
+ drivers/net/ethernet/intel/e1000e/netdev.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/net/ethernet/intel/e1000e/netdev.c
++++ b/drivers/net/ethernet/intel/e1000e/netdev.c
+@@ -1915,6 +1915,9 @@ static irqreturn_t e1000_msix_other(int
+ 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;