]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
ath5k: do not stop queues for full calibration
authorFelix Fietkau <nbd@openwrt.org>
Tue, 6 Mar 2012 10:06:37 +0000 (11:06 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 6 Mar 2012 20:16:17 +0000 (15:16 -0500)
Some calibration types interfere with tx activity, but the queue stop does
not prevent that. In fact, some calibration types need tx activity to properly
function, so stopping the queues for them is counterproductive.
In some tests this patch has been shown to improve stability, especially in
AP or ad-hoc mode.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/base.c

index b51d58c414d282a1172531e3fcc3fc07ab3c00ba..0e643b016b3286a12d80e040a7d399914468f8fb 100644 (file)
@@ -2332,15 +2332,6 @@ ath5k_calibrate_work(struct work_struct *work)
                                        "got new rfgain, resetting\n");
                        ieee80211_queue_work(ah->hw, &ah->reset_work);
                }
-
-               /* TODO: On full calibration we should stop TX here,
-                * so that it doesn't interfere (mostly due to gain_f
-                * calibration that messes with tx packets -see phy.c).
-                *
-                * NOTE: Stopping the queues from above is not enough
-                * to stop TX but saves us from disconecting (at least
-                * we don't lose packets). */
-               ieee80211_stop_queues(ah->hw);
        } else
                ah->ah_cal_mask |= AR5K_CALIBRATION_SHORT;
 
@@ -2355,10 +2346,9 @@ ath5k_calibrate_work(struct work_struct *work)
                                ah->curchan->center_freq));
 
        /* Clear calibration flags */
-       if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL) {
-               ieee80211_wake_queues(ah->hw);
+       if (ah->ah_cal_mask & AR5K_CALIBRATION_FULL)
                ah->ah_cal_mask &= ~AR5K_CALIBRATION_FULL;
-       else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT)
+       else if (ah->ah_cal_mask & AR5K_CALIBRATION_SHORT)
                ah->ah_cal_mask &= ~AR5K_CALIBRATION_SHORT;
 }