Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Oct 2011 06:55:59 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r226557 - user/adrian/if_ath_tx/sys/dev/ath
Message-ID:  <201110200655.p9K6txKh061507@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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++;



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