ath9k_hw: do PA offset calibration only on longcal interval
The power detector adc offset calibration has to be done on 4 minutes interval (longcal * pa_skip_count). But the commit "ath9k_hw: fix a noise floor calibration related race condition" makes the PA calibration executed more frequently beased on nfcal_pending value. Running PAOffset calibration lesser than longcal interval doesn't help anything and the worse part is that it causes NF load timeouts and RX deaf conditions. In a very noisy environment, where the distance b/w AP & station is ~10 meter and running a downlink udp traffic with frequent background scan causes "Timeout while waiting for nf to load: AR_PHY_AGC_CONTROL=0x40d1a" and moves the chip into deaf state. This issue was originaly reported in Android platform where the network-manager application does bgscan more frequently on AR9271 chips. (AR9285 family usb device). Cc: stable@kernel.org Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
dc738cb6c5
commit
811ea256b3
1 changed files with 5 additions and 5 deletions
|
@ -679,10 +679,6 @@ static bool ar9002_hw_calibrate(struct ath_hw *ah,
|
||||||
|
|
||||||
/* Do NF cal only at longer intervals */
|
/* Do NF cal only at longer intervals */
|
||||||
if (longcal || nfcal_pending) {
|
if (longcal || nfcal_pending) {
|
||||||
/* Do periodic PAOffset Cal */
|
|
||||||
ar9002_hw_pa_cal(ah, false);
|
|
||||||
ar9002_hw_olc_temp_compensation(ah);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the value from the previous NF cal and update
|
* Get the value from the previous NF cal and update
|
||||||
* history buffer.
|
* history buffer.
|
||||||
|
@ -697,8 +693,12 @@ static bool ar9002_hw_calibrate(struct ath_hw *ah,
|
||||||
ath9k_hw_loadnf(ah, ah->curchan);
|
ath9k_hw_loadnf(ah, ah->curchan);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (longcal)
|
if (longcal) {
|
||||||
ath9k_hw_start_nfcal(ah, false);
|
ath9k_hw_start_nfcal(ah, false);
|
||||||
|
/* Do periodic PAOffset Cal */
|
||||||
|
ar9002_hw_pa_cal(ah, false);
|
||||||
|
ar9002_hw_olc_temp_compensation(ah);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return iscaldone;
|
return iscaldone;
|
||||||
|
|
Loading…
Reference in a new issue