diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-11-18 14:14:44 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-12-02 14:25:00 -0500 |
commit | af02efb32e34938aecce5362b0cdb70e4d18e846 (patch) | |
tree | 7ac3fa83884e50098d78d6f27ae8ce3382c6bdd6 | |
parent | 09d8e315d90a70eb1096d68f27be04d6c43724f3 (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.c | 7 |
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)) |