diff options
author | jfv <jfv@FreeBSD.org> | 2012-08-15 17:12:40 +0000 |
---|---|---|
committer | jfv <jfv@FreeBSD.org> | 2012-08-15 17:12:40 +0000 |
commit | 0837e83e7ab9d4a6586490922e22a0523a1833ff (patch) | |
tree | 34ec7885d4c424e0d5de59a63b1a33904f46db7c | |
parent | cd2aff73464a800a4055a28629369fe7640150be (diff) | |
download | FreeBSD-src-0837e83e7ab9d4a6586490922e22a0523a1833ff.zip FreeBSD-src-0837e83e7ab9d4a6586490922e22a0523a1833ff.tar.gz |
Customer report of a panic on boot due to the old
"m_getjcl:invalid cluster type" that occurred some
time back with the igb driver. This happens often when
booting over the net. I believe the NIC hardware is left
in a warm state when handed over to the driver, and a stray
RX interrupt happens earlier than the code is prepared for
it to happen. This change was verified to fix the problem,
its kind of a bandaid... but it is similar to what was done
in the igb code.
-rw-r--r-- | sys/dev/e1000/if_em.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 856aac7..c57293b 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -1570,6 +1570,8 @@ em_msix_rx(void *arg) bool more; ++rxr->rx_irq; + if (!(adapter->ifp->if_drv_flags & IFF_DRV_RUNNING)) + return; more = em_rxeof(rxr, adapter->rx_process_limit, NULL); if (more) taskqueue_enqueue(rxr->tq, &rxr->rx_task); |