svn commit: r185276 - head/sys/dev/fxp

Pyun YongHyeon yongari at FreeBSD.org
Mon Nov 24 18:05:02 PST 2008


Author: yongari
Date: Tue Nov 25 02:05:01 2008
New Revision: 185276
URL: http://svn.freebsd.org/changeset/base/185276

Log:
  Move unarming watchdog timer and pending multicast configuration
  check to fxp_txeof(). While I'm here unarm watchdog timer only if
  there are no pending queued Tx requests.
  Previously the watchdog timer was unarmed whenever Tx interrupt is
  raised. This could be resulted in hiding root cause of watchdog
  timeouts.

Modified:
  head/sys/dev/fxp/if_fxp.c

Modified: head/sys/dev/fxp/if_fxp.c
==============================================================================
--- head/sys/dev/fxp/if_fxp.c	Tue Nov 25 01:41:19 2008	(r185275)
+++ head/sys/dev/fxp/if_fxp.c	Tue Nov 25 02:05:01 2008	(r185276)
@@ -1547,6 +1547,11 @@ fxp_txeof(struct fxp_softc *sc)
 	}
 	sc->fxp_desc.tx_first = txp;
 	bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_PREWRITE);
+	if (sc->tx_queued == 0) {
+		sc->watchdog_timer = 0;
+		if (sc->need_mcsetup)
+			fxp_mc_setup(sc);
+	}
 }
 
 static void
@@ -1587,11 +1592,6 @@ fxp_intr_body(struct fxp_softc *sc, stru
 	if (statack & (FXP_SCB_STATACK_CXTNO | FXP_SCB_STATACK_CNA)) {
 		fxp_txeof(sc);
 
-		sc->watchdog_timer = 0;
-		if (sc->tx_queued == 0) {
-			if (sc->need_mcsetup)
-				fxp_mc_setup(sc);
-		}
 		/*
 		 * Try to start more packets transmitting.
 		 */


More information about the svn-src-head mailing list