aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-10-27 15:59:55 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-10-30 16:49:19 -0400
commit4d36ec58239eec44d77839ef6c25108efcbbb58c (patch)
tree7074195389af214ba0081169afb4b64514f2419a /net/mac80211/ieee80211_i.h
parentb59f04cbf8ab4dce63f0d2ed658624b0ad21c67d (diff)
mac80211: split hardware scan by band
There's currently a very odd bug in mac80211 -- a hardware scan that is done while the hardware is really operating on 2.4 GHz will include CCK rates in the probe request frame, even on 5 GHz (if the driver uses the mac80211 IEs). Vice versa, if the hardware is operating on 5 GHz the 2.4 GHz probe requests will not include CCK rates even though they should. Fix this by splitting up cfg80211 scan requests by band -- recalculating the IEs every time -- and requesting only per-band scans from the driver. Apparently this bug hasn't been a problem yet, but it is imaginable that some older access points get confused if confronted with such behaviour. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 60c2822802f0..6365079e6375 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -667,10 +667,9 @@ struct ieee80211_local {
667 unsigned long scanning; 667 unsigned long scanning;
668 struct cfg80211_ssid scan_ssid; 668 struct cfg80211_ssid scan_ssid;
669 struct cfg80211_scan_request *int_scan_req; 669 struct cfg80211_scan_request *int_scan_req;
670 struct cfg80211_scan_request *scan_req; 670 struct cfg80211_scan_request *scan_req, *hw_scan_req;
671 struct ieee80211_channel *scan_channel; 671 struct ieee80211_channel *scan_channel;
672 const u8 *orig_ies; 672 enum ieee80211_band hw_scan_band;
673 int orig_ies_len;
674 int scan_channel_idx; 673 int scan_channel_idx;
675 int scan_ies_len; 674 int scan_ies_len;
676 675
@@ -1050,7 +1049,8 @@ void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata,
1050 u8 *extra, size_t extra_len, const u8 *bssid, 1049 u8 *extra, size_t extra_len, const u8 *bssid,
1051 const u8 *key, u8 key_len, u8 key_idx); 1050 const u8 *key, u8 key_len, u8 key_idx);
1052int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer, 1051int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer,
1053 const u8 *ie, size_t ie_len); 1052 const u8 *ie, size_t ie_len,
1053 enum ieee80211_band band);
1054void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, 1054void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst,
1055 const u8 *ssid, size_t ssid_len, 1055 const u8 *ssid, size_t ssid_len,
1056 const u8 *ie, size_t ie_len); 1056 const u8 *ie, size_t ie_len);