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

Adrian Chadd adrian at FreeBSD.org
Mon Aug 15 14:00:56 UTC 2011


Author: adrian
Date: Mon Aug 15 14:00:55 2011
New Revision: 224885
URL: http://svn.freebsd.org/changeset/base/224885

Log:
  Update comments to reflect reality

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	Mon Aug 15 13:43:43 2011	(r224884)
+++ user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c	Mon Aug 15 14:00:55 2011	(r224885)
@@ -1116,20 +1116,14 @@ ath_tx_start(struct ath_softc *sc, struc
 		/*
 		 * XXX The following is dirty but needed for now.
 		 *
-		 * Because of the current way locking is implemented,
-		 * we may end up here because of a call to
-		 * ieee80211_send_bar() from a call inside the completion
-		 * handler. This will have the hardware TXQ locked,
-		 * protecting the TXQ and the node TID state in question.
+		 * Sending a BAR frame can occur from the net80211 txa timer
+		 * (ie, retries) or from the ath txtask (completion call.)
+		 * It queues directly to hardware because the TID is paused
+		 * at this point (and won't be unpaused until the BAR has
+		 * either been TXed successfully or max retries has been
+		 * reached.)
 		 *
-		 * So we (a) can't SWQ queue to it, as it'll be queued
-		 * on the same TID which will be paused, and (b) the TXQ
-		 * will be locked anyway, so grabbing the lock will cause
-		 * recursion.
-		 *
-		 * The longer term issue is that the TXQ lock is being held
-		 * for so damned long, and that must be addressed before this
-		 * stuff is merged into -HEAD.
+		 * TODO: sending a BAR should be done at the management rate!
 		 */
 		device_printf(sc->sc_dev, "%s: BAR: TX'ing direct\n", __func__);
 		ATH_TXQ_LOCK(txq);


More information about the svn-src-user mailing list