aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath5k/base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/base.c')
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index a339693fbe26..0e643b016b32 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1867,7 +1867,8 @@ ath5k_beacon_send(struct ath5k_hw *ah)
1867 ah->bmisscount = 0; 1867 ah->bmisscount = 0;
1868 } 1868 }
1869 1869
1870 if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs > 1) || 1870 if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs +
1871 ah->num_mesh_vifs > 1) ||
1871 ah->opmode == NL80211_IFTYPE_MESH_POINT) { 1872 ah->opmode == NL80211_IFTYPE_MESH_POINT) {
1872 u64 tsf = ath5k_hw_get_tsf64(ah); 1873 u64 tsf = ath5k_hw_get_tsf64(ah);
1873 u32 tsftu = TSF_TO_TU(tsf); 1874 u32 tsftu = TSF_TO_TU(tsf);
@@ -1952,7 +1953,8 @@ ath5k_beacon_update_timers(struct ath5k_hw *ah, u64 bc_tsf)
1952 u64 hw_tsf; 1953 u64 hw_tsf;
1953 1954
1954 intval = ah->bintval & AR5K_BEACON_PERIOD; 1955 intval = ah->bintval & AR5K_BEACON_PERIOD;
1955 if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs > 1) { 1956 if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs
1957 + ah->num_mesh_vifs > 1) {
1956 intval /= ATH_BCBUF; /* staggered multi-bss beacons */ 1958 intval /= ATH_BCBUF; /* staggered multi-bss beacons */
1957 if (intval < 15) 1959 if (intval < 15)
1958 ATH5K_WARN(ah, "intval %u is too low, min 15\n", 1960 ATH5K_WARN(ah, "intval %u is too low, min 15\n",
@@ -2330,15 +2332,6 @@ ath5k_calibrate_work(struct work_struct *work)
2330 "got new rfgain, resetting\n"); 2332 "got new rfgain, resetting\n");
2331 ieee80211_queue_work(ah->hw, &ah->reset_work); 2333 ieee80211_queue_work(ah->hw, &ah->reset_work);
2332 } 2334 }
2333
2334 /* TODO: On full calibration we should stop TX here,
2335 * so that it doesn't interfere (mostly due to gain_f
2336 * calibration that messes with tx packets -see phy.c).
2337 *
2338 * NOTE: Stopping the queues from above is not enough
2339 * to stop TX but saves us from disconecting (at least
2340 * we don't lose packets). */
2341 ieee80211_stop_queues(ah->hw);
2342 } else 2335 } else
2343 ah->ah_cal_mask |= AR5K_CALIBRATION_SHORT; 2336 ah->ah_cal_mask |= AR5K_CALIBRATION_SHORT;
2344 2337
@@ -2353,10 +2346,9 @@ ath5k_calibrate_work(struct work_struct *work)
2353 ah->curchan->center_freq)); 2346 ah->curchan->center_freq));
2354 2347
2355 /* Clear calibration flags */ 2348 /* Clear calibration flags */
2356 if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) { 2349 if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL)
2357 ieee80211_wake_queues(ah->hw);
2358 ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL; 2350 ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL;
2359 } else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT) 2351 else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT)
2360 ah->ah_cal_mask &= ~AR5K_CALIBRATION_SHORT; 2352 ah->ah_cal_mask &= ~AR5K_CALIBRATION_SHORT;
2361} 2353}
2362 2354