diff options
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/wext-sme.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/net/wireless/wext-sme.c b/net/wireless/wext-sme.c index 7bacbd1c2af..e4a054aceb5 100644 --- a/net/wireless/wext-sme.c +++ b/net/wireless/wext-sme.c | |||
@@ -206,7 +206,15 @@ int cfg80211_mgd_wext_giwessid(struct net_device *dev, | |||
206 | data->flags = 0; | 206 | data->flags = 0; |
207 | 207 | ||
208 | wdev_lock(wdev); | 208 | wdev_lock(wdev); |
209 | if (wdev->wext.connect.ssid && wdev->wext.connect.ssid_len) { | 209 | if (wdev->current_bss) { |
210 | const u8 *ie = ieee80211_bss_get_ie(&wdev->current_bss->pub, | ||
211 | WLAN_EID_SSID); | ||
212 | if (ie) { | ||
213 | data->flags = 1; | ||
214 | data->length = ie[1]; | ||
215 | memcpy(ssid, ie + 2, data->length); | ||
216 | } | ||
217 | } else if (wdev->wext.connect.ssid && wdev->wext.connect.ssid_len) { | ||
210 | data->flags = 1; | 218 | data->flags = 1; |
211 | data->length = wdev->wext.connect.ssid_len; | 219 | data->length = wdev->wext.connect.ssid_len; |
212 | memcpy(ssid, wdev->wext.connect.ssid, data->length); | 220 | memcpy(ssid, wdev->wext.connect.ssid, data->length); |