Ignore:
Timestamp:
2011-04-12T19:41:27+02:00 (5 years ago)
Author:
nbd
Message:

mac80211: merge some more fixes from trunk (fixes #9224)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/package/mac80211/patches/521-ath9k_fix_ap_ps_buffering.patch

    r26536 r26613  
    7676        skb = bf->bf_mpdu; 
    7777        hdr = (struct ieee80211_hdr *)skb->data; 
    78 @@ -442,7 +443,11 @@ static void ath_tx_complete_aggr(struct  
     78@@ -441,22 +442,24 @@ static void ath_tx_complete_aggr(struct  
     79                        /* transmit completion */ 
    7980                        acked_cnt++; 
    8081                } else { 
    81                         if (!(tid->state & AGGR_CLEANUP) && retry) { 
     82-                       if (!(tid->state & AGGR_CLEANUP) && retry) { 
    8283-                               if (fi->retries < ATH_MAX_SW_RETRIES) { 
    83 +                               if (ts->ts_status & ATH9K_TXERR_FILT) { 
    84 +                                       if (!an->sleeping) 
    85 +                                               clear_filter = true; 
    86 +                                       txpending = 1; 
    87 +                               } else if (fi->retries < ATH_MAX_SW_RETRIES) { 
    88                                         ath_tx_set_retry(sc, txq, bf->bf_mpdu); 
    89                                         txpending = 1; 
    90                                 } else { 
    91 @@ -496,6 +501,7 @@ static void ath_tx_complete_aggr(struct  
     84-                                       ath_tx_set_retry(sc, txq, bf->bf_mpdu); 
     85-                                       txpending = 1; 
     86-                               } else { 
     87-                                       bf->bf_state.bf_type |= BUF_XRETRY; 
     88-                                       txfail = 1; 
     89-                                       sendbar = 1; 
     90-                                       txfail_cnt++; 
     91-                               } 
     92-                       } else { 
     93+                       if ((tid->state & AGGR_CLEANUP) || !retry) { 
     94                                /* 
     95                                 * cleanup in progress, just fail 
     96                                 * the un-acked sub-frames 
     97                                 */ 
     98                                txfail = 1; 
     99+                       } else if (fi->retries < ATH_MAX_SW_RETRIES) { 
     100+                               if (!(ts->ts_status & ATH9K_TXERR_FILT) || 
     101+                                   !an->sleeping) 
     102+                                       ath_tx_set_retry(sc, txq, bf->bf_mpdu); 
     103+ 
     104+                               clear_filter = true; 
     105+                               txpending = 1; 
     106+                       } else { 
     107+                               bf->bf_state.bf_type |= BUF_XRETRY; 
     108+                               txfail = 1; 
     109+                               sendbar = 1; 
     110+                               txfail_cnt++; 
     111                        } 
     112                } 
     113  
     114@@ -496,6 +499,7 @@ static void ath_tx_complete_aggr(struct  
    92115                                !txfail, sendbar); 
    93116                } else { 
     
    97120                                if (bf->bf_next == NULL && bf_last->bf_stale) { 
    98121                                        struct ath_buf *tbf; 
    99 @@ -546,7 +552,12 @@ static void ath_tx_complete_aggr(struct  
     122@@ -546,7 +550,12 @@ static void ath_tx_complete_aggr(struct  
    100123  
    101124        /* prepend un-acked frames to the beginning of the pending frame queue */ 
     
    110133                ath_tx_queue_tid(txq, tid); 
    111134                spin_unlock_bh(&txq->axq_lock); 
    112 @@ -816,6 +827,11 @@ static void ath_tx_sched_aggr(struct ath 
     135@@ -816,6 +825,11 @@ static void ath_tx_sched_aggr(struct ath 
    113136                bf = list_first_entry(&bf_q, struct ath_buf, list); 
    114137                bf->bf_lastbf = list_entry(bf_q.prev, struct ath_buf, list); 
     
    122145                if (bf == bf->bf_lastbf) { 
    123146                        fi = get_frame_info(bf->bf_mpdu); 
    124 @@ -896,6 +912,67 @@ void ath_tx_aggr_stop(struct ath_softc * 
     147@@ -896,6 +910,67 @@ void ath_tx_aggr_stop(struct ath_softc * 
    125148        ath_tx_flush_tid(sc, txtid); 
    126149 } 
     
    190213 { 
    191214        struct ath_atx_tid *txtid; 
    192 @@ -1491,7 +1568,6 @@ static int setup_tx_flags(struct sk_buff 
     215@@ -1491,7 +1566,6 @@ static int setup_tx_flags(struct sk_buff 
    193216        struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); 
    194217        int flags = 0; 
     
    198221  
    199222        if (tx_info->flags & IEEE80211_TX_CTL_NO_ACK) 
    200 @@ -1754,6 +1830,9 @@ static void ath_tx_start_dma(struct ath_ 
     223@@ -1754,6 +1828,9 @@ static void ath_tx_start_dma(struct ath_ 
    201224                if (txctl->paprd) 
    202225                        bf->bf_state.bfs_paprd_timestamp = jiffies; 
Note: See TracChangeset for help on using the changeset viewer.