mirror of https://gitee.com/openkylin/linux.git
ath5k: do not re-run AGC calibration periodically
All other Atheros drivers run the AGC gain calibration and DC offset calibration only after reset. Running them periodically has caused stability issues on some (primarily AR2315/2413/5413/5414 based) devices, leading to messages such as: ath5k phy0: gain calibration timeout (2462MHz) ath5k phy0: calibration of channel 11 failed Related bug reports: https://dev.openwrt.org/ticket/10574 https://bugzilla.redhat.com/show_bug.cgi?id=795141 Signed-off-by: Felix Fietkau <nbd@openwrt.org> Acked-by: Nick Kossifidis <mickflemm@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
62e2c102cc
commit
5c17ddc4a0
|
@ -1871,31 +1871,15 @@ ath5k_hw_phy_calibrate(struct ath5k_hw *ah,
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* On full calibration do an AGC calibration and
|
/* On full calibration request a PAPD probe for
|
||||||
* request a PAPD probe for gainf calibration if
|
* gainf calibration if needed */
|
||||||
* needed */
|
if ((ah->ah_cal_mask & AR5K_CALIBRATION_FULL) &&
|
||||||
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,
|
/* Update noise floor */
|
||||||
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 */
|
|
||||||
if (!(ah->ah_cal_mask & AR5K_CALIBRATION_NF))
|
if (!(ah->ah_cal_mask & AR5K_CALIBRATION_NF))
|
||||||
ath5k_hw_update_noise_floor(ah);
|
ath5k_hw_update_noise_floor(ah);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue