Commit 14250640 authored by Oleksij Rempel's avatar Oleksij Rempel Committed by Kalle Valo

ath9k_htc: do ani shortcalibratio if we got -ETIMEDOUT

current code will handle -ETIMEDOUT as success which is probalbly wrong.

According to this comment I assume it is safe to handle -ETIMEDOUT as false:
drivers/net/wireless/ath/ath9k/calib.c
290         /*
291          * We timed out waiting for the noisefloor to load, probably due to an
292          * in-progress rx. Simply return here and allow the load plenty of time
293          * to complete before the next calibration interval.  We need to avoid
294          * trying to load -50 (which happens below) while the previous load is
295          * still in progress as this can cause rx deafness. Instead by returning
296          * here, the baseband nf cal will just be capped by our present
297          * noisefloor until the next calibration timer.
298          */

Since no other error wariants are present, this patch is checking only
for (ret <= 0).
Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarOleksij Rempel <linux@rempel-privat.de>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 11c36537
...@@ -794,8 +794,11 @@ void ath9k_htc_ani_work(struct work_struct *work) ...@@ -794,8 +794,11 @@ void ath9k_htc_ani_work(struct work_struct *work)
common->ani.longcal_timer = timestamp; common->ani.longcal_timer = timestamp;
} }
/* Short calibration applies only while caldone is false */ /*
if (!common->ani.caldone) { * Short calibration applies only while caldone
* is false or -ETIMEDOUT
*/
if (common->ani.caldone <= 0) {
if ((timestamp - common->ani.shortcal_timer) >= if ((timestamp - common->ani.shortcal_timer) >=
short_cal_interval) { short_cal_interval) {
shortcal = true; shortcal = true;
...@@ -844,7 +847,11 @@ void ath9k_htc_ani_work(struct work_struct *work) ...@@ -844,7 +847,11 @@ void ath9k_htc_ani_work(struct work_struct *work)
*/ */
cal_interval = ATH_LONG_CALINTERVAL; cal_interval = ATH_LONG_CALINTERVAL;
cal_interval = min(cal_interval, (u32)ATH_ANI_POLLINTERVAL); cal_interval = min(cal_interval, (u32)ATH_ANI_POLLINTERVAL);
if (!common->ani.caldone) /*
* Short calibration applies only while caldone
* is false or -ETIMEDOUT
*/
if (common->ani.caldone <= 0)
cal_interval = min(cal_interval, (u32)short_cal_interval); cal_interval = min(cal_interval, (u32)short_cal_interval);
ieee80211_queue_delayed_work(common->hw, &priv->ani_work, ieee80211_queue_delayed_work(common->hw, &priv->ani_work,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment