Changeset 40573


Ignore:
Timestamp:
2014-04-27T16:39:06+02:00 (4 years ago)
Author:
nbd
Message:

ath9k: add ANI fix for ar913x to improve stability

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

File:
1 edited

Legend:

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

    r40440 r40573  
     1commit 98a713933d8495f4078f561c1e651b738dd5b531 
     2Author: Felix Fietkau <nbd@openwrt.org> 
     3Date:   Sun Apr 27 14:49:03 2014 +0200 
     4 
     5    ath9k_hw: do not lower ANI setting below default on AR913x 
     6     
     7    When the amount of noise fluctuates strongly, low immunity settings 
     8    can sometimes disrupt signal detection on AR913x chips. When that 
     9    happens, no OFDM/CCK errors are reported anymore, and ANI tunes the 
     10    radio to the lowest immunity settings. 
     11    Usually rx/tx fails as well in that case. 
     12     
     13    To fix this, keep noise immunity settings at or above ANI default level, 
     14    which will keep radio parameters at or above INI values. 
     15     
     16    Signed-off-by: Felix Fietkau <nbd@openwrt.org> 
     17 
    118commit 7cbb4c021bfd1e656f5b9953a947ab3c64e4e3b0 
    219Author: Felix Fietkau <nbd@openwrt.org> 
     
    99116  
    100117        drv_bss_info_changed(local, sdata, &sdata->vif.bss_conf, changed); 
     118--- a/drivers/net/wireless/ath/ath9k/ani.c 
     119+++ b/drivers/net/wireless/ath/ath9k/ani.c 
     120@@ -155,6 +155,9 @@ static void ath9k_hw_set_ofdm_nil(struct 
     121                ATH9K_ANI_RSSI_THR_LOW, 
     122                ATH9K_ANI_RSSI_THR_HIGH); 
     123  
     124+       if (AR_SREV_9100(ah) && immunityLevel < ATH9K_ANI_OFDM_DEF_LEVEL) 
     125+               immunityLevel = ATH9K_ANI_OFDM_DEF_LEVEL; 
     126+ 
     127        if (!scan) 
     128                aniState->ofdmNoiseImmunityLevel = immunityLevel; 
     129  
     130@@ -235,6 +238,9 @@ static void ath9k_hw_set_cck_nil(struct  
     131                BEACON_RSSI(ah), ATH9K_ANI_RSSI_THR_LOW, 
     132                ATH9K_ANI_RSSI_THR_HIGH); 
     133  
     134+       if (AR_SREV_9100(ah) && immunityLevel < ATH9K_ANI_CCK_DEF_LEVEL) 
     135+               immunityLevel = ATH9K_ANI_CCK_DEF_LEVEL; 
     136+ 
     137        if (ah->opmode == NL80211_IFTYPE_STATION && 
     138            BEACON_RSSI(ah) <= ATH9K_ANI_RSSI_THR_LOW && 
     139            immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI) 
Note: See TracChangeset for help on using the changeset viewer.