diff options
author | Sam Leffler <sam@FreeBSD.org> | 2007-06-24 01:57:20 +0000 |
---|---|---|
committer | Sam Leffler <sam@FreeBSD.org> | 2007-06-24 01:57:20 +0000 |
commit | d50ea6acfa65c514adb6cedf318e778ddd419336 (patch) | |
tree | 3050788f2309f70c6fe7ec7fa87996ffbccb428a /sys | |
parent | 530755ca2d25b28810a2b6039ddedfd30e67b77d (diff) | |
download | src-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.c | 4 |
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); |