36 lines
1.5 KiB
Diff
36 lines
1.5 KiB
Diff
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
|
|
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
|
|
@@ -423,6 +423,7 @@ int ath_beaconq_config(struct ath_softc
|
|
#define ATH_AP_SHORT_CALINTERVAL 100 /* 100 ms */
|
|
#define ATH_ANI_POLLINTERVAL_OLD 100 /* 100 ms */
|
|
#define ATH_ANI_POLLINTERVAL_NEW 1000 /* 1000 ms */
|
|
+#define ATH_LONG_CALINTERVAL_INT 1000 /* 1000 ms */
|
|
#define ATH_LONG_CALINTERVAL 30000 /* 30 seconds */
|
|
#define ATH_RESTART_CALINTERVAL 1200000 /* 20 minutes */
|
|
|
|
--- a/drivers/net/wireless/ath/ath9k/main.c
|
|
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
|
@@ -396,7 +396,12 @@ void ath_ani_calibrate(unsigned long dat
|
|
bool shortcal = false;
|
|
bool aniflag = false;
|
|
unsigned int timestamp = jiffies_to_msecs(jiffies);
|
|
- u32 cal_interval, short_cal_interval;
|
|
+ u32 cal_interval, short_cal_interval, long_cal_interval;
|
|
+
|
|
+ if (ah->caldata && ah->caldata->nfcal_interference)
|
|
+ long_cal_interval = ATH_LONG_CALINTERVAL_INT;
|
|
+ else
|
|
+ long_cal_interval = ATH_LONG_CALINTERVAL;
|
|
|
|
short_cal_interval = (ah->opmode == NL80211_IFTYPE_AP) ?
|
|
ATH_AP_SHORT_CALINTERVAL : ATH_STA_SHORT_CALINTERVAL;
|
|
@@ -408,7 +413,7 @@ void ath_ani_calibrate(unsigned long dat
|
|
ath9k_ps_wakeup(sc);
|
|
|
|
/* Long calibration runs independently of short calibration. */
|
|
- if ((timestamp - common->ani.longcal_timer) >= ATH_LONG_CALINTERVAL) {
|
|
+ if ((timestamp - common->ani.longcal_timer) >= long_cal_interval) {
|
|
longcal = true;
|
|
ath_print(common, ATH_DBG_ANI, "longcal @%lu\n", jiffies);
|
|
common->ani.longcal_timer = timestamp;
|