aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-02-17 22:15:33 +0000
committerFelix Fietkau <nbd@openwrt.org>2012-02-17 22:15:33 +0000
commit65ac3f605dd8157aa0e2823f289ee8c49a86e478 (patch)
tree291a39a8a6e9795d0215e53e66ee24887c0759a5
parentde28901e44337a0975265a519c3d91fd71b02f5b (diff)
downloadupstream-65ac3f605dd8157aa0e2823f289ee8c49a86e478.tar.gz
upstream-65ac3f605dd8157aa0e2823f289ee8c49a86e478.tar.bz2
upstream-65ac3f605dd8157aa0e2823f289ee8c49a86e478.zip
ath5k: do not re-run AGC calibration periodically - fixes stability issues on AR2315 (#10574)
SVN-Revision: 30624
-rw-r--r--package/mac80211/patches/441-ath5k_no_agc_recalibration.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/package/mac80211/patches/441-ath5k_no_agc_recalibration.patch b/package/mac80211/patches/441-ath5k_no_agc_recalibration.patch
new file mode 100644
index 0000000000..87d0743d32
--- /dev/null
+++ b/package/mac80211/patches/441-ath5k_no_agc_recalibration.patch
@@ -0,0 +1,42 @@
+--- a/drivers/net/wireless/ath/ath5k/phy.c
++++ b/drivers/net/wireless/ath/ath5k/phy.c
+@@ -1871,31 +1871,15 @@ ath5k_hw_phy_calibrate(struct ath5k_hw *
+ ret = 0;
+ }
+
+- /* On full calibration do an AGC calibration and
+- * request a PAPD probe for gainf calibration if
+- * needed */
+- if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) {
++ /* On full calibration request a PAPD probe for
++ * gainf calibration if needed */
++ if ((ah->ah_cal_mask & AR5K_CALIBRATION_FULL) &&
++ (ah->ah_radio == AR5K_RF5111 ||
++ ah->ah_radio == AR5K_RF5112) &&
++ channel->hw_value != AR5K_MODE_11B)
++ ath5k_hw_request_rfgain_probe(ah);
+
+- AR5K_REG_ENABLE_BITS(ah, AR5K_PHY_AGCCTL,
+- AR5K_PHY_AGCCTL_CAL);
+-
+- ret = ath5k_hw_register_timeout(ah, AR5K_PHY_AGCCTL,
+- AR5K_PHY_AGCCTL_CAL | AR5K_PHY_AGCCTL_NF,
+- 0, false);
+- if (ret) {
+- ATH5K_ERR(ah,
+- "gain calibration timeout (%uMHz)\n",
+- channel->center_freq);
+- }
+-
+- if ((ah->ah_radio == AR5K_RF5111 ||
+- ah->ah_radio == AR5K_RF5112)
+- && (channel->hw_value != AR5K_MODE_11B))
+- ath5k_hw_request_rfgain_probe(ah);
+- }
+-
+- /* Update noise floor
+- * XXX: Only do this after AGC calibration */
++ /* Update noise floor */
+ if (!(ah->ah_cal_mask & AR5K_CALIBRATION_NF))
+ ath5k_hw_update_noise_floor(ah);
+