summaryrefslogtreecommitdiffstats
path: root/sys/dev/e1000/if_igb.c
diff options
context:
space:
mode:
authorjfv <jfv@FreeBSD.org>2013-08-06 18:00:53 +0000
committerjfv <jfv@FreeBSD.org>2013-08-06 18:00:53 +0000
commitabe5830b3c2411a4d2a5ae9cf5629a5b7a957cfc (patch)
tree1efe02c3d55106d2efabd163c38ee36752d38f33 /sys/dev/e1000/if_igb.c
parentc5a14d7164df064f98aee7c6ec3bc76703f6b5f4 (diff)
downloadFreeBSD-src-abe5830b3c2411a4d2a5ae9cf5629a5b7a957cfc.zip
FreeBSD-src-abe5830b3c2411a4d2a5ae9cf5629a5b7a957cfc.tar.gz
When the igb driver is static there are cases when early interrupts occur,
resulting in a panic in refresh_mbufs, to prevent this add a check in the interrupt handler for DRV_RUNNING. MFC after: 1 day (critical for 9.2)
Diffstat (limited to 'sys/dev/e1000/if_igb.c')
-rw-r--r--sys/dev/e1000/if_igb.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/e1000/if_igb.c b/sys/dev/e1000/if_igb.c
index 101c73c..4e8bd0f 100644
--- a/sys/dev/e1000/if_igb.c
+++ b/sys/dev/e1000/if_igb.c
@@ -1572,6 +1572,10 @@ igb_msix_que(void *arg)
u32 newitr = 0;
bool more_rx;
+ /* Ignore spurious interrupts */
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ return;
+
E1000_WRITE_REG(&adapter->hw, E1000_EIMC, que->eims);
++que->irqs;
OpenPOWER on IntegriCloud