Changeset 39688


Ignore:
Timestamp:
2014-02-22T14:01:11+01:00 (4 years ago)
Author:
nbd
Message:

ath9k: fix issues that have been plaguing some powersave clients since the tx queueing rework (#14092)

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

File:
1 edited

Legend:

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

    r39687 r39688  
     1commit 0f1cb7be2551b30b02cd54c897e0e29e483cfda5 
     2Author: Felix Fietkau <nbd@openwrt.org> 
     3Date:   Sat Feb 22 13:43:29 2014 +0100 
     4 
     5    ath9k: fix ps-poll responses under a-mpdu sessions 
     6     
     7    When passing tx frames to the U-APSD queue for powersave poll responses, 
     8    the ath_atx_tid pointer needs to be passed to ath_tx_setup_buffer for 
     9    proper sequence number accounting. 
     10     
     11    This fixes high latency and connection stability issues with ath9k 
     12    running as AP and a few kinds of mobile phones as client, when PS-Poll 
     13    is heavily used 
     14     
     15    Cc: stable@vger.kernel.org 
     16    Signed-off-by: Felix Fietkau <nbd@openwrt.org> 
     17 
    118commit d5d87a37bbd6066b2c3c5d0bd0fe2a6e2ea45cc5 
    219Author: Felix Fietkau <nbd@openwrt.org> 
     
    30023019  
    30033020                tid->sched = false; 
     3021@@ -2184,14 +2186,15 @@ int ath_tx_start(struct ieee80211_hw *hw 
     3022                txq->stopped = true; 
     3023        } 
     3024  
     3025+       if (txctl->an) 
     3026+               tid = ath_get_skb_tid(sc, txctl->an, skb); 
     3027+ 
     3028        if (info->flags & IEEE80211_TX_CTL_PS_RESPONSE) { 
     3029                ath_txq_unlock(sc, txq); 
     3030                txq = sc->tx.uapsdq; 
     3031                ath_txq_lock(sc, txq); 
     3032        } else if (txctl->an && 
     3033                   ieee80211_is_data_present(hdr->frame_control)) { 
     3034-               tid = ath_get_skb_tid(sc, txctl->an, skb); 
     3035- 
     3036                WARN_ON(tid->ac->txq != txctl->txq); 
     3037  
     3038                if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) 
    30043039--- a/drivers/net/wireless/ath/ath9k/init.c 
    30053040+++ b/drivers/net/wireless/ath/ath9k/init.c 
Note: See TracChangeset for help on using the changeset viewer.