Commit 7f081d40 authored by Alexander Duyck's avatar Alexander Duyck Committed by David S. Miller

igb: add support for device reset interrupt

This patch adds support for the global device reset interrupt.  Without
this change the drivers will report tx hangs on all ports when a global
device reset occurs.
Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 959d20bf
...@@ -4110,6 +4110,9 @@ static irqreturn_t igb_msix_other(int irq, void *data) ...@@ -4110,6 +4110,9 @@ static irqreturn_t igb_msix_other(int irq, void *data)
u32 icr = rd32(E1000_ICR); u32 icr = rd32(E1000_ICR);
/* reading ICR causes bit 31 of EICR to be cleared */ /* reading ICR causes bit 31 of EICR to be cleared */
if (icr & E1000_ICR_DRSTA)
schedule_work(&adapter->reset_task);
if (icr & E1000_ICR_DOUTSYNC) { if (icr & E1000_ICR_DOUTSYNC) {
/* HW is reporting DMA is out of sync */ /* HW is reporting DMA is out of sync */
adapter->stats.doosync++; adapter->stats.doosync++;
...@@ -4733,6 +4736,9 @@ static irqreturn_t igb_intr_msi(int irq, void *data) ...@@ -4733,6 +4736,9 @@ static irqreturn_t igb_intr_msi(int irq, void *data)
igb_write_itr(q_vector); igb_write_itr(q_vector);
if (icr & E1000_ICR_DRSTA)
schedule_work(&adapter->reset_task);
if (icr & E1000_ICR_DOUTSYNC) { if (icr & E1000_ICR_DOUTSYNC) {
/* HW is reporting DMA is out of sync */ /* HW is reporting DMA is out of sync */
adapter->stats.doosync++; adapter->stats.doosync++;
...@@ -4772,6 +4778,9 @@ static irqreturn_t igb_intr(int irq, void *data) ...@@ -4772,6 +4778,9 @@ static irqreturn_t igb_intr(int irq, void *data)
if (!(icr & E1000_ICR_INT_ASSERTED)) if (!(icr & E1000_ICR_INT_ASSERTED))
return IRQ_NONE; return IRQ_NONE;
if (icr & E1000_ICR_DRSTA)
schedule_work(&adapter->reset_task);
if (icr & E1000_ICR_DOUTSYNC) { if (icr & E1000_ICR_DOUTSYNC) {
/* HW is reporting DMA is out of sync */ /* HW is reporting DMA is out of sync */
adapter->stats.doosync++; adapter->stats.doosync++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment