diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-11-02 13:32:03 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-11-02 15:43:29 -0500 |
commit | 584991dccfd347cd2e1675ab262998f6c335d3c0 (patch) | |
tree | 0cb52e1f06e587561f0e06e1beae7de7faaf5528 /net/mac80211 | |
parent | 6c085227bd7168fd84976479218f81bf35b5acd7 (diff) | |
download | op-kernel-dev-584991dccfd347cd2e1675ab262998f6c335d3c0.zip op-kernel-dev-584991dccfd347cd2e1675ab262998f6c335d3c0.tar.gz |
cfg80211: validate scan channels
Currently it is possible to request a scan on only
disabled channels, which could be problematic for
some drivers. Reject such scans, and also ignore
disabled channels that are given. This resuls in
the scan begin/end event only including channels
that are actually used.
This makes the mac80211 check for disabled channels
superfluous. At the same time, remove the no-IBSS
check from mac80211 -- nothing says that we should
not find any networks on channels that cannot be
used for an IBSS, even when operating in IBSS mode.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/scan.c | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index 88a9a1b..4cf387c 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c @@ -614,23 +614,14 @@ static void ieee80211_scan_state_set_channel(struct ieee80211_local *local, { int skip; struct ieee80211_channel *chan; - struct ieee80211_sub_if_data *sdata = local->scan_sdata; skip = 0; chan = local->scan_req->channels[local->scan_channel_idx]; - if (chan->flags & IEEE80211_CHAN_DISABLED || - (sdata->vif.type == NL80211_IFTYPE_ADHOC && - chan->flags & IEEE80211_CHAN_NO_IBSS)) + local->scan_channel = chan; + if (ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL)) skip = 1; - if (!skip) { - local->scan_channel = chan; - if (ieee80211_hw_config(local, - IEEE80211_CONF_CHANGE_CHANNEL)) - skip = 1; - } - /* advance state machine to next channel/band */ local->scan_channel_idx++; |