Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Aug 2012 17:12:40 +0000 (UTC)
From:      Jack F Vogel <jfv@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r239304 - head/sys/dev/e1000
Message-ID:  <201208151712.q7FHCeUf084366@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jfv
Date: Wed Aug 15 17:12:40 2012
New Revision: 239304
URL: http://svn.freebsd.org/changeset/base/239304

Log:
  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.

Modified:
  head/sys/dev/e1000/if_em.c

Modified: head/sys/dev/e1000/if_em.c
==============================================================================
--- head/sys/dev/e1000/if_em.c	Wed Aug 15 16:19:39 2012	(r239303)
+++ head/sys/dev/e1000/if_em.c	Wed Aug 15 17:12:40 2012	(r239304)
@@ -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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201208151712.q7FHCeUf084366>