diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-06-04 13:42:39 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-06-04 13:42:39 +0000 |
commit | 049b4337f5585c4a007a219a72532d455d3f3e7c (patch) | |
tree | b2ff76fecedd24bfd90065f4109180a5939751ae /package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch | |
parent | 5bfb119980ceb2dd15b7492af9aaddf52a3e3e82 (diff) |
ath9k: fix ANI weak signal detection handling
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32045 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch')
-rw-r--r-- | package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch b/package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch new file mode 100644 index 000000000..bfe0f0b46 --- /dev/null +++ b/package/mac80211/patches/571-ath9k_ani_fix_weak_sig.patch @@ -0,0 +1,30 @@ +--- a/drivers/net/wireless/ath/ath9k/ani.c ++++ b/drivers/net/wireless/ath/ath9k/ani.c +@@ -265,6 +265,7 @@ static void ath9k_hw_set_ofdm_nil(struct + struct ath_common *common = ath9k_hw_common(ah); + const struct ani_ofdm_level_entry *entry_ofdm; + const struct ani_cck_level_entry *entry_cck; ++ bool weak_sig; + + ath_dbg(common, ANI, "**** ofdmlevel %d=>%d, rssi=%d[lo=%d hi=%d]\n", + aniState->ofdmNoiseImmunityLevel, +@@ -290,13 +291,15 @@ static void ath9k_hw_set_ofdm_nil(struct + ATH9K_ANI_FIRSTEP_LEVEL, + entry_ofdm->fir_step_level); + +- if (BEACON_RSSI(ah) >= aniState->rssiThrHigh && +- (!aniState->ofdmWeakSigDetectOff != +- entry_ofdm->ofdm_weak_signal_on)) { ++ weak_sig = entry_ofdm->ofdm_weak_signal_on; ++ if (ah->opmode == NL80211_IFTYPE_STATION && ++ BEACON_RSSI(ah) >= aniState->rssiThrHigh) ++ weak_sig = true; ++ ++ if (!aniState->ofdmWeakSigDetectOff != weak_sig) + ath9k_hw_ani_control(ah, + ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION, + entry_ofdm->ofdm_weak_signal_on); +- } + } + + static void ath9k_hw_ani_ofdm_err_trigger(struct ath_hw *ah) |