ath9k: merge a few more pending fixes, including a fix for the bogus WARN_ON in pci...
[openwrt.git] / package / mac80211 / patches / 541-ath9k_aggr_queue_cleanup.patch
index 1ea3c14..e196ced 100644 (file)
                if (!an->sleeping)
                        ath_tx_queue_tid(txq, tid);
                spin_unlock_bh(&txq->axq_lock);
-@@ -721,19 +722,22 @@ static enum ATH_AGGR_STATUS ath_tx_form_
+@@ -730,19 +731,22 @@ static enum ATH_AGGR_STATUS ath_tx_form_
                                             int *aggr_len)
  {
  #define PADBYTES(_len) ((4 - ((_len) % 4)) % 4)
  
                /* do not step over block-ack window */
                if (!BAW_WITHIN(tid->seq_start, tid->baw_size, fi->seqno)) {
-@@ -784,7 +788,9 @@ static enum ATH_AGGR_STATUS ath_tx_form_
+@@ -794,7 +798,9 @@ static enum ATH_AGGR_STATUS ath_tx_form_
                if (!fi->retries)
                        ath_tx_addto_baw(sc, tid, fi->seqno);
                ath9k_hw_set11n_aggr_middle(sc->sc_ah, bf->bf_desc, ndelim);
                if (bf_prev) {
                        bf_prev->bf_next = bf;
                        ath9k_hw_set_desc_link(sc->sc_ah, bf_prev->bf_desc,
-@@ -792,7 +798,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_
+@@ -802,7 +808,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_
                }
                bf_prev = bf;
  
  
        *aggr_len = al;
  
-@@ -810,7 +816,7 @@ static void ath_tx_sched_aggr(struct ath
+@@ -820,7 +826,7 @@ static void ath_tx_sched_aggr(struct ath
        int aggr_len;
  
        do {
                        return;
  
                INIT_LIST_HEAD(&bf_q);
-@@ -931,7 +937,7 @@ bool ath_tx_aggr_sleep(struct ath_softc 
+@@ -941,7 +947,7 @@ bool ath_tx_aggr_sleep(struct ath_softc 
  
                spin_lock_bh(&txq->axq_lock);
  
                        buffered = true;
  
                tid->sched = false;
-@@ -964,7 +970,7 @@ void ath_tx_aggr_wakeup(struct ath_softc
+@@ -974,7 +980,7 @@ void ath_tx_aggr_wakeup(struct ath_softc
                spin_lock_bh(&txq->axq_lock);
                ac->clear_ps_filter = true;
  
                        ath_tx_queue_tid(txq, tid);
                        ath_txq_schedule(sc, txq);
                }
-@@ -1308,7 +1314,7 @@ void ath_txq_schedule(struct ath_softc *
+@@ -1318,7 +1324,7 @@ void ath_txq_schedule(struct ath_softc *
                         * add tid to round-robin queue if more frames
                         * are pending for the tid
                         */
                                ath_tx_queue_tid(txq, tid);
  
                        if (tid == last_tid ||
-@@ -1414,7 +1420,7 @@ static void ath_tx_send_ampdu(struct ath
+@@ -1424,7 +1430,7 @@ static void ath_tx_send_ampdu(struct ath
         * - seqno is not within block-ack window
         * - h/w queue depth exceeds low water mark
         */
            !BAW_WITHIN(tid->seq_start, tid->baw_size, fi->seqno) ||
            txctl->txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH) {
                /*
-@@ -1422,7 +1428,7 @@ static void ath_tx_send_ampdu(struct ath
+@@ -1432,7 +1438,7 @@ static void ath_tx_send_ampdu(struct ath
                 * for aggregation.
                 */
                TX_STAT_INC(txctl->txq->axq_qnum, a_queued_sw);
                if (!txctl->an || !txctl->an->sleeping)
                        ath_tx_queue_tid(txctl->txq, tid);
                return;
-@@ -1753,6 +1759,7 @@ static struct ath_buf *ath_tx_setup_buff
+@@ -1763,6 +1769,7 @@ static struct ath_buf *ath_tx_setup_buff
                            bf->bf_buf_addr,
                            txq->axq_qnum);
  
  
        return bf;
  }
-@@ -2370,7 +2377,7 @@ void ath_tx_node_init(struct ath_softc *
+@@ -2380,7 +2387,7 @@ void ath_tx_node_init(struct ath_softc *
                tid->sched     = false;
                tid->paused    = false;
                tid->state &= ~AGGR_CLEANUP;
This page took 0.027632 seconds and 4 git commands to generate.