| 1 | --- a/drivers/net/wireless/ath/ath5k/phy.c |
| 2 | +++ b/drivers/net/wireless/ath/ath5k/phy.c |
| 3 | @@ -1871,31 +1871,15 @@ ath5k_hw_phy_calibrate(struct ath5k_hw * |
| 4 | ret = 0; |
| 5 | } |
| 6 | |
| 7 | - /* On full calibration do an AGC calibration and |
| 8 | - * request a PAPD probe for gainf calibration if |
| 9 | - * needed */ |
| 10 | - if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) { |
| 11 | + /* On full calibration request a PAPD probe for |
| 12 | + * gainf calibration if needed */ |
| 13 | + if ((ah->ah_cal_mask & AR5K_CALIBRATION_FULL) && |
| 14 | + (ah->ah_radio == AR5K_RF5111 || |
| 15 | + ah->ah_radio == AR5K_RF5112) && |
| 16 | + channel->hw_value != AR5K_MODE_11B) |
| 17 | + ath5k_hw_request_rfgain_probe(ah); |
| 18 | |
| 19 | - AR5K_REG_ENABLE_BITS(ah, AR5K_PHY_AGCCTL, |
| 20 | - AR5K_PHY_AGCCTL_CAL); |
| 21 | - |
| 22 | - ret = ath5k_hw_register_timeout(ah, AR5K_PHY_AGCCTL, |
| 23 | - AR5K_PHY_AGCCTL_CAL | AR5K_PHY_AGCCTL_NF, |
| 24 | - 0, false); |
| 25 | - if (ret) { |
| 26 | - ATH5K_ERR(ah, |
| 27 | - "gain calibration timeout (%uMHz)\n", |
| 28 | - channel->center_freq); |
| 29 | - } |
| 30 | - |
| 31 | - if ((ah->ah_radio == AR5K_RF5111 || |
| 32 | - ah->ah_radio == AR5K_RF5112) |
| 33 | - && (channel->hw_value != AR5K_MODE_11B)) |
| 34 | - ath5k_hw_request_rfgain_probe(ah); |
| 35 | - } |
| 36 | - |
| 37 | - /* Update noise floor |
| 38 | - * XXX: Only do this after AGC calibration */ |
| 39 | + /* Update noise floor */ |
| 40 | if (!(ah->ah_cal_mask & AR5K_CALIBRATION_NF)) |
| 41 | ath5k_hw_update_noise_floor(ah); |
| 42 | |
| 43 | |