summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjfv <jfv@FreeBSD.org>2012-08-15 17:12:40 +0000
committerjfv <jfv@FreeBSD.org>2012-08-15 17:12:40 +0000
commit0837e83e7ab9d4a6586490922e22a0523a1833ff (patch)
tree34ec7885d4c424e0d5de59a63b1a33904f46db7c
parentcd2aff73464a800a4055a28629369fe7640150be (diff)
downloadFreeBSD-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.c2
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);
OpenPOWER on IntegriCloud