diff options
Diffstat (limited to 'net/mac80211/ieee80211_sta.c')
| -rw-r--r-- | net/mac80211/ieee80211_sta.c | 8 |
1 files changed, 7 insertions, 1 deletions
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; |
