diff options
author | Bruno Randolf <br1@einfach.org> | 2010-05-18 21:31:05 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-02 16:13:23 -0400 |
commit | 0e8e02dddc528f1c650ba13bb3b61e818c39dd2f (patch) | |
tree | c29a2c6f9932358831caf1efb452a64894690c4d /drivers/net/wireless/ath/ath5k/base.c | |
parent | 9e04a7eb1fdf37bc8bc0d0f59e5fb737926f0152 (diff) |
ath5k: Stop queues only for NF calibration
As far as we know, only NF calibration interferes with RX/TX so we can
leave the queues enabled for the other calibrations.
BTW: Stopping the queues is not enough for avoiding transmissions, since there
might be packets in the queue + beacons are also sent regularly! But i leave it
like this until we have a better solution (stopping TX DMA?).
Signed-off-by: Bruno Randolf <br1@einfach.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath5k/base.c')
-rw-r--r-- | drivers/net/wireless/ath/ath5k/base.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 3d854f0853ac..78a0c420c494 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
@@ -2786,10 +2786,6 @@ ath5k_tasklet_calibrate(unsigned long data) | |||
2786 | /* Only full calibration for now */ | 2786 | /* Only full calibration for now */ |
2787 | ah->ah_cal_mask |= AR5K_CALIBRATION_FULL; | 2787 | ah->ah_cal_mask |= AR5K_CALIBRATION_FULL; |
2788 | 2788 | ||
2789 | /* Stop queues so that calibration | ||
2790 | * doesn't interfere with tx */ | ||
2791 | ieee80211_stop_queues(sc->hw); | ||
2792 | |||
2793 | ATH5K_DBG(sc, ATH5K_DEBUG_CALIBRATE, "channel %u/%x\n", | 2789 | ATH5K_DBG(sc, ATH5K_DEBUG_CALIBRATE, "channel %u/%x\n", |
2794 | ieee80211_frequency_to_channel(sc->curchan->center_freq), | 2790 | ieee80211_frequency_to_channel(sc->curchan->center_freq), |
2795 | sc->curchan->hw_value); | 2791 | sc->curchan->hw_value); |
@@ -2807,8 +2803,13 @@ ath5k_tasklet_calibrate(unsigned long data) | |||
2807 | ieee80211_frequency_to_channel( | 2803 | ieee80211_frequency_to_channel( |
2808 | sc->curchan->center_freq)); | 2804 | sc->curchan->center_freq)); |
2809 | 2805 | ||
2806 | /* TODO: We don't need to run noise floor calibration as often | ||
2807 | * as I/Q calibration.*/ | ||
2808 | |||
2809 | /* Noise floor calibration interrupts rx/tx path while I/Q calibration | ||
2810 | * doesn't. Stop queues so that calibration doesn't interfere with tx */ | ||
2811 | ieee80211_stop_queues(sc->hw); | ||
2810 | ath5k_hw_update_noise_floor(ah); | 2812 | ath5k_hw_update_noise_floor(ah); |
2811 | /* Wake queues */ | ||
2812 | ieee80211_wake_queues(sc->hw); | 2813 | ieee80211_wake_queues(sc->hw); |
2813 | 2814 | ||
2814 | ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL; | 2815 | ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL; |