summaryrefslogtreecommitdiff
path: root/package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch')
-rw-r--r--package/mac80211/patches/510-ath9k_aggr_buffer_leak.patch68
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);
- }
- }