diff options
author | Felix Fietkau <nbd@openwrt.org> | 2014-04-27 14:39:06 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2014-04-27 14:39:06 +0000 |
commit | 4634f9737d6ba68ad53e4b243fceb9eedba2b8a6 (patch) | |
tree | 37752192db9ea60c3ba8c05217c0a645f600dbd3 /package/kernel/mac80211 | |
parent | c549fd53a8d64bb91794b3f28d9311f02c3951f8 (diff) | |
download | upstream-4634f9737d6ba68ad53e4b243fceb9eedba2b8a6.tar.gz upstream-4634f9737d6ba68ad53e4b243fceb9eedba2b8a6.tar.bz2 upstream-4634f9737d6ba68ad53e4b243fceb9eedba2b8a6.zip |
ath9k: add ANI fix for ar913x to improve stability
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@40573 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mac80211')
-rw-r--r-- | package/kernel/mac80211/patches/300-pending_work.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/300-pending_work.patch b/package/kernel/mac80211/patches/300-pending_work.patch index 71f2af379b..5c7f7e0019 100644 --- a/package/kernel/mac80211/patches/300-pending_work.patch +++ b/package/kernel/mac80211/patches/300-pending_work.patch @@ -1,3 +1,20 @@ +commit 98a713933d8495f4078f561c1e651b738dd5b531 +Author: Felix Fietkau <nbd@openwrt.org> +Date: Sun Apr 27 14:49:03 2014 +0200 + + ath9k_hw: do not lower ANI setting below default on AR913x + + When the amount of noise fluctuates strongly, low immunity settings + can sometimes disrupt signal detection on AR913x chips. When that + happens, no OFDM/CCK errors are reported anymore, and ANI tunes the + radio to the lowest immunity settings. + Usually rx/tx fails as well in that case. + + To fix this, keep noise immunity settings at or above ANI default level, + which will keep radio parameters at or above INI values. + + Signed-off-by: Felix Fietkau <nbd@openwrt.org> + commit 7cbb4c021bfd1e656f5b9953a947ab3c64e4e3b0 Author: Felix Fietkau <nbd@openwrt.org> Date: Thu Apr 10 10:49:01 2014 +0200 @@ -98,3 +115,25 @@ Date: Sun Apr 6 23:35:28 2014 +0200 return; drv_bss_info_changed(local, sdata, &sdata->vif.bss_conf, changed); +--- a/drivers/net/wireless/ath/ath9k/ani.c ++++ b/drivers/net/wireless/ath/ath9k/ani.c +@@ -155,6 +155,9 @@ static void ath9k_hw_set_ofdm_nil(struct + ATH9K_ANI_RSSI_THR_LOW, + ATH9K_ANI_RSSI_THR_HIGH); + ++ if (AR_SREV_9100(ah) && immunityLevel < ATH9K_ANI_OFDM_DEF_LEVEL) ++ immunityLevel = ATH9K_ANI_OFDM_DEF_LEVEL; ++ + if (!scan) + aniState->ofdmNoiseImmunityLevel = immunityLevel; + +@@ -235,6 +238,9 @@ static void ath9k_hw_set_cck_nil(struct + BEACON_RSSI(ah), ATH9K_ANI_RSSI_THR_LOW, + ATH9K_ANI_RSSI_THR_HIGH); + ++ if (AR_SREV_9100(ah) && immunityLevel < ATH9K_ANI_CCK_DEF_LEVEL) ++ immunityLevel = ATH9K_ANI_CCK_DEF_LEVEL; ++ + if (ah->opmode == NL80211_IFTYPE_STATION && + BEACON_RSSI(ah) <= ATH9K_ANI_RSSI_THR_LOW && + immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI) |