Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -4110,6 +4110,9 @@ static irqreturn_t igb_msix_other(int irq, void *data)
	u32 icr = rd32(E1000_ICR);
	/* 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) {
		/* HW is reporting DMA is out of sync */
		adapter->stats.doosync++;
@@ -4733,6 +4736,9 @@ static irqreturn_t igb_intr_msi(int irq, void *data)

	igb_write_itr(q_vector);

	if (icr & E1000_ICR_DRSTA)
		schedule_work(&adapter->reset_task);

	if (icr & E1000_ICR_DOUTSYNC) {
		/* HW is reporting DMA is out of sync */
		adapter->stats.doosync++;
@@ -4772,6 +4778,9 @@ static irqreturn_t igb_intr(int irq, void *data)
	if (!(icr & E1000_ICR_INT_ASSERTED))
		return IRQ_NONE;

	if (icr & E1000_ICR_DRSTA)
		schedule_work(&adapter->reset_task);

	if (icr & E1000_ICR_DOUTSYNC) {
		/* HW is reporting DMA is out of sync */
		adapter->stats.doosync++;