mirror of
https://github.com/torvalds/linux.git
synced 2024-12-21 10:31:54 +00:00
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: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Oleksij Rempel <linux@rempel-privat.de> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
11c3653705
commit
14250640cd
@ -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 @@ set_timer:
|
|||||||
*/
|
*/
|
||||||
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,
|
||||||
|
Loading…
Reference in New Issue
Block a user