aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-11-18 14:14:44 -0500
committerJohn W. Linville <linville@tuxdriver.com>2013-12-02 14:25:00 -0500
commitaf02efb32e34938aecce5362b0cdb70e4d18e846 (patch)
tree7ac3fa83884e50098d78d6f27ae8ce3382c6bdd6
parent09d8e315d90a70eb1096d68f27be04d6c43724f3 (diff)
ath9k_hw: allow fast channel change when only CHANNEL_HT changes
The CHANNEL_HT flag is insignificant for fast channel change conditions, since it does not affect any important part of the hardware reset / channel setup. Scanning usually runs with HT disabled, so this change will slightly improve scan time on many chipsets. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 02eff2a8a280..fe3537f6ec58 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1502,8 +1502,9 @@ static bool ath9k_hw_channel_change(struct ath_hw *ah,
1502 int r; 1502 int r;
1503 1503
1504 if (pCap->hw_caps & ATH9K_HW_CAP_FCC_BAND_SWITCH) { 1504 if (pCap->hw_caps & ATH9K_HW_CAP_FCC_BAND_SWITCH) {
1505 band_switch = IS_CHAN_5GHZ(ah->curchan) != IS_CHAN_5GHZ(chan); 1505 u32 flags_diff = chan->channelFlags ^ ah->curchan->channelFlags;
1506 mode_diff = (chan->channelFlags != ah->curchan->channelFlags); 1506 band_switch = !!(flags_diff & CHANNEL_5GHZ);
1507 mode_diff = !!(flags_diff & ~CHANNEL_HT);
1507 } 1508 }
1508 1509
1509 for (qnum = 0; qnum < AR_NUM_QCU; qnum++) { 1510 for (qnum = 0; qnum < AR_NUM_QCU; qnum++) {
@@ -1815,7 +1816,7 @@ static int ath9k_hw_do_fastcc(struct ath_hw *ah, struct ath9k_channel *chan)
1815 * If cross-band fcc is not supoprted, bail out if channelFlags differ. 1816 * If cross-band fcc is not supoprted, bail out if channelFlags differ.
1816 */ 1817 */
1817 if (!(pCap->hw_caps & ATH9K_HW_CAP_FCC_BAND_SWITCH) && 1818 if (!(pCap->hw_caps & ATH9K_HW_CAP_FCC_BAND_SWITCH) &&
1818 chan->channelFlags != ah->curchan->channelFlags) 1819 ((chan->channelFlags ^ ah->curchan->channelFlags) & ~CHANNEL_HT))
1819 goto fail; 1820 goto fail;
1820 1821
1821 if (!ath9k_hw_check_alive(ah)) 1822 if (!ath9k_hw_check_alive(ah))