From 252781f47d2b9c8c99d1401ac826ea289c1ba37a Mon Sep 17 00:00:00 2001 From: Jack F Vogel Date: Wed, 15 Aug 2012 17:12:40 +0000 Subject: [PATCH] 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. --- sys/dev/e1000/if_em.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 856aac7da50..c57293b2643 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);