mirror of https://gitee.com/openkylin/linux.git
mac80211: Allow scanning on existing channel-type.
Previous code set the channel type to NO_HT, but it appears that NO_HT packets can be sent on any channel type, so we do not need to change the channel type as long as the channel is correct. Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
4d51e149a6
commit
4f2e9d91f8
|
@ -112,7 +112,13 @@ bool ieee80211_cfg_on_oper_channel(struct ieee80211_local *local)
|
|||
/* This logic needs to match logic in ieee80211_hw_config */
|
||||
if (local->scan_channel) {
|
||||
chan = local->scan_channel;
|
||||
channel_type = NL80211_CHAN_NO_HT;
|
||||
/* If scanning on oper channel, use whatever channel-type
|
||||
* is currently in use.
|
||||
*/
|
||||
if (chan == local->oper_channel)
|
||||
channel_type = local->_oper_channel_type;
|
||||
else
|
||||
channel_type = NL80211_CHAN_NO_HT;
|
||||
} else if (local->tmp_channel) {
|
||||
chan = scan_chan = local->tmp_channel;
|
||||
channel_type = local->tmp_channel_type;
|
||||
|
@ -151,7 +157,13 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
|
|||
offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
|
||||
if (scan_chan) {
|
||||
chan = scan_chan;
|
||||
channel_type = NL80211_CHAN_NO_HT;
|
||||
/* If scanning on oper channel, use whatever channel-type
|
||||
* is currently in use.
|
||||
*/
|
||||
if (chan == local->oper_channel)
|
||||
channel_type = local->_oper_channel_type;
|
||||
else
|
||||
channel_type = NL80211_CHAN_NO_HT;
|
||||
} else if (local->tmp_channel) {
|
||||
chan = scan_chan = local->tmp_channel;
|
||||
channel_type = local->tmp_channel_type;
|
||||
|
|
|
@ -517,8 +517,7 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local,
|
|||
|
||||
if (ieee80211_cfg_on_oper_channel(local)) {
|
||||
/* We're currently on operating channel. */
|
||||
if ((next_chan == local->oper_channel) &&
|
||||
(local->_oper_channel_type == NL80211_CHAN_NO_HT))
|
||||
if (next_chan == local->oper_channel)
|
||||
/* We don't need to move off of operating channel. */
|
||||
local->next_scan_state = SCAN_SET_CHANNEL;
|
||||
else
|
||||
|
@ -620,8 +619,7 @@ static void ieee80211_scan_state_set_channel(struct ieee80211_local *local,
|
|||
local->scan_channel = chan;
|
||||
|
||||
/* Only call hw-config if we really need to change channels. */
|
||||
if ((chan != local->hw.conf.channel) ||
|
||||
(local->hw.conf.channel_type != NL80211_CHAN_NO_HT))
|
||||
if (chan != local->hw.conf.channel)
|
||||
if (ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL))
|
||||
skip = 1;
|
||||
|
||||
|
|
Loading…
Reference in New Issue