aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/mlme.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/wireless/mlme.c')
-rw-r--r--net/wireless/mlme.c120
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,
221EXPORT_SYMBOL(cfg80211_michael_mic_failure); 221EXPORT_SYMBOL(cfg80211_michael_mic_failure);
222 222
223/* some MLME handling for userspace SME */ 223/* some MLME handling for userspace SME */
224int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, 224int 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
274int 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. */
297void cfg80211_oper_and_ht_capa(struct ieee80211_ht_cap *ht_capa, 275void 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
330int __cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev, 308int 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
385int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev, 363int 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
405int __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
428int cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev, 386int 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
444static 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
473int 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
489void cfg80211_mlme_down(struct cfg80211_registered_device *rdev, 415void cfg80211_mlme_down(struct cfg80211_registered_device *rdev,
490 struct net_device *dev) 416 struct net_device *dev)
491{ 417{