diff options
Diffstat (limited to 'net/wireless/wext-sme.c')
| -rw-r--r-- | net/wireless/wext-sme.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/net/wireless/wext-sme.c b/net/wireless/wext-sme.c index 1f773f668d1a..fb9622f6d99c 100644 --- a/net/wireless/wext-sme.c +++ b/net/wireless/wext-sme.c | |||
| @@ -119,7 +119,16 @@ int cfg80211_mgd_wext_siwfreq(struct net_device *dev, | |||
| 119 | * channel we disconnected above and reconnect below. | 119 | * channel we disconnected above and reconnect below. |
| 120 | */ | 120 | */ |
| 121 | if (chan && !wdev->wext.connect.ssid_len) { | 121 | if (chan && !wdev->wext.connect.ssid_len) { |
| 122 | err = cfg80211_set_monitor_channel(rdev, freq, NL80211_CHAN_NO_HT); | 122 | struct cfg80211_chan_def chandef = { |
| 123 | .width = NL80211_CHAN_WIDTH_20_NOHT, | ||
| 124 | .center_freq1 = freq, | ||
| 125 | }; | ||
| 126 | |||
| 127 | chandef.chan = ieee80211_get_channel(&rdev->wiphy, freq); | ||
| 128 | if (chandef.chan) | ||
| 129 | err = cfg80211_set_monitor_channel(rdev, &chandef); | ||
| 130 | else | ||
| 131 | err = -EINVAL; | ||
| 123 | goto out; | 132 | goto out; |
| 124 | } | 133 | } |
| 125 | 134 | ||
| @@ -233,13 +242,17 @@ int cfg80211_mgd_wext_giwessid(struct net_device *dev, | |||
| 233 | 242 | ||
| 234 | wdev_lock(wdev); | 243 | wdev_lock(wdev); |
| 235 | if (wdev->current_bss) { | 244 | if (wdev->current_bss) { |
| 236 | const u8 *ie = ieee80211_bss_get_ie(&wdev->current_bss->pub, | 245 | const u8 *ie; |
| 237 | WLAN_EID_SSID); | 246 | |
| 247 | rcu_read_lock(); | ||
| 248 | ie = ieee80211_bss_get_ie(&wdev->current_bss->pub, | ||
| 249 | WLAN_EID_SSID); | ||
| 238 | if (ie) { | 250 | if (ie) { |
| 239 | data->flags = 1; | 251 | data->flags = 1; |
| 240 | data->length = ie[1]; | 252 | data->length = ie[1]; |
| 241 | memcpy(ssid, ie + 2, data->length); | 253 | memcpy(ssid, ie + 2, data->length); |
| 242 | } | 254 | } |
| 255 | rcu_read_unlock(); | ||
| 243 | } else if (wdev->wext.connect.ssid && wdev->wext.connect.ssid_len) { | 256 | } else if (wdev->wext.connect.ssid && wdev->wext.connect.ssid_len) { |
| 244 | data->flags = 1; | 257 | data->flags = 1; |
| 245 | data->length = wdev->wext.connect.ssid_len; | 258 | data->length = wdev->wext.connect.ssid_len; |
