From 56381e2f0f8dfb9925267b03ced1154fac9b3a59 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 7 Jul 2010 19:42:08 +0200 Subject: [PATCH] --- yaml --- r: 203511 b: refs/heads/master c: 2b40994cabd2f545d5c11d3a65dcee6f6f9155f8 h: refs/heads/master i: 203509: 3d16678151c2c4346c628393aa2148031de8cc4e 203507: b234874bcc20477042467abd739c73fa6784bcd7 203503: 9ef5977e237ba55635cbbe93383e0dad65ca5809 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/ath/ath9k/xmit.c | 52 ++++++++++----------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/[refs] b/[refs] index 6931072f47b7..86b55f787b7f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 60ea385ff279a18790a432d57a8302562aaa0f8d +refs/heads/master: 2b40994cabd2f545d5c11d3a65dcee6f6f9155f8 diff --git a/trunk/drivers/net/wireless/ath/ath9k/xmit.c b/trunk/drivers/net/wireless/ath/ath9k/xmit.c index c3681a1dc941..408d1c596a03 100644 --- a/trunk/drivers/net/wireless/ath/ath9k/xmit.c +++ b/trunk/drivers/net/wireless/ath/ath9k/xmit.c @@ -2430,37 +2430,37 @@ void ath_tx_node_init(struct ath_softc *sc, struct ath_node *an) 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]; + for (tidno = 0, tid = &an->tid[tidno]; + tidno < WME_NUM_TID; tidno++, tid++) { + i = tid->ac->qnum; - spin_lock_bh(&txq->axq_lock); + if (!ATH_TXQ_SETUP(sc, i)) + continue; - 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; - } - } + txq = &sc->tx.txq[i]; + ac = tid->ac; - spin_unlock_bh(&txq->axq_lock); + 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); } }