diff options
Diffstat (limited to 'package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch')
-rw-r--r-- | package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch b/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch deleted file mode 100644 index aa1f033fa3..0000000000 --- a/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch +++ /dev/null @@ -1,68 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -2430,37 +2430,37 @@ void ath_tx_node_init(struct ath_softc * - - void ath_tx_node_cleanup(struct ath_softc *sc, struct ath_node *an) - { -- int i; -- struct ath_atx_ac *ac, *ac_tmp; -- struct ath_atx_tid *tid, *tid_tmp; -+ struct ath_atx_ac *ac; -+ struct ath_atx_tid *tid; - struct ath_txq *txq; -+ int i, tidno; - -- for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { -- if (ATH_TXQ_SETUP(sc, i)) { -- txq = &sc->tx.txq[i]; -- -- spin_lock_bh(&txq->axq_lock); -- -- list_for_each_entry_safe(ac, -- ac_tmp, &txq->axq_acq, list) { -- tid = list_first_entry(&ac->tid_q, -- struct ath_atx_tid, list); -- if (tid && tid->an != an) -- continue; -- list_del(&ac->list); -- ac->sched = false; -- -- list_for_each_entry_safe(tid, -- tid_tmp, &ac->tid_q, list) { -- list_del(&tid->list); -- tid->sched = false; -- ath_tid_drain(sc, txq, tid); -- tid->state &= ~AGGR_ADDBA_COMPLETE; -- tid->state &= ~AGGR_CLEANUP; -- } -- } -+ for (tidno = 0, tid = &an->tid[tidno]; -+ tidno < WME_NUM_TID; tidno++, tid++) { -+ i = tid->ac->qnum; - -- spin_unlock_bh(&txq->axq_lock); -+ if (!ATH_TXQ_SETUP(sc, i)) -+ continue; -+ -+ txq = &sc->tx.txq[i]; -+ ac = tid->ac; -+ -+ spin_lock_bh(&txq->axq_lock); -+ -+ if (tid->sched) { -+ list_del(&tid->list); -+ tid->sched = false; - } -+ -+ if (ac->sched) { -+ list_del(&ac->list); -+ tid->ac->sched = false; -+ } -+ -+ ath_tid_drain(sc, txq, tid); -+ tid->state &= ~AGGR_ADDBA_COMPLETE; -+ tid->state &= ~AGGR_CLEANUP; -+ -+ spin_unlock_bh(&txq->axq_lock); - } - } |