From 2d4a06d164e56b77c520ef7c0db81dcc17615a2f Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 8 Apr 2014 22:14:51 +0000 Subject: ath9k: fix some ANI related stability issues Signed-off-by: Felix Fietkau Backport of r40427 git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@40431 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/mac80211/patches/300-pending_work.patch | 27 +++++++++++++++------- .../patches/550-ath9k_entropy_from_adc.patch | 4 ++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch index 1da7941d21..a1af6c241a 100644 --- a/package/mac80211/patches/300-pending_work.patch +++ b/package/mac80211/patches/300-pending_work.patch @@ -1,3 +1,15 @@ +commit 93f310a38a1d81a4bc8fcd9bf29628bd721cf2ef +Author: Felix Fietkau +Date: Sun Apr 6 23:35:28 2014 +0200 + + ath9k_hw: reduce ANI firstep range for older chips + + Use 0-8 instead of 0-16, which is closer to the old implementation. + Also drop the overwrite of the firstep_low parameter to improve + stability. + + Signed-off-by: Felix Fietkau + commit 584d297fd29fb39c76af25ae74ff9d5fe74c8a14 Author: Helmut Schaa Date: Wed Mar 12 10:37:55 2014 +0100 @@ -4029,7 +4041,7 @@ Date: Thu Jan 23 20:06:34 2014 +0100 switch (cmd & ah->ani_function) { case ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION:{ -@@ -1008,42 +1004,11 @@ static bool ar5008_hw_ani_control_new(st +@@ -1008,42 +1004,9 @@ static bool ar5008_hw_ani_control_new(st case ATH9K_ANI_FIRSTEP_LEVEL:{ u32 level = param; @@ -4051,7 +4063,7 @@ Date: Thu Jan 23 20:06:34 2014 +0100 - value = ATH9K_SIG_FIRSTEP_SETTING_MIN; - if (value > ATH9K_SIG_FIRSTEP_SETTING_MAX) - value = ATH9K_SIG_FIRSTEP_SETTING_MAX; -+ value = level * 2; ++ value = level; REG_RMW_FIELD(ah, AR_PHY_FIND_SIG, - AR_PHY_FIND_SIG_FIRSTEP, - value); @@ -4068,14 +4080,13 @@ Date: Thu Jan 23 20:06:34 2014 +0100 - if (value2 > ATH9K_SIG_FIRSTEP_SETTING_MAX) - value2 = ATH9K_SIG_FIRSTEP_SETTING_MAX; - -+ AR_PHY_FIND_SIG_FIRSTEP, value); - REG_RMW_FIELD(ah, AR_PHY_FIND_SIG_LOW, +- REG_RMW_FIELD(ah, AR_PHY_FIND_SIG_LOW, - AR_PHY_FIND_SIG_FIRSTEP_LOW, value2); -+ AR_PHY_FIND_SIG_FIRSTEP_LOW, value); ++ AR_PHY_FIND_SIG_FIRSTEP, value); if (level != aniState->firstepLevel) { ath_dbg(common, ANI, -@@ -1060,7 +1025,7 @@ static bool ar5008_hw_ani_control_new(st +@@ -1060,7 +1023,7 @@ static bool ar5008_hw_ani_control_new(st aniState->firstepLevel, level, ATH9K_ANI_FIRSTEP_LVL, @@ -4084,7 +4095,7 @@ Date: Thu Jan 23 20:06:34 2014 +0100 aniState->iniDef.firstepLow); if (level > aniState->firstepLevel) ah->stats.ast_ani_stepup++; -@@ -1073,41 +1038,13 @@ static bool ar5008_hw_ani_control_new(st +@@ -1073,41 +1036,13 @@ static bool ar5008_hw_ani_control_new(st case ATH9K_ANI_SPUR_IMMUNITY_LEVEL:{ u32 level = param; @@ -4131,7 +4142,7 @@ Date: Thu Jan 23 20:06:34 2014 +0100 if (level != aniState->spurImmunityLevel) { ath_dbg(common, ANI, -@@ -1124,7 +1061,7 @@ static bool ar5008_hw_ani_control_new(st +@@ -1124,7 +1059,7 @@ static bool ar5008_hw_ani_control_new(st aniState->spurImmunityLevel, level, ATH9K_ANI_SPUR_IMMUNE_LVL, diff --git a/package/mac80211/patches/550-ath9k_entropy_from_adc.patch b/package/mac80211/patches/550-ath9k_entropy_from_adc.patch index d126fd4e94..b59c3624e1 100644 --- a/package/mac80211/patches/550-ath9k_entropy_from_adc.patch +++ b/package/mac80211/patches/550-ath9k_entropy_from_adc.patch @@ -124,7 +124,7 @@ long_cal_interval = ATH_LONG_CALINTERVAL_INT; --- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c +++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c -@@ -1233,9 +1233,30 @@ static void ar5008_hw_set_radar_conf(str +@@ -1231,9 +1231,30 @@ static void ar5008_hw_set_radar_conf(str conf->radar_inband = 8; } @@ -155,7 +155,7 @@ static const u32 ar5416_cca_regs[6] = { AR_PHY_CCA, AR_PHY_CH1_CCA, -@@ -1250,6 +1271,8 @@ int ar5008_hw_attach_phy_ops(struct ath_ +@@ -1248,6 +1269,8 @@ int ar5008_hw_attach_phy_ops(struct ath_ if (ret) return ret; -- cgit v1.2.3