mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
51 lines
1.9 KiB
Diff
51 lines
1.9 KiB
Diff
|
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;
|