diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-11-14 22:44:02 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-11-14 22:44:02 -0500 |
commit | d06fc1d9b5518582f4982f908e820f2303d1eece (patch) | |
tree | 969d1ccf3cc47e8fe1c2154f75502cf9b67e9402 /net/mac80211 | |
parent | 99fee6d7e5748d96884667a4628118f7fc130ea0 (diff) | |
parent | 66fbb541a5d2d58fdae21c1e7b558a75bfbd483f (diff) |
Merge branch 'fixes-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 2 | ||||
-rw-r--r-- | net/mac80211/ieee80211_sta.c | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index b4e32ab3664d..72e1c93dd87e 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -242,6 +242,8 @@ struct ieee80211_if_sta { | |||
242 | u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN]; | 242 | u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN]; |
243 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | 243 | u8 ssid[IEEE80211_MAX_SSID_LEN]; |
244 | size_t ssid_len; | 244 | size_t ssid_len; |
245 | u8 scan_ssid[IEEE80211_MAX_SSID_LEN]; | ||
246 | size_t scan_ssid_len; | ||
245 | u16 aid; | 247 | u16 aid; |
246 | u16 ap_capab, capab; | 248 | u16 ap_capab, capab; |
247 | u8 *extra_ie; /* to be added to the end of AssocReq */ | 249 | u8 *extra_ie; /* to be added to the end of AssocReq */ |
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c index 2079e988fc56..015b3f879aa9 100644 --- a/net/mac80211/ieee80211_sta.c +++ b/net/mac80211/ieee80211_sta.c | |||
@@ -2002,7 +2002,10 @@ void ieee80211_sta_work(struct work_struct *work) | |||
2002 | if (ifsta->state != IEEE80211_AUTHENTICATE && | 2002 | if (ifsta->state != IEEE80211_AUTHENTICATE && |
2003 | ifsta->state != IEEE80211_ASSOCIATE && | 2003 | ifsta->state != IEEE80211_ASSOCIATE && |
2004 | test_and_clear_bit(IEEE80211_STA_REQ_SCAN, &ifsta->request)) { | 2004 | test_and_clear_bit(IEEE80211_STA_REQ_SCAN, &ifsta->request)) { |
2005 | ieee80211_sta_start_scan(dev, NULL, 0); | 2005 | if (ifsta->scan_ssid_len) |
2006 | ieee80211_sta_start_scan(dev, ifsta->scan_ssid, ifsta->scan_ssid_len); | ||
2007 | else | ||
2008 | ieee80211_sta_start_scan(dev, NULL, 0); | ||
2006 | return; | 2009 | return; |
2007 | } | 2010 | } |
2008 | 2011 | ||
@@ -2872,6 +2875,9 @@ int ieee80211_sta_req_scan(struct net_device *dev, u8 *ssid, size_t ssid_len) | |||
2872 | return -EBUSY; | 2875 | return -EBUSY; |
2873 | } | 2876 | } |
2874 | 2877 | ||
2878 | ifsta->scan_ssid_len = ssid_len; | ||
2879 | if (ssid_len) | ||
2880 | memcpy(ifsta->scan_ssid, ssid, ssid_len); | ||
2875 | set_bit(IEEE80211_STA_REQ_SCAN, &ifsta->request); | 2881 | set_bit(IEEE80211_STA_REQ_SCAN, &ifsta->request); |
2876 | queue_work(local->hw.workqueue, &ifsta->work); | 2882 | queue_work(local->hw.workqueue, &ifsta->work); |
2877 | return 0; | 2883 | return 0; |