svn commit: r249914 - user/adrian/net80211_tx/sys/dev/ath
Adrian Chadd
adrian at FreeBSD.org
Fri Apr 26 00:53:34 UTC 2013
Author: adrian
Date: Fri Apr 26 00:53:34 2013
New Revision: 249914
URL: http://svnweb.freebsd.org/changeset/base/249914
Log:
Since we're clearing the BAR and filtered frames tracking in the TID,
ensure we also take into account the pause counter.
Modified:
user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c
Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c
==============================================================================
--- user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c Fri Apr 26 00:47:28 2013 (r249913)
+++ user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c Fri Apr 26 00:53:34 2013 (r249914)
@@ -3862,6 +3862,36 @@ ath_tx_tid_reset(struct ath_softc *sc, s
#endif
/*
+ * If we have a bar_wait set, we need to unpause the TID
+ * here. Otherwise once cleanup has finished, the TID won't
+ * have the right paused counter.
+ *
+ * XXX I'm not going through resume here - I don't want the
+ * node to be rescheuled just yet. This however should be
+ * methodized!
+ */
+ if (tid->bar_wait) {
+ if (tid->paused > 0) {
+ tid->paused --;
+ }
+ }
+
+ /*
+ * XXX same with a currently filtered TID.
+ *
+ * Since this is being called during a flush, we assume that
+ * the filtered frame list is actually empty.
+ *
+ * XXX TODO: add in a check to ensure that the filtered queue
+ * depth is actually 0!
+ */
+ if (tid->isfiltered) {
+ if (tid->paused > 0) {
+ tid->paused --;
+ }
+ }
+
+ /*
* Clear BAR, filtered frames, scheduled and ADDBA pending.
* The TID may be going through cleanup from the last association
* where things in the BAW are still in the hardware queue.
More information about the svn-src-user
mailing list