Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Nov 2008 02:05:02 +0000 (UTC)
From:      Pyun YongHyeon <yongari@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r185276 - head/sys/dev/fxp
Message-ID:  <200811250205.mAP252Cs004796@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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.
 		 */



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