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

Adrian Chadd adrian at FreeBSD.org
Sun Sep 18 09:42:21 UTC 2011


Author: adrian
Date: Sun Sep 18 09:42:21 2011
New Revision: 225648
URL: http://svn.freebsd.org/changeset/base/225648

Log:
  Move the lock around so it happens after the rate control update is done.
  (That way the ath_node lock and txq lock aren't held at the same time.)

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

Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c
==============================================================================
--- user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c	Sun Sep 18 09:05:42 2011	(r225647)
+++ user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c	Sun Sep 18 09:42:21 2011	(r225648)
@@ -2813,10 +2813,6 @@ ath_tx_comp_aggr_error(struct ath_softc 
 	struct ieee80211_tx_ampdu *tap;
 	ath_bufhead bf_cq;
 
-	ATH_TXQ_LOCK(sc->sc_ac2q[tid->ac]);
-
-	tap = ath_tx_get_tx_tid(an, tid->tid);
-
 	TAILQ_INIT(&bf_q);
 	TAILQ_INIT(&bf_cq);
 	sc->sc_stats.ast_tx_aggrfail++;
@@ -2832,6 +2828,9 @@ ath_tx_comp_aggr_error(struct ath_softc 
 	    bf_first->bf_state.bfs_pktlen,
 	    bf_first->bf_state.bfs_nframes, bf_first->bf_state.bfs_nframes);
 
+	ATH_TXQ_LOCK(sc->sc_ac2q[tid->ac]);
+	tap = ath_tx_get_tx_tid(an, tid->tid);
+
 	/* Retry all subframes */
 	bf = bf_first;
 	while (bf) {


More information about the svn-src-user mailing list