diff options
Diffstat (limited to 'net/wireless/mlme.c')
-rw-r--r-- | net/wireless/mlme.c | 120 |
1 files changed, 23 insertions, 97 deletions
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 80ffb0138919..7bde5d9c0003 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c | |||
@@ -221,15 +221,15 @@ void cfg80211_michael_mic_failure(struct net_device *dev, const u8 *addr, | |||
221 | EXPORT_SYMBOL(cfg80211_michael_mic_failure); | 221 | EXPORT_SYMBOL(cfg80211_michael_mic_failure); |
222 | 222 | ||
223 | /* some MLME handling for userspace SME */ | 223 | /* some MLME handling for userspace SME */ |
224 | int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, | 224 | int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, |
225 | struct net_device *dev, | 225 | struct net_device *dev, |
226 | struct ieee80211_channel *chan, | 226 | struct ieee80211_channel *chan, |
227 | enum nl80211_auth_type auth_type, | 227 | enum nl80211_auth_type auth_type, |
228 | const u8 *bssid, | 228 | const u8 *bssid, |
229 | const u8 *ssid, int ssid_len, | 229 | const u8 *ssid, int ssid_len, |
230 | const u8 *ie, int ie_len, | 230 | const u8 *ie, int ie_len, |
231 | const u8 *key, int key_len, int key_idx, | 231 | const u8 *key, int key_len, int key_idx, |
232 | const u8 *sae_data, int sae_data_len) | 232 | const u8 *sae_data, int sae_data_len) |
233 | { | 233 | { |
234 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 234 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
235 | struct cfg80211_auth_request req = { | 235 | struct cfg80211_auth_request req = { |
@@ -271,28 +271,6 @@ out: | |||
271 | return err; | 271 | return err; |
272 | } | 272 | } |
273 | 273 | ||
274 | int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, | ||
275 | struct net_device *dev, struct ieee80211_channel *chan, | ||
276 | enum nl80211_auth_type auth_type, const u8 *bssid, | ||
277 | const u8 *ssid, int ssid_len, | ||
278 | const u8 *ie, int ie_len, | ||
279 | const u8 *key, int key_len, int key_idx, | ||
280 | const u8 *sae_data, int sae_data_len) | ||
281 | { | ||
282 | int err; | ||
283 | |||
284 | ASSERT_RTNL(); | ||
285 | |||
286 | wdev_lock(dev->ieee80211_ptr); | ||
287 | err = __cfg80211_mlme_auth(rdev, dev, chan, auth_type, bssid, | ||
288 | ssid, ssid_len, ie, ie_len, | ||
289 | key, key_len, key_idx, | ||
290 | sae_data, sae_data_len); | ||
291 | wdev_unlock(dev->ieee80211_ptr); | ||
292 | |||
293 | return err; | ||
294 | } | ||
295 | |||
296 | /* Do a logical ht_capa &= ht_capa_mask. */ | 274 | /* Do a logical ht_capa &= ht_capa_mask. */ |
297 | void cfg80211_oper_and_ht_capa(struct ieee80211_ht_cap *ht_capa, | 275 | void cfg80211_oper_and_ht_capa(struct ieee80211_ht_cap *ht_capa, |
298 | const struct ieee80211_ht_cap *ht_capa_mask) | 276 | const struct ieee80211_ht_cap *ht_capa_mask) |
@@ -327,12 +305,12 @@ void cfg80211_oper_and_vht_capa(struct ieee80211_vht_cap *vht_capa, | |||
327 | p1[i] &= p2[i]; | 305 | p1[i] &= p2[i]; |
328 | } | 306 | } |
329 | 307 | ||
330 | int __cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev, | 308 | int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev, |
331 | struct net_device *dev, | 309 | struct net_device *dev, |
332 | struct ieee80211_channel *chan, | 310 | struct ieee80211_channel *chan, |
333 | const u8 *bssid, | 311 | const u8 *bssid, |
334 | const u8 *ssid, int ssid_len, | 312 | const u8 *ssid, int ssid_len, |
335 | struct cfg80211_assoc_request *req) | 313 | struct cfg80211_assoc_request *req) |
336 | { | 314 | { |
337 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 315 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
338 | int err; | 316 | int err; |
@@ -382,30 +360,10 @@ out: | |||
382 | return err; | 360 | return err; |
383 | } | 361 | } |
384 | 362 | ||
385 | int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev, | 363 | int cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev, |
386 | struct net_device *dev, | 364 | struct net_device *dev, const u8 *bssid, |
387 | struct ieee80211_channel *chan, | 365 | const u8 *ie, int ie_len, u16 reason, |
388 | const u8 *bssid, | 366 | bool local_state_change) |
389 | const u8 *ssid, int ssid_len, | ||
390 | struct cfg80211_assoc_request *req) | ||
391 | { | ||
392 | struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
393 | int err; | ||
394 | |||
395 | ASSERT_RTNL(); | ||
396 | |||
397 | wdev_lock(wdev); | ||
398 | err = __cfg80211_mlme_assoc(rdev, dev, chan, bssid, | ||
399 | ssid, ssid_len, req); | ||
400 | wdev_unlock(wdev); | ||
401 | |||
402 | return err; | ||
403 | } | ||
404 | |||
405 | int __cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev, | ||
406 | struct net_device *dev, const u8 *bssid, | ||
407 | const u8 *ie, int ie_len, u16 reason, | ||
408 | bool local_state_change) | ||
409 | { | 367 | { |
410 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 368 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
411 | struct cfg80211_deauth_request req = { | 369 | struct cfg80211_deauth_request req = { |
@@ -425,26 +383,10 @@ int __cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev, | |||
425 | return rdev_deauth(rdev, dev, &req); | 383 | return rdev_deauth(rdev, dev, &req); |
426 | } | 384 | } |
427 | 385 | ||
428 | int cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev, | 386 | int cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev, |
429 | struct net_device *dev, const u8 *bssid, | 387 | struct net_device *dev, const u8 *bssid, |
430 | const u8 *ie, int ie_len, u16 reason, | 388 | const u8 *ie, int ie_len, u16 reason, |
431 | bool local_state_change) | 389 | bool local_state_change) |
432 | { | ||
433 | struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
434 | int err; | ||
435 | |||
436 | wdev_lock(wdev); | ||
437 | err = __cfg80211_mlme_deauth(rdev, dev, bssid, ie, ie_len, reason, | ||
438 | local_state_change); | ||
439 | wdev_unlock(wdev); | ||
440 | |||
441 | return err; | ||
442 | } | ||
443 | |||
444 | static int __cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev, | ||
445 | struct net_device *dev, const u8 *bssid, | ||
446 | const u8 *ie, int ie_len, u16 reason, | ||
447 | bool local_state_change) | ||
448 | { | 390 | { |
449 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 391 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
450 | struct cfg80211_disassoc_request req = { | 392 | struct cfg80211_disassoc_request req = { |
@@ -470,22 +412,6 @@ static int __cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev, | |||
470 | return rdev_disassoc(rdev, dev, &req); | 412 | return rdev_disassoc(rdev, dev, &req); |
471 | } | 413 | } |
472 | 414 | ||
473 | int cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev, | ||
474 | struct net_device *dev, const u8 *bssid, | ||
475 | const u8 *ie, int ie_len, u16 reason, | ||
476 | bool local_state_change) | ||
477 | { | ||
478 | struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
479 | int err; | ||
480 | |||
481 | wdev_lock(wdev); | ||
482 | err = __cfg80211_mlme_disassoc(rdev, dev, bssid, ie, ie_len, reason, | ||
483 | local_state_change); | ||
484 | wdev_unlock(wdev); | ||
485 | |||
486 | return err; | ||
487 | } | ||
488 | |||
489 | void cfg80211_mlme_down(struct cfg80211_registered_device *rdev, | 415 | void cfg80211_mlme_down(struct cfg80211_registered_device *rdev, |
490 | struct net_device *dev) | 416 | struct net_device *dev) |
491 | { | 417 | { |