diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/xmit.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 0644f1e91887..501b72821b4d 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c | |||
@@ -518,6 +518,14 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq, | |||
518 | bf = bf_next; | 518 | bf = bf_next; |
519 | } | 519 | } |
520 | 520 | ||
521 | /* prepend un-acked frames to the beginning of the pending frame queue */ | ||
522 | if (!list_empty(&bf_pending)) { | ||
523 | spin_lock_bh(&txq->axq_lock); | ||
524 | list_splice(&bf_pending, &tid->buf_q); | ||
525 | ath_tx_queue_tid(txq, tid); | ||
526 | spin_unlock_bh(&txq->axq_lock); | ||
527 | } | ||
528 | |||
521 | if (tid->state & AGGR_CLEANUP) { | 529 | if (tid->state & AGGR_CLEANUP) { |
522 | if (tid->baw_head == tid->baw_tail) { | 530 | if (tid->baw_head == tid->baw_tail) { |
523 | tid->state &= ~AGGR_ADDBA_COMPLETE; | 531 | tid->state &= ~AGGR_ADDBA_COMPLETE; |
@@ -530,14 +538,6 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq, | |||
530 | return; | 538 | return; |
531 | } | 539 | } |
532 | 540 | ||
533 | /* prepend un-acked frames to the beginning of the pending frame queue */ | ||
534 | if (!list_empty(&bf_pending)) { | ||
535 | spin_lock_bh(&txq->axq_lock); | ||
536 | list_splice(&bf_pending, &tid->buf_q); | ||
537 | ath_tx_queue_tid(txq, tid); | ||
538 | spin_unlock_bh(&txq->axq_lock); | ||
539 | } | ||
540 | |||
541 | rcu_read_unlock(); | 541 | rcu_read_unlock(); |
542 | 542 | ||
543 | if (needreset) | 543 | if (needreset) |
@@ -2077,8 +2077,8 @@ static void ath_wake_mac80211_queue(struct ath_softc *sc, struct ath_txq *txq) | |||
2077 | 2077 | ||
2078 | spin_lock_bh(&txq->axq_lock); | 2078 | spin_lock_bh(&txq->axq_lock); |
2079 | if (txq->stopped && sc->tx.pending_frames[qnum] < ATH_MAX_QDEPTH) { | 2079 | if (txq->stopped && sc->tx.pending_frames[qnum] < ATH_MAX_QDEPTH) { |
2080 | ath_mac80211_start_queue(sc, qnum); | 2080 | if (ath_mac80211_start_queue(sc, qnum)) |
2081 | txq->stopped = 0; | 2081 | txq->stopped = 0; |
2082 | } | 2082 | } |
2083 | spin_unlock_bh(&txq->axq_lock); | 2083 | spin_unlock_bh(&txq->axq_lock); |
2084 | } | 2084 | } |