diff options
author | jfv <jfv@FreeBSD.org> | 2013-08-06 18:00:53 +0000 |
---|---|---|
committer | jfv <jfv@FreeBSD.org> | 2013-08-06 18:00:53 +0000 |
commit | abe5830b3c2411a4d2a5ae9cf5629a5b7a957cfc (patch) | |
tree | 1efe02c3d55106d2efabd163c38ee36752d38f33 /sys/dev/e1000/if_igb.c | |
parent | c5a14d7164df064f98aee7c6ec3bc76703f6b5f4 (diff) | |
download | FreeBSD-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.c | 4 |
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; |