Lines Matching refs:wdev

54 static void cfg80211_sme_free(struct wireless_dev *wdev)  in cfg80211_sme_free()  argument
56 if (!wdev->conn) in cfg80211_sme_free()
59 kfree(wdev->conn->ie); in cfg80211_sme_free()
60 kfree(wdev->conn); in cfg80211_sme_free()
61 wdev->conn = NULL; in cfg80211_sme_free()
64 static int cfg80211_conn_scan(struct wireless_dev *wdev) in cfg80211_conn_scan() argument
66 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_conn_scan()
71 ASSERT_WDEV_LOCK(wdev); in cfg80211_conn_scan()
76 if (wdev->conn->params.channel) in cfg80211_conn_scan()
79 n_channels = ieee80211_get_num_supported_channels(wdev->wiphy); in cfg80211_conn_scan()
87 if (wdev->conn->params.channel) { in cfg80211_conn_scan()
88 enum nl80211_band band = wdev->conn->params.channel->band; in cfg80211_conn_scan()
90 wdev->wiphy->bands[band]; in cfg80211_conn_scan()
96 request->channels[0] = wdev->conn->params.channel; in cfg80211_conn_scan()
105 bands = wdev->wiphy->bands[band]; in cfg80211_conn_scan()
122 memcpy(request->ssids[0].ssid, wdev->conn->params.ssid, in cfg80211_conn_scan()
123 wdev->conn->params.ssid_len); in cfg80211_conn_scan()
124 request->ssids[0].ssid_len = wdev->conn->params.ssid_len; in cfg80211_conn_scan()
128 request->wdev = wdev; in cfg80211_conn_scan()
136 wdev->conn->state = CFG80211_CONN_SCANNING; in cfg80211_conn_scan()
137 nl80211_send_scan_start(rdev, wdev); in cfg80211_conn_scan()
138 dev_hold(wdev->netdev); in cfg80211_conn_scan()
146 static int cfg80211_conn_do_work(struct wireless_dev *wdev, in cfg80211_conn_do_work() argument
149 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_conn_do_work()
154 ASSERT_WDEV_LOCK(wdev); in cfg80211_conn_do_work()
156 if (!wdev->conn) in cfg80211_conn_do_work()
159 params = &wdev->conn->params; in cfg80211_conn_do_work()
161 switch (wdev->conn->state) { in cfg80211_conn_do_work()
166 return cfg80211_conn_scan(wdev); in cfg80211_conn_do_work()
170 wdev->conn->state = CFG80211_CONN_AUTHENTICATING; in cfg80211_conn_do_work()
171 return cfg80211_mlme_auth(rdev, wdev->netdev, in cfg80211_conn_do_work()
184 wdev->conn->state = CFG80211_CONN_ASSOCIATING; in cfg80211_conn_do_work()
185 if (wdev->conn->prev_bssid_valid) in cfg80211_conn_do_work()
186 req.prev_bssid = wdev->conn->prev_bssid; in cfg80211_conn_do_work()
197 err = cfg80211_mlme_assoc(rdev, wdev->netdev, params->channel, in cfg80211_conn_do_work()
201 cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid, in cfg80211_conn_do_work()
210 cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid, in cfg80211_conn_do_work()
215 cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid, in cfg80211_conn_do_work()
221 cfg80211_sme_free(wdev); in cfg80211_conn_do_work()
232 struct wireless_dev *wdev; in cfg80211_conn_work() local
238 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_conn_work()
239 if (!wdev->netdev) in cfg80211_conn_work()
242 wdev_lock(wdev); in cfg80211_conn_work()
243 if (!netif_running(wdev->netdev)) { in cfg80211_conn_work()
244 wdev_unlock(wdev); in cfg80211_conn_work()
247 if (!wdev->conn || in cfg80211_conn_work()
248 wdev->conn->state == CFG80211_CONN_CONNECTED) { in cfg80211_conn_work()
249 wdev_unlock(wdev); in cfg80211_conn_work()
252 if (wdev->conn->params.bssid) { in cfg80211_conn_work()
253 memcpy(bssid_buf, wdev->conn->params.bssid, ETH_ALEN); in cfg80211_conn_work()
257 if (cfg80211_conn_do_work(wdev, &treason)) { in cfg80211_conn_work()
264 __cfg80211_connect_result(wdev->netdev, &cr, false); in cfg80211_conn_work()
266 wdev_unlock(wdev); in cfg80211_conn_work()
273 static struct cfg80211_bss *cfg80211_get_conn_bss(struct wireless_dev *wdev) in cfg80211_get_conn_bss() argument
275 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_get_conn_bss()
278 ASSERT_WDEV_LOCK(wdev); in cfg80211_get_conn_bss()
280 bss = cfg80211_get_bss(wdev->wiphy, wdev->conn->params.channel, in cfg80211_get_conn_bss()
281 wdev->conn->params.bssid, in cfg80211_get_conn_bss()
282 wdev->conn->params.ssid, in cfg80211_get_conn_bss()
283 wdev->conn->params.ssid_len, in cfg80211_get_conn_bss()
284 wdev->conn_bss_type, in cfg80211_get_conn_bss()
285 IEEE80211_PRIVACY(wdev->conn->params.privacy)); in cfg80211_get_conn_bss()
289 memcpy(wdev->conn->bssid, bss->bssid, ETH_ALEN); in cfg80211_get_conn_bss()
290 wdev->conn->params.bssid = wdev->conn->bssid; in cfg80211_get_conn_bss()
291 wdev->conn->params.channel = bss->channel; in cfg80211_get_conn_bss()
292 wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT; in cfg80211_get_conn_bss()
300 struct wireless_dev *wdev = dev->ieee80211_ptr; in __cfg80211_sme_scan_done() local
301 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in __cfg80211_sme_scan_done()
304 ASSERT_WDEV_LOCK(wdev); in __cfg80211_sme_scan_done()
306 if (!wdev->conn) in __cfg80211_sme_scan_done()
309 if (wdev->conn->state != CFG80211_CONN_SCANNING && in __cfg80211_sme_scan_done()
310 wdev->conn->state != CFG80211_CONN_SCAN_AGAIN) in __cfg80211_sme_scan_done()
313 bss = cfg80211_get_conn_bss(wdev); in __cfg80211_sme_scan_done()
322 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_sme_scan_done() local
324 wdev_lock(wdev); in cfg80211_sme_scan_done()
326 wdev_unlock(wdev); in cfg80211_sme_scan_done()
329 void cfg80211_sme_rx_auth(struct wireless_dev *wdev, const u8 *buf, size_t len) in cfg80211_sme_rx_auth() argument
331 struct wiphy *wiphy = wdev->wiphy; in cfg80211_sme_rx_auth()
336 ASSERT_WDEV_LOCK(wdev); in cfg80211_sme_rx_auth()
338 if (!wdev->conn || wdev->conn->state == CFG80211_CONN_CONNECTED) in cfg80211_sme_rx_auth()
342 wdev->conn->auto_auth && in cfg80211_sme_rx_auth()
343 wdev->conn->params.auth_type != NL80211_AUTHTYPE_NETWORK_EAP) { in cfg80211_sme_rx_auth()
345 switch (wdev->conn->params.auth_type) { in cfg80211_sme_rx_auth()
347 if (wdev->connect_keys) in cfg80211_sme_rx_auth()
348 wdev->conn->params.auth_type = in cfg80211_sme_rx_auth()
351 wdev->conn->params.auth_type = in cfg80211_sme_rx_auth()
355 wdev->conn->params.auth_type = in cfg80211_sme_rx_auth()
360 wdev->conn->params.auth_type = in cfg80211_sme_rx_auth()
364 wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT; in cfg80211_sme_rx_auth()
373 __cfg80211_connect_result(wdev->netdev, &cr, false); in cfg80211_sme_rx_auth()
374 } else if (wdev->conn->state == CFG80211_CONN_AUTHENTICATING) { in cfg80211_sme_rx_auth()
375 wdev->conn->state = CFG80211_CONN_ASSOCIATE_NEXT; in cfg80211_sme_rx_auth()
380 bool cfg80211_sme_rx_assoc_resp(struct wireless_dev *wdev, u16 status) in cfg80211_sme_rx_assoc_resp() argument
382 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_rx_assoc_resp()
384 if (!wdev->conn) in cfg80211_sme_rx_assoc_resp()
388 wdev->conn->state = CFG80211_CONN_CONNECTED; in cfg80211_sme_rx_assoc_resp()
392 if (wdev->conn->prev_bssid_valid) { in cfg80211_sme_rx_assoc_resp()
398 wdev->conn->prev_bssid_valid = false; in cfg80211_sme_rx_assoc_resp()
399 wdev->conn->state = CFG80211_CONN_ASSOCIATE_NEXT; in cfg80211_sme_rx_assoc_resp()
404 wdev->conn->state = CFG80211_CONN_ASSOC_FAILED; in cfg80211_sme_rx_assoc_resp()
409 void cfg80211_sme_deauth(struct wireless_dev *wdev) in cfg80211_sme_deauth() argument
411 cfg80211_sme_free(wdev); in cfg80211_sme_deauth()
414 void cfg80211_sme_auth_timeout(struct wireless_dev *wdev) in cfg80211_sme_auth_timeout() argument
416 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_auth_timeout()
418 if (!wdev->conn) in cfg80211_sme_auth_timeout()
421 wdev->conn->state = CFG80211_CONN_AUTH_FAILED_TIMEOUT; in cfg80211_sme_auth_timeout()
425 void cfg80211_sme_disassoc(struct wireless_dev *wdev) in cfg80211_sme_disassoc() argument
427 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_disassoc()
429 if (!wdev->conn) in cfg80211_sme_disassoc()
432 wdev->conn->state = CFG80211_CONN_DEAUTH; in cfg80211_sme_disassoc()
436 void cfg80211_sme_assoc_timeout(struct wireless_dev *wdev) in cfg80211_sme_assoc_timeout() argument
438 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_assoc_timeout()
440 if (!wdev->conn) in cfg80211_sme_assoc_timeout()
443 wdev->conn->state = CFG80211_CONN_ASSOC_FAILED_TIMEOUT; in cfg80211_sme_assoc_timeout()
447 void cfg80211_sme_abandon_assoc(struct wireless_dev *wdev) in cfg80211_sme_abandon_assoc() argument
449 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_abandon_assoc()
451 if (!wdev->conn) in cfg80211_sme_abandon_assoc()
454 wdev->conn->state = CFG80211_CONN_ABANDON; in cfg80211_sme_abandon_assoc()
458 static int cfg80211_sme_get_conn_ies(struct wireless_dev *wdev, in cfg80211_sme_get_conn_ies() argument
462 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_get_conn_ies()
514 static int cfg80211_sme_connect(struct wireless_dev *wdev, in cfg80211_sme_connect() argument
518 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_connect()
525 if (wdev->current_bss) { in cfg80211_sme_connect()
526 cfg80211_unhold_bss(wdev->current_bss); in cfg80211_sme_connect()
527 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in cfg80211_sme_connect()
528 wdev->current_bss = NULL; in cfg80211_sme_connect()
530 cfg80211_sme_free(wdev); in cfg80211_sme_connect()
533 if (WARN_ON(wdev->conn)) in cfg80211_sme_connect()
536 wdev->conn = kzalloc(sizeof(*wdev->conn), GFP_KERNEL); in cfg80211_sme_connect()
537 if (!wdev->conn) in cfg80211_sme_connect()
543 memcpy(&wdev->conn->params, connect, sizeof(*connect)); in cfg80211_sme_connect()
545 wdev->conn->params.bssid = wdev->conn->bssid; in cfg80211_sme_connect()
546 memcpy(wdev->conn->bssid, connect->bssid, ETH_ALEN); in cfg80211_sme_connect()
549 if (cfg80211_sme_get_conn_ies(wdev, connect->ie, connect->ie_len, in cfg80211_sme_connect()
550 &wdev->conn->ie, in cfg80211_sme_connect()
551 &wdev->conn->params.ie_len)) { in cfg80211_sme_connect()
552 kfree(wdev->conn); in cfg80211_sme_connect()
553 wdev->conn = NULL; in cfg80211_sme_connect()
556 wdev->conn->params.ie = wdev->conn->ie; in cfg80211_sme_connect()
559 wdev->conn->auto_auth = true; in cfg80211_sme_connect()
561 wdev->conn->params.auth_type = in cfg80211_sme_connect()
564 wdev->conn->auto_auth = false; in cfg80211_sme_connect()
567 wdev->conn->params.ssid = wdev->ssid; in cfg80211_sme_connect()
568 wdev->conn->params.ssid_len = wdev->ssid_len; in cfg80211_sme_connect()
571 bss = cfg80211_get_conn_bss(wdev); in cfg80211_sme_connect()
574 memcpy(wdev->conn->prev_bssid, prev_bssid, ETH_ALEN); in cfg80211_sme_connect()
575 wdev->conn->prev_bssid_valid = true; in cfg80211_sme_connect()
582 err = cfg80211_conn_do_work(wdev, &treason); in cfg80211_sme_connect()
583 cfg80211_put_bss(wdev->wiphy, bss); in cfg80211_sme_connect()
586 err = cfg80211_conn_scan(wdev); in cfg80211_sme_connect()
595 wdev->conn->state = CFG80211_CONN_SCAN_AGAIN; in cfg80211_sme_connect()
600 cfg80211_sme_free(wdev); in cfg80211_sme_connect()
605 static int cfg80211_sme_disconnect(struct wireless_dev *wdev, u16 reason) in cfg80211_sme_disconnect() argument
607 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_disconnect()
610 if (!wdev->conn) in cfg80211_sme_disconnect()
616 if (wdev->conn->state == CFG80211_CONN_SCANNING || in cfg80211_sme_disconnect()
617 wdev->conn->state == CFG80211_CONN_SCAN_AGAIN) { in cfg80211_sme_disconnect()
623 err = cfg80211_mlme_deauth(rdev, wdev->netdev, in cfg80211_sme_disconnect()
624 wdev->conn->params.bssid, in cfg80211_sme_disconnect()
627 cfg80211_sme_free(wdev); in cfg80211_sme_disconnect()
638 struct wireless_dev *wdev; in cfg80211_is_all_idle() local
650 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_is_all_idle()
651 wdev_lock(wdev); in cfg80211_is_all_idle()
652 if (wdev->conn || wdev->current_bss || in cfg80211_is_all_idle()
653 cfg80211_beaconing_iface_active(wdev)) in cfg80211_is_all_idle()
655 wdev_unlock(wdev); in cfg80211_is_all_idle()
683 struct wireless_dev *wdev = dev->ieee80211_ptr; in __cfg80211_connect_result() local
689 ASSERT_WDEV_LOCK(wdev); in __cfg80211_connect_result()
691 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION && in __cfg80211_connect_result()
692 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)) { in __cfg80211_connect_result()
693 cfg80211_put_bss(wdev->wiphy, cr->bss); in __cfg80211_connect_result()
697 nl80211_send_connect_result(wiphy_to_rdev(wdev->wiphy), dev, cr, in __cfg80211_connect_result()
720 memcpy(wdev->wext.prev_bssid, cr->bssid, ETH_ALEN); in __cfg80211_connect_result()
721 wdev->wext.prev_bssid_valid = true; in __cfg80211_connect_result()
728 WARN_ON_ONCE(!wiphy_to_rdev(wdev->wiphy)->ops->connect); in __cfg80211_connect_result()
729 cr->bss = cfg80211_get_bss(wdev->wiphy, NULL, cr->bssid, in __cfg80211_connect_result()
730 wdev->ssid, wdev->ssid_len, in __cfg80211_connect_result()
731 wdev->conn_bss_type, in __cfg80211_connect_result()
737 if (wdev->current_bss) { in __cfg80211_connect_result()
738 cfg80211_unhold_bss(wdev->current_bss); in __cfg80211_connect_result()
739 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in __cfg80211_connect_result()
740 wdev->current_bss = NULL; in __cfg80211_connect_result()
744 kzfree(wdev->connect_keys); in __cfg80211_connect_result()
745 wdev->connect_keys = NULL; in __cfg80211_connect_result()
746 wdev->ssid_len = 0; in __cfg80211_connect_result()
747 wdev->conn_owner_nlportid = 0; in __cfg80211_connect_result()
750 cfg80211_put_bss(wdev->wiphy, cr->bss); in __cfg80211_connect_result()
752 cfg80211_sme_free(wdev); in __cfg80211_connect_result()
759 wdev->current_bss = bss_from_pub(cr->bss); in __cfg80211_connect_result()
761 if (!(wdev->wiphy->flags & WIPHY_FLAG_HAS_STATIC_WEP)) in __cfg80211_connect_result()
762 cfg80211_upload_connect_keys(wdev); in __cfg80211_connect_result()
782 regulatory_hint_country_ie(wdev->wiphy, cr->bss->channel->band, in __cfg80211_connect_result()
792 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_connect_done() local
793 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_connect_done()
804 found = cfg80211_get_bss(wdev->wiphy, NULL, in cfg80211_connect_done()
806 wdev->ssid, wdev->ssid_len, in cfg80211_connect_done()
807 wdev->conn_bss_type, in cfg80211_connect_done()
828 cfg80211_put_bss(wdev->wiphy, tmp); in cfg80211_connect_done()
837 cfg80211_put_bss(wdev->wiphy, params->bss); in cfg80211_connect_done()
891 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_connect_done()
892 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_connect_done()
893 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_connect_done()
899 void __cfg80211_roamed(struct wireless_dev *wdev, in __cfg80211_roamed() argument
905 ASSERT_WDEV_LOCK(wdev); in __cfg80211_roamed()
907 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION && in __cfg80211_roamed()
908 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)) in __cfg80211_roamed()
911 if (WARN_ON(!wdev->current_bss)) in __cfg80211_roamed()
914 cfg80211_unhold_bss(wdev->current_bss); in __cfg80211_roamed()
915 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in __cfg80211_roamed()
916 wdev->current_bss = NULL; in __cfg80211_roamed()
922 wdev->current_bss = bss_from_pub(info->bss); in __cfg80211_roamed()
924 nl80211_send_roamed(wiphy_to_rdev(wdev->wiphy), in __cfg80211_roamed()
925 wdev->netdev, info, GFP_KERNEL); in __cfg80211_roamed()
931 wireless_send_event(wdev->netdev, IWEVASSOCREQIE, in __cfg80211_roamed()
938 wireless_send_event(wdev->netdev, IWEVASSOCRESPIE, in __cfg80211_roamed()
945 memcpy(wdev->wext.prev_bssid, info->bss->bssid, ETH_ALEN); in __cfg80211_roamed()
946 wdev->wext.prev_bssid_valid = true; in __cfg80211_roamed()
947 wireless_send_event(wdev->netdev, SIOCGIWAP, &wrqu, NULL); in __cfg80211_roamed()
952 cfg80211_put_bss(wdev->wiphy, info->bss); in __cfg80211_roamed()
959 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_roamed() local
960 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_roamed()
966 info->bss = cfg80211_get_bss(wdev->wiphy, info->channel, in cfg80211_roamed()
967 info->bssid, wdev->ssid, in cfg80211_roamed()
968 wdev->ssid_len, in cfg80211_roamed()
969 wdev->conn_bss_type, in cfg80211_roamed()
980 cfg80211_put_bss(wdev->wiphy, info->bss); in cfg80211_roamed()
1024 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_roamed()
1025 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_roamed()
1026 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_roamed()
1031 void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid) in __cfg80211_port_authorized() argument
1033 ASSERT_WDEV_LOCK(wdev); in __cfg80211_port_authorized()
1035 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION)) in __cfg80211_port_authorized()
1038 if (WARN_ON(!wdev->current_bss) || in __cfg80211_port_authorized()
1039 WARN_ON(!ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in __cfg80211_port_authorized()
1042 nl80211_send_port_authorized(wiphy_to_rdev(wdev->wiphy), wdev->netdev, in __cfg80211_port_authorized()
1049 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_port_authorized() local
1050 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_port_authorized()
1068 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_port_authorized()
1069 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_port_authorized()
1070 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_port_authorized()
1078 struct wireless_dev *wdev = dev->ieee80211_ptr; in __cfg80211_disconnected() local
1079 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in __cfg80211_disconnected()
1085 ASSERT_WDEV_LOCK(wdev); in __cfg80211_disconnected()
1087 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION && in __cfg80211_disconnected()
1088 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)) in __cfg80211_disconnected()
1091 if (wdev->current_bss) { in __cfg80211_disconnected()
1092 cfg80211_unhold_bss(wdev->current_bss); in __cfg80211_disconnected()
1093 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in __cfg80211_disconnected()
1096 wdev->current_bss = NULL; in __cfg80211_disconnected()
1097 wdev->ssid_len = 0; in __cfg80211_disconnected()
1098 wdev->conn_owner_nlportid = 0; in __cfg80211_disconnected()
1099 kzfree(wdev->connect_keys); in __cfg80211_disconnected()
1100 wdev->connect_keys = NULL; in __cfg80211_disconnected()
1107 rdev_crit_proto_stop(rdev, wdev); in __cfg80211_disconnected()
1124 wdev->wext.connect.ssid_len = 0; in __cfg80211_disconnected()
1134 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_disconnected() local
1135 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_disconnected()
1150 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_disconnected()
1151 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_disconnected()
1152 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_disconnected()
1166 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_connect() local
1169 ASSERT_WDEV_LOCK(wdev); in cfg80211_connect()
1176 if (wdev->ssid_len && in cfg80211_connect()
1177 (wdev->ssid_len != connect->ssid_len || in cfg80211_connect()
1178 memcmp(wdev->ssid, connect->ssid, wdev->ssid_len))) in cfg80211_connect()
1185 if (wdev->current_bss) { in cfg80211_connect()
1188 if (!ether_addr_equal(prev_bssid, wdev->current_bss->pub.bssid)) in cfg80211_connect()
1197 if (wdev->connect_keys) in cfg80211_connect()
1238 wdev->connect_keys = connkeys; in cfg80211_connect()
1239 memcpy(wdev->ssid, connect->ssid, connect->ssid_len); in cfg80211_connect()
1240 wdev->ssid_len = connect->ssid_len; in cfg80211_connect()
1242 wdev->conn_bss_type = connect->pbss ? IEEE80211_BSS_TYPE_PBSS : in cfg80211_connect()
1246 err = cfg80211_sme_connect(wdev, connect, prev_bssid); in cfg80211_connect()
1251 wdev->connect_keys = NULL; in cfg80211_connect()
1256 if (!wdev->current_bss) in cfg80211_connect()
1257 wdev->ssid_len = 0; in cfg80211_connect()
1267 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_disconnect() local
1270 ASSERT_WDEV_LOCK(wdev); in cfg80211_disconnect()
1272 kzfree(wdev->connect_keys); in cfg80211_disconnect()
1273 wdev->connect_keys = NULL; in cfg80211_disconnect()
1275 wdev->conn_owner_nlportid = 0; in cfg80211_disconnect()
1277 if (wdev->conn) in cfg80211_disconnect()
1278 err = cfg80211_sme_disconnect(wdev, reason); in cfg80211_disconnect()
1281 else if (wdev->ssid_len) in cfg80211_disconnect()
1289 if (!wdev->current_bss) in cfg80211_disconnect()
1290 wdev->ssid_len = 0; in cfg80211_disconnect()
1301 struct wireless_dev *wdev = in cfg80211_autodisconnect_wk() local
1303 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_autodisconnect_wk()
1305 wdev_lock(wdev); in cfg80211_autodisconnect_wk()
1307 if (wdev->conn_owner_nlportid) { in cfg80211_autodisconnect_wk()
1308 switch (wdev->iftype) { in cfg80211_autodisconnect_wk()
1310 cfg80211_leave_ibss(rdev, wdev->netdev, false); in cfg80211_autodisconnect_wk()
1314 cfg80211_stop_ap(rdev, wdev->netdev, false); in cfg80211_autodisconnect_wk()
1317 cfg80211_leave_mesh(rdev, wdev->netdev); in cfg80211_autodisconnect_wk()
1326 if (rdev->ops->disconnect || wdev->current_bss) in cfg80211_autodisconnect_wk()
1327 cfg80211_disconnect(rdev, wdev->netdev, in cfg80211_autodisconnect_wk()
1331 cfg80211_mlme_deauth(rdev, wdev->netdev, in cfg80211_autodisconnect_wk()
1332 wdev->disconnect_bssid, in cfg80211_autodisconnect_wk()
1342 wdev_unlock(wdev); in cfg80211_autodisconnect_wk()