diff options
author | Felix Fietkau <nbd@openwrt.org> | 2012-02-17 22:15:33 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2012-02-17 22:15:33 +0000 |
commit | 65ac3f605dd8157aa0e2823f289ee8c49a86e478 (patch) | |
tree | 291a39a8a6e9795d0215e53e66ee24887c0759a5 /package/mac80211/patches | |
parent | de28901e44337a0975265a519c3d91fd71b02f5b (diff) | |
download | master-31e0f0ae-65ac3f605dd8157aa0e2823f289ee8c49a86e478.tar.gz master-31e0f0ae-65ac3f605dd8157aa0e2823f289ee8c49a86e478.tar.bz2 master-31e0f0ae-65ac3f605dd8157aa0e2823f289ee8c49a86e478.zip |
ath5k: do not re-run AGC calibration periodically - fixes stability issues on AR2315 (#10574)
SVN-Revision: 30624
Diffstat (limited to 'package/mac80211/patches')
-rw-r--r-- | package/mac80211/patches/441-ath5k_no_agc_recalibration.patch | 42 |
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); + |