Changeset 36881


Ignore:
Timestamp:
2013-06-07T18:11:56+02:00 (5 years ago)
Author:
nbd
Message:

ath9k: fix paprd descriptor setup

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

File:
1 edited

Legend:

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

    r36880 r36881  
    44294429        memset(&info, 0, sizeof(info)); 
    44304430        info.is_first = true; 
    4431 @@ -1117,24 +1130,14 @@ static void ath_tx_fill_desc(struct ath_ 
     4431@@ -1117,24 +1130,11 @@ static void ath_tx_fill_desc(struct ath_ 
    44324432        info.txpower = MAX_RATE_POWER; 
    44334433        info.qcu = txq->axq_qnum; 
     
    44444444-               info.flags |= ATH9K_TXDESC_CLRDMASK; 
    44454445- 
    4446         if (bf->bf_state.bfs_paprd) 
    4447                 info.flags |= (u32) bf->bf_state.bfs_paprd << ATH9K_TXDESC_PAPRD_S; 
    4448   
     4446-       if (bf->bf_state.bfs_paprd) 
     4447-               info.flags |= (u32) bf->bf_state.bfs_paprd << ATH9K_TXDESC_PAPRD_S; 
     4448- 
    44494449- 
    44504450        while (bf) { 
     
    44564456                info.type = get_hw_packet_type(skb); 
    44574457                if (bf->bf_next) 
    4458 @@ -1142,6 +1145,22 @@ static void ath_tx_fill_desc(struct ath_ 
     4458@@ -1142,6 +1142,26 @@ static void ath_tx_fill_desc(struct ath_ 
    44594459                else 
    44604460                        info.link = 0; 
     
    44734473+                               info.flags |= ATH9K_TXDESC_LDPC; 
    44744474+ 
     4475+                       if (bf->bf_state.bfs_paprd) 
     4476+                               info.flags |= (u32) bf->bf_state.bfs_paprd << 
     4477+                                             ATH9K_TXDESC_PAPRD_S; 
     4478+ 
    44754479+                       ath_buf_set_rate(sc, bf, &info, len); 
    44764480+               } 
     
    44794483                info.buf_len[0] = skb->len; 
    44804484                info.pkt_len = fi->framelen; 
    4481 @@ -1151,7 +1170,7 @@ static void ath_tx_fill_desc(struct ath_ 
     4485@@ -1151,7 +1171,7 @@ static void ath_tx_fill_desc(struct ath_ 
    44824486                if (aggr) { 
    44834487                        if (bf == bf_first) 
     
    44884492                        else 
    44894493                                info.aggr = AGGR_BUF_MIDDLE; 
    4490 @@ -1160,6 +1179,9 @@ static void ath_tx_fill_desc(struct ath_ 
     4494@@ -1160,6 +1180,9 @@ static void ath_tx_fill_desc(struct ath_ 
    44914495                        info.aggr_len = len; 
    44924496                } 
     
    44984502                bf = bf->bf_next; 
    44994503        } 
    4500 @@ -1224,9 +1246,6 @@ int ath_tx_aggr_start(struct ath_softc * 
     4504@@ -1224,9 +1247,6 @@ int ath_tx_aggr_start(struct ath_softc * 
    45014505        an = (struct ath_node *)sta->drv_priv; 
    45024506        txtid = ATH_AN_2_TID(an, tid); 
     
    45084512         * in HT IBSS when a beacon with HT-info is received after the station 
    45094513         * has already been added. 
    4510 @@ -1238,7 +1257,7 @@ int ath_tx_aggr_start(struct ath_softc * 
     4514@@ -1238,7 +1258,7 @@ int ath_tx_aggr_start(struct ath_softc * 
    45114515                an->mpdudensity = density; 
    45124516        } 
     
    45174521        *ssn = txtid->seq_start = txtid->seq_next; 
    45184522        txtid->bar_index = -1; 
    4519 @@ -1255,28 +1274,9 @@ void ath_tx_aggr_stop(struct ath_softc * 
     4523@@ -1255,28 +1275,9 @@ void ath_tx_aggr_stop(struct ath_softc * 
    45204524        struct ath_atx_tid *txtid = ATH_AN_2_TID(an, tid); 
    45214525        struct ath_txq *txq = txtid->ac->txq; 
     
    45474551        ath_txq_unlock_complete(sc, txq); 
    45484552 } 
    4549 @@ -1342,18 +1342,92 @@ void ath_tx_aggr_wakeup(struct ath_softc 
     4553@@ -1342,18 +1343,92 @@ void ath_tx_aggr_wakeup(struct ath_softc 
    45504554        } 
    45514555 } 
     
    46474651  
    46484652 /********************/ 
    4649 @@ -1709,8 +1783,9 @@ static void ath_tx_txqaddbuf(struct ath_ 
     4653@@ -1709,8 +1784,9 @@ static void ath_tx_txqaddbuf(struct ath_ 
    46504654        } 
    46514655 } 
     
    46594663        struct ath_frame_info *fi = get_frame_info(skb); 
    46604664        struct list_head bf_head; 
    4661 @@ -1723,26 +1798,28 @@ static void ath_tx_send_ampdu(struct ath 
     4665@@ -1723,26 +1799,28 @@ static void ath_tx_send_ampdu(struct ath 
    46624666         * - seqno is not within block-ack window 
    46634667         * - h/w queue depth exceeds low water mark 
     
    46944698        INIT_LIST_HEAD(&bf_head); 
    46954699        list_add(&bf->list, &bf_head); 
    4696 @@ -1751,10 +1828,10 @@ static void ath_tx_send_ampdu(struct ath 
     4700@@ -1751,10 +1829,10 @@ static void ath_tx_send_ampdu(struct ath 
    46974701        ath_tx_addto_baw(sc, tid, bf->bf_state.seqno); 
    46984702  
     
    47084712  
    47094713 static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq, 
    4710 @@ -1892,62 +1969,16 @@ static struct ath_buf *ath_tx_setup_buff 
     4714@@ -1892,62 +1970,16 @@ static struct ath_buf *ath_tx_setup_buff 
    47114715        return bf; 
    47124716 } 
     
    47744778        /* NOTE:  sta can be NULL according to net/mac80211.h */ 
    47754779        if (sta) 
    4776 @@ -1968,6 +1999,11 @@ int ath_tx_start(struct ieee80211_hw *hw 
     4780@@ -1968,6 +2000,11 @@ int ath_tx_start(struct ieee80211_hw *hw 
    47774781                hdr->seq_ctrl |= cpu_to_le16(sc->tx.seq_no); 
    47784782        } 
     
    47864790        padpos = ieee80211_hdrlen(hdr->frame_control); 
    47874791        padsize = padpos & 3; 
    4788 @@ -1977,16 +2013,34 @@ int ath_tx_start(struct ieee80211_hw *hw 
     4792@@ -1977,16 +2014,34 @@ int ath_tx_start(struct ieee80211_hw *hw 
    47894793  
    47904794                skb_push(skb, padsize); 
     
    48014805+       return 0; 
    48024806+} 
    4803 + 
     4807  
    48044808+ 
    48054809+/* Upon failure caller should free skb */ 
     
    48224826+       if (ret) 
    48234827+           return ret; 
    4824   
     4828+ 
    48254829+       hdr = (struct ieee80211_hdr *) skb->data; 
    48264830        /* 
    48274831         * At this point, the vif, hw_key and sta pointers in the tx control 
    48284832         * info are no longer valid (overwritten by the ath_frame_info data. 
    4829 @@ -2002,13 +2056,120 @@ int ath_tx_start(struct ieee80211_hw *hw 
     4833@@ -2002,13 +2057,120 @@ int ath_tx_start(struct ieee80211_hw *hw 
    48304834                txq->stopped = true; 
    48314835        } 
     
    49494953 /* TX Completion */ 
    49504954 /*****************/ 
    4951 @@ -2054,7 +2215,12 @@ static void ath_tx_complete(struct ath_s 
     4955@@ -2054,7 +2216,12 @@ static void ath_tx_complete(struct ath_s 
    49524956        } 
    49534957        spin_unlock_irqrestore(&sc->sc_pm_lock, flags); 
     
    49624966                if (WARN_ON(--txq->pending_frames < 0)) 
    49634967                        txq->pending_frames = 0; 
    4964 @@ -2065,8 +2231,6 @@ static void ath_tx_complete(struct ath_s 
     4968@@ -2065,8 +2232,6 @@ static void ath_tx_complete(struct ath_s 
    49654969                        txq->stopped = false; 
    49664970                } 
     
    49714975  
    49724976 static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf, 
    4973 @@ -2408,12 +2572,10 @@ void ath_tx_node_init(struct ath_softc * 
     4977@@ -2408,12 +2573,10 @@ void ath_tx_node_init(struct ath_softc * 
    49744978                tid->baw_head  = tid->baw_tail = 0; 
    49754979                tid->sched     = false; 
     
    49854989  
    49864990        for (acno = 0, ac = &an->ac[acno]; 
    4987 @@ -2450,9 +2612,9 @@ void ath_tx_node_cleanup(struct ath_soft 
     4991@@ -2450,9 +2613,9 @@ void ath_tx_node_cleanup(struct ath_soft 
    49884992                } 
    49894993  
Note: See TracChangeset for help on using the changeset viewer.