Changeset 38017


Ignore:
Timestamp:
2013-09-17T12:07:56+02:00 (4 years ago)
Author:
nbd
Message:

ath9k: merge a fix for PS-Poll responses + aggregation

Signed-off-by: Felix Fietkau <nbd@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/kernel/mac80211/patches/300-pending_work.patch

    r38013 r38017  
    10161016+ 
    10171017+       INIT_LIST_HEAD(&bf_q); 
    1018 + 
     1018  
     1019-               ath_tx_fill_desc(sc, bf, txq, aggr_len); 
     1020-               ath_tx_txqaddbuf(sc, txq, &bf_q, false); 
     1021-       } while (txq->axq_ampdu_depth < ATH_AGGR_MIN_QDEPTH && 
     1022-                status != ATH_AGGR_BAW_CLOSED); 
    10191023+       bf = ath_tx_get_tid_subframe(sc, txq, tid, &tid_q); 
    10201024+       if (!bf) 
     
    10281032+               return false; 
    10291033+       } 
    1030   
    1031 -               ath_tx_fill_desc(sc, bf, txq, aggr_len); 
    1032 -               ath_tx_txqaddbuf(sc, txq, &bf_q, false); 
    1033 -       } while (txq->axq_ampdu_depth < ATH_AGGR_MIN_QDEPTH && 
    1034 -                status != ATH_AGGR_BAW_CLOSED); 
     1034+ 
    10351035+       ath_set_rates(tid->an->vif, tid->an->sta, bf); 
    10361036+       if (aggr) 
     
    11101110        int i; 
    11111111  
    1112 @@ -1394,15 +1548,15 @@ void ath9k_release_buffered_frames(struc 
     1112@@ -1394,16 +1548,18 @@ void ath9k_release_buffered_frames(struc 
    11131113                        continue; 
    11141114  
     
    11261126                        ath_set_rates(tid->an->vif, tid->an->sta, bf); 
    11271127-                       ath_tx_addto_baw(sc, tid, bf->bf_state.seqno); 
    1128 +                       ath_tx_addto_baw(sc, tid, bf); 
    1129                         bf->bf_state.bf_type &= ~BUF_AGGR; 
     1128-                       bf->bf_state.bf_type &= ~BUF_AGGR; 
     1129+                       if (bf_isampdu(bf)) { 
     1130+                               ath_tx_addto_baw(sc, tid, bf); 
     1131+                               bf->bf_state.bf_type &= ~BUF_AGGR; 
     1132+                       } 
    11301133                        if (bf_tail) 
    11311134                                bf_tail->bf_next = bf; 
    1132 @@ -1412,7 +1566,7 @@ void ath9k_release_buffered_frames(struc 
     1135  
     1136@@ -1412,7 +1568,7 @@ void ath9k_release_buffered_frames(struc 
    11331137                        sent++; 
    11341138                        TX_STAT_INC(txq->axq_qnum, a_queued_hw); 
     
    11391143                } 
    11401144                ath_txq_unlock_complete(sc, tid->ac->txq); 
    1141 @@ -1571,7 +1725,7 @@ static void ath_drain_txq_list(struct at 
     1145@@ -1571,7 +1727,7 @@ static void ath_drain_txq_list(struct at 
    11421146        while (!list_empty(list)) { 
    11431147                bf = list_first_entry(list, struct ath_buf, list); 
     
    11481152  
    11491153                        ath_tx_return_buffer(sc, bf); 
    1150 @@ -1665,25 +1819,27 @@ void ath_tx_cleanupq(struct ath_softc *s 
     1154@@ -1665,25 +1821,27 @@ void ath_tx_cleanupq(struct ath_softc *s 
    11511155  */ 
    11521156 void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq) 
     
    11811185                                               list); 
    11821186                        list_del(&tid->list); 
    1183 @@ -1692,17 +1848,17 @@ void ath_txq_schedule(struct ath_softc * 
     1187@@ -1692,17 +1850,17 @@ void ath_txq_schedule(struct ath_softc * 
    11841188                        if (tid->paused) 
    11851189                                continue; 
     
    12031207                } 
    12041208  
    1205 @@ -1711,9 +1867,17 @@ void ath_txq_schedule(struct ath_softc * 
     1209@@ -1711,9 +1869,17 @@ void ath_txq_schedule(struct ath_softc * 
    12061210                        list_add_tail(&ac->list, &txq->axq_acq); 
    12071211                } 
     
    12231227  
    12241228        rcu_read_unlock(); 
    1225 @@ -1787,62 +1951,13 @@ static void ath_tx_txqaddbuf(struct ath_ 
     1229@@ -1787,62 +1953,13 @@ static void ath_tx_txqaddbuf(struct ath_ 
    12261230                        if (bf_is_ampdu_not_probing(bf)) 
    12271231                                txq->axq_ampdu_depth++; 
     
    12891293                               struct ath_atx_tid *tid, struct sk_buff *skb) 
    12901294 { 
    1291 @@ -1985,6 +2100,7 @@ static int ath_tx_prepare(struct ieee802 
     1295@@ -1985,6 +2102,7 @@ static int ath_tx_prepare(struct ieee802 
    12921296        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); 
    12931297        struct ieee80211_sta *sta = txctl->sta; 
     
    12971301        int frmlen = skb->len + FCS_LEN; 
    12981302        int padpos, padsize; 
    1299 @@ -1992,6 +2108,10 @@ static int ath_tx_prepare(struct ieee802 
     1303@@ -1992,6 +2110,10 @@ static int ath_tx_prepare(struct ieee802 
    13001304        /* NOTE:  sta can be NULL according to net/mac80211.h */ 
    13011305        if (sta) 
     
    13081312        if (info->control.hw_key) 
    13091313                frmlen += info->control.hw_key->icv_len; 
    1310 @@ -2041,7 +2161,6 @@ int ath_tx_start(struct ieee80211_hw *hw 
     1314@@ -2041,7 +2163,6 @@ int ath_tx_start(struct ieee80211_hw *hw 
    13111315        struct ath_txq *txq = txctl->txq; 
    13121316        struct ath_atx_tid *tid = NULL; 
     
    13161320        int ret; 
    13171321  
    1318 @@ -2069,27 +2188,31 @@ int ath_tx_start(struct ieee80211_hw *hw 
     1322@@ -2069,27 +2190,31 @@ int ath_tx_start(struct ieee80211_hw *hw 
    13191323                ath_txq_unlock(sc, txq); 
    13201324                txq = sc->tx.uapsdq; 
     
    13591363                        dev_kfree_skb_any(skb); 
    13601364                else 
    1361 @@ -2142,7 +2265,7 @@ void ath_tx_cabq(struct ieee80211_hw *hw 
     1365@@ -2142,7 +2267,7 @@ void ath_tx_cabq(struct ieee80211_hw *hw 
    13621366  
    13631367                bf->bf_lastbf = bf; 
     
    13681372                if (bf_tail) 
    13691373                        bf_tail->bf_next = bf; 
    1370 @@ -2189,7 +2312,7 @@ static void ath_tx_complete(struct ath_s 
     1374@@ -2189,7 +2314,7 @@ static void ath_tx_complete(struct ath_s 
    13711375        struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); 
    13721376        struct ath_common *common = ath9k_hw_common(sc->sc_ah); 
     
    13771381  
    13781382        ath_dbg(common, XMIT, "TX complete: skb: %p\n", skb); 
    1379 @@ -2225,21 +2348,7 @@ static void ath_tx_complete(struct ath_s 
     1383@@ -2225,21 +2350,7 @@ static void ath_tx_complete(struct ath_s 
    13801384        spin_unlock_irqrestore(&sc->sc_pm_lock, flags); 
    13811385  
     
    14001404  
    14011405 static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf, 
    1402 @@ -2360,8 +2469,7 @@ static void ath_tx_processq(struct ath_s 
     1406@@ -2360,8 +2471,7 @@ static void ath_tx_processq(struct ath_s 
    14031407  
    14041408                if (list_empty(&txq->axq_q)) { 
     
    14101414                } 
    14111415                bf = list_first_entry(&txq->axq_q, struct ath_buf, list); 
    1412 @@ -2375,7 +2483,7 @@ static void ath_tx_processq(struct ath_s 
     1416@@ -2375,7 +2485,7 @@ static void ath_tx_processq(struct ath_s 
    14131417                 * it with the STALE flag. 
    14141418                 */ 
     
    14191423                        if (list_is_last(&bf_held->list, &txq->axq_q)) 
    14201424                                break; 
    1421 @@ -2399,7 +2507,7 @@ static void ath_tx_processq(struct ath_s 
     1425@@ -2399,7 +2509,7 @@ static void ath_tx_processq(struct ath_s 
    14221426                 * however leave the last descriptor back as the holding 
    14231427                 * descriptor for hw. 
     
    14281432                if (!list_is_singular(&lastbf->list)) 
    14291433                        list_cut_position(&bf_head, 
    1430 @@ -2470,7 +2578,7 @@ void ath_tx_edma_tasklet(struct ath_soft 
     1434@@ -2470,7 +2580,7 @@ void ath_tx_edma_tasklet(struct ath_soft 
    14311435                } 
    14321436  
     
    14371441                        ath_tx_return_buffer(sc, bf); 
    14381442                        bf = list_first_entry(fifo_list, struct ath_buf, list); 
    1439 @@ -2492,7 +2600,7 @@ void ath_tx_edma_tasklet(struct ath_soft 
     1443@@ -2492,7 +2602,7 @@ void ath_tx_edma_tasklet(struct ath_soft 
    14401444                                ath_tx_txqaddbuf(sc, txq, &bf_q, true); 
    14411445                        } 
     
    14461450                                list_cut_position(&bf_head, fifo_list, 
    14471451                                                  lastbf->list.prev); 
    1448 @@ -2583,6 +2691,7 @@ void ath_tx_node_init(struct ath_softc * 
     1452@@ -2583,6 +2693,7 @@ void ath_tx_node_init(struct ath_softc * 
    14491453                tid->paused    = false; 
    14501454                tid->active        = false; 
     
    14541458                tid->ac = &an->ac[acno]; 
    14551459        } 
    1456 @@ -2590,6 +2699,7 @@ void ath_tx_node_init(struct ath_softc * 
     1460@@ -2590,6 +2701,7 @@ void ath_tx_node_init(struct ath_softc * 
    14571461        for (acno = 0, ac = &an->ac[acno]; 
    14581462             acno < IEEE80211_NUM_ACS; acno++, ac++) { 
Note: See TracChangeset for help on using the changeset viewer.