svn commit: r226557 - user/adrian/if_ath_tx/sys/dev/ath

Adrian Chadd adrian at FreeBSD.org
Thu Oct 20 06:56:00 UTC 2011


Author: adrian
Date: Thu Oct 20 06:55:59 2011
New Revision: 226557
URL: http://svn.freebsd.org/changeset/base/226557

Log:
  Push the task enqueue further down. This fixes some strange bugs I've been
  seeing where txq hangs occur. I dunno why; the taskqueue shouldn't cause
  a thread preemption to occur.

Modified:
  user/adrian/if_ath_tx/sys/dev/ath/if_ath.c

Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath.c
==============================================================================
--- user/adrian/if_ath_tx/sys/dev/ath/if_ath.c	Thu Oct 20 06:25:57 2011	(r226556)
+++ user/adrian/if_ath_tx/sys/dev/ath/if_ath.c	Thu Oct 20 06:55:59 2011	(r226557)
@@ -1478,8 +1478,6 @@ ath_intr(void *arg)
 		}
 		if (status & HAL_INT_TX) {
 			sc->sc_stats.ast_tx_intr++;
-			taskqueue_enqueue_fast(sc->sc_tq, &sc->sc_txtask);
-
 			/*
 			 * Grab all the currently set bits in the HAL txq bitmap
 			 * and blank them. This is the only place we should be
@@ -1490,6 +1488,7 @@ ath_intr(void *arg)
 			ath_hal_gettxintrtxqs(sc->sc_ah, &txqs);
 			sc->sc_txq_active |= txqs;
 			ATH_UNLOCK(sc);
+			taskqueue_enqueue_fast(sc->sc_tq, &sc->sc_txtask);
 		}
 		if (status & HAL_INT_BMISS) {
 			sc->sc_stats.ast_bmiss++;


More information about the svn-src-user mailing list