aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2007-06-24 01:57:20 +0000
committerSam Leffler <sam@FreeBSD.org>2007-06-24 01:57:20 +0000
commitd50ea6acfa65c514adb6cedf318e778ddd419336 (patch)
tree3050788f2309f70c6fe7ec7fa87996ffbccb428a /sys
parent530755ca2d25b28810a2b6039ddedfd30e67b77d (diff)
downloadsrc-d50ea6acfa65c514adb6cedf318e778ddd419336.tar.gz
src-d50ea6acfa65c514adb6cedf318e778ddd419336.zip
Process tx callbacks when draining the tx q; this fixes a problem
where a device timeout that occurs with a mgt frame on the tx q will leave the net80211 layer w/o any way to make progress. Reviewed by: thompsa, sephe Approved by: re (hrs)
Notes
Notes: svn path=/head/; revision=171015
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/ath/if_ath.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c
index 2841e8e473ae..2e85aec9f176 100644
--- a/sys/dev/ath/if_ath.c
+++ b/sys/dev/ath/if_ath.c
@@ -4798,8 +4798,10 @@ ath_tx_draintxq(struct ath_softc *sc, struct ath_txq *txq)
bf->bf_node = NULL;
if (ni != NULL) {
/*
- * Reclaim node reference.
+ * Do any callback and reclaim the node reference.
*/
+ if (bf->bf_m->m_flags & M_TXCB)
+ ieee80211_process_callback(ni, bf->bf_m, -1);
ieee80211_free_node(ni);
}
m_freem(bf->bf_m);