1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- From: Felix Fietkau <[email protected]>
- Date: Sat, 18 Oct 2014 13:39:11 +0200
- Subject: [PATCH] ath9k_hw: do not run NF and periodic calibration at the
- same time
- It can cause inconsistent calibration results or in some cases turn the
- radio deaf.
- Signed-off-by: Felix Fietkau <[email protected]>
- ---
- --- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c
- +++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c
- @@ -660,7 +660,6 @@ static void ar9002_hw_olc_temp_compensat
- static int ar9002_hw_calibrate(struct ath_hw *ah, struct ath9k_channel *chan,
- u8 rxchainmask, bool longcal)
- {
- - bool iscaldone = true;
- struct ath9k_cal_list *currCal = ah->cal_list_curr;
- bool nfcal, nfcal_pending = false;
- int ret;
- @@ -672,15 +671,13 @@ static int ar9002_hw_calibrate(struct at
- if (currCal && !nfcal &&
- (currCal->calState == CAL_RUNNING ||
- currCal->calState == CAL_WAITING)) {
- - iscaldone = ar9002_hw_per_calibration(ah, chan,
- - rxchainmask, currCal);
- - if (iscaldone) {
- - ah->cal_list_curr = currCal = currCal->calNext;
- -
- - if (currCal->calState == CAL_WAITING) {
- - iscaldone = false;
- - ath9k_hw_reset_calibration(ah, currCal);
- - }
- + if (!ar9002_hw_per_calibration(ah, chan, rxchainmask, currCal))
- + return 0;
- +
- + ah->cal_list_curr = currCal = currCal->calNext;
- + if (currCal->calState == CAL_WAITING) {
- + ath9k_hw_reset_calibration(ah, currCal);
- + return 0;
- }
- }
-
- @@ -710,7 +707,7 @@ static int ar9002_hw_calibrate(struct at
- }
- }
-
- - return iscaldone;
- + return 1;
- }
-
- /* Carrier leakage Calibration fix */
|