diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-02-17 22:15:33 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-02-17 22:15:33 +0000 |
commit | 0a4428a71bd9e3be626acd524a51ac0b917c6755 (patch) | |
tree | 71261b947e4c28a657a5d9e698b574e2e915bd6e /package/mac80211/patches/441-ath5k_no_agc_recalibration.patch | |
parent | cb64c407c7199669817a0f13b0e95e406898d598 (diff) |
ath5k: do not re-run AGC calibration periodically - fixes stability issues on AR2315 (#10574)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30624 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches/441-ath5k_no_agc_recalibration.patch')
-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 000000000..87d0743d3 --- /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); + |