Date: Fri, 26 Apr 2013 00:53:34 +0000 (UTC) From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r249914 - user/adrian/net80211_tx/sys/dev/ath Message-ID: <201304260053.r3Q0rYi8013429@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304260053.r3Q0rYi8013429>