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 (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 wdev->unprot_beacon_reported = 0; in __cfg80211_connect_result()
698 nl80211_send_connect_result(wiphy_to_rdev(wdev->wiphy), dev, cr, in __cfg80211_connect_result()
721 memcpy(wdev->wext.prev_bssid, cr->bssid, ETH_ALEN); in __cfg80211_connect_result()
722 wdev->wext.prev_bssid_valid = true; in __cfg80211_connect_result()
729 WARN_ON_ONCE(!wiphy_to_rdev(wdev->wiphy)->ops->connect); in __cfg80211_connect_result()
730 cr->bss = cfg80211_get_bss(wdev->wiphy, NULL, cr->bssid, in __cfg80211_connect_result()
731 wdev->ssid, wdev->ssid_len, in __cfg80211_connect_result()
732 wdev->conn_bss_type, in __cfg80211_connect_result()
738 if (wdev->current_bss) { in __cfg80211_connect_result()
739 cfg80211_unhold_bss(wdev->current_bss); in __cfg80211_connect_result()
740 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in __cfg80211_connect_result()
741 wdev->current_bss = NULL; in __cfg80211_connect_result()
745 kfree_sensitive(wdev->connect_keys); in __cfg80211_connect_result()
746 wdev->connect_keys = NULL; in __cfg80211_connect_result()
747 wdev->ssid_len = 0; in __cfg80211_connect_result()
748 wdev->conn_owner_nlportid = 0; in __cfg80211_connect_result()
751 cfg80211_put_bss(wdev->wiphy, cr->bss); in __cfg80211_connect_result()
753 cfg80211_sme_free(wdev); in __cfg80211_connect_result()
760 wdev->current_bss = bss_from_pub(cr->bss); in __cfg80211_connect_result()
762 if (!(wdev->wiphy->flags & WIPHY_FLAG_HAS_STATIC_WEP)) in __cfg80211_connect_result()
763 cfg80211_upload_connect_keys(wdev); in __cfg80211_connect_result()
783 regulatory_hint_country_ie(wdev->wiphy, cr->bss->channel->band, in __cfg80211_connect_result()
793 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_connect_done() local
794 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_connect_done()
805 found = cfg80211_get_bss(wdev->wiphy, NULL, in cfg80211_connect_done()
807 wdev->ssid, wdev->ssid_len, in cfg80211_connect_done()
808 wdev->conn_bss_type, in cfg80211_connect_done()
829 cfg80211_put_bss(wdev->wiphy, tmp); in cfg80211_connect_done()
838 cfg80211_put_bss(wdev->wiphy, params->bss); in cfg80211_connect_done()
892 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_connect_done()
893 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_connect_done()
894 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_connect_done()
900 void __cfg80211_roamed(struct wireless_dev *wdev, in __cfg80211_roamed() argument
906 ASSERT_WDEV_LOCK(wdev); in __cfg80211_roamed()
908 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION && in __cfg80211_roamed()
909 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)) in __cfg80211_roamed()
912 if (WARN_ON(!wdev->current_bss)) in __cfg80211_roamed()
915 cfg80211_unhold_bss(wdev->current_bss); in __cfg80211_roamed()
916 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in __cfg80211_roamed()
917 wdev->current_bss = NULL; in __cfg80211_roamed()
923 wdev->current_bss = bss_from_pub(info->bss); in __cfg80211_roamed()
925 wdev->unprot_beacon_reported = 0; in __cfg80211_roamed()
926 nl80211_send_roamed(wiphy_to_rdev(wdev->wiphy), in __cfg80211_roamed()
927 wdev->netdev, info, GFP_KERNEL); in __cfg80211_roamed()
933 wireless_send_event(wdev->netdev, IWEVASSOCREQIE, in __cfg80211_roamed()
940 wireless_send_event(wdev->netdev, IWEVASSOCRESPIE, in __cfg80211_roamed()
947 memcpy(wdev->wext.prev_bssid, info->bss->bssid, ETH_ALEN); in __cfg80211_roamed()
948 wdev->wext.prev_bssid_valid = true; in __cfg80211_roamed()
949 wireless_send_event(wdev->netdev, SIOCGIWAP, &wrqu, NULL); in __cfg80211_roamed()
954 cfg80211_put_bss(wdev->wiphy, info->bss); in __cfg80211_roamed()
961 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_roamed() local
962 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_roamed()
968 info->bss = cfg80211_get_bss(wdev->wiphy, info->channel, in cfg80211_roamed()
969 info->bssid, wdev->ssid, in cfg80211_roamed()
970 wdev->ssid_len, in cfg80211_roamed()
971 wdev->conn_bss_type, in cfg80211_roamed()
982 cfg80211_put_bss(wdev->wiphy, info->bss); in cfg80211_roamed()
1026 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_roamed()
1027 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_roamed()
1028 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_roamed()
1033 void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid) in __cfg80211_port_authorized() argument
1035 ASSERT_WDEV_LOCK(wdev); in __cfg80211_port_authorized()
1037 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION)) in __cfg80211_port_authorized()
1040 if (WARN_ON(!wdev->current_bss) || in __cfg80211_port_authorized()
1041 WARN_ON(!ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in __cfg80211_port_authorized()
1044 nl80211_send_port_authorized(wiphy_to_rdev(wdev->wiphy), wdev->netdev, in __cfg80211_port_authorized()
1051 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_port_authorized() local
1052 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_port_authorized()
1070 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_port_authorized()
1071 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_port_authorized()
1072 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_port_authorized()
1080 struct wireless_dev *wdev = dev->ieee80211_ptr; in __cfg80211_disconnected() local
1081 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in __cfg80211_disconnected()
1087 ASSERT_WDEV_LOCK(wdev); in __cfg80211_disconnected()
1089 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION && in __cfg80211_disconnected()
1090 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)) in __cfg80211_disconnected()
1093 if (wdev->current_bss) { in __cfg80211_disconnected()
1094 cfg80211_unhold_bss(wdev->current_bss); in __cfg80211_disconnected()
1095 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in __cfg80211_disconnected()
1098 wdev->current_bss = NULL; in __cfg80211_disconnected()
1099 wdev->ssid_len = 0; in __cfg80211_disconnected()
1100 wdev->conn_owner_nlportid = 0; in __cfg80211_disconnected()
1101 kfree_sensitive(wdev->connect_keys); in __cfg80211_disconnected()
1102 wdev->connect_keys = NULL; in __cfg80211_disconnected()
1109 rdev_crit_proto_stop(rdev, wdev); in __cfg80211_disconnected()
1120 wdev->wiphy, in __cfg80211_disconnected()
1123 wdev->wiphy, in __cfg80211_disconnected()
1136 wdev->wext.connect.ssid_len = 0; in __cfg80211_disconnected()
1146 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_disconnected() local
1147 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_disconnected()
1162 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_disconnected()
1163 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_disconnected()
1164 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_disconnected()
1178 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_connect() local
1181 ASSERT_WDEV_LOCK(wdev); in cfg80211_connect()
1188 if (wdev->ssid_len && in cfg80211_connect()
1189 (wdev->ssid_len != connect->ssid_len || in cfg80211_connect()
1190 memcmp(wdev->ssid, connect->ssid, wdev->ssid_len))) in cfg80211_connect()
1197 if (wdev->current_bss) { in cfg80211_connect()
1200 if (!ether_addr_equal(prev_bssid, wdev->current_bss->pub.bssid)) in cfg80211_connect()
1209 if (wdev->connect_keys) in cfg80211_connect()
1250 wdev->connect_keys = connkeys; in cfg80211_connect()
1251 memcpy(wdev->ssid, connect->ssid, connect->ssid_len); in cfg80211_connect()
1252 wdev->ssid_len = connect->ssid_len; in cfg80211_connect()
1254 wdev->conn_bss_type = connect->pbss ? IEEE80211_BSS_TYPE_PBSS : in cfg80211_connect()
1258 err = cfg80211_sme_connect(wdev, connect, prev_bssid); in cfg80211_connect()
1263 wdev->connect_keys = NULL; in cfg80211_connect()
1268 if (!wdev->current_bss) in cfg80211_connect()
1269 wdev->ssid_len = 0; in cfg80211_connect()
1279 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_disconnect() local
1282 ASSERT_WDEV_LOCK(wdev); in cfg80211_disconnect()
1284 kfree_sensitive(wdev->connect_keys); in cfg80211_disconnect()
1285 wdev->connect_keys = NULL; in cfg80211_disconnect()
1287 wdev->conn_owner_nlportid = 0; in cfg80211_disconnect()
1289 if (wdev->conn) in cfg80211_disconnect()
1290 err = cfg80211_sme_disconnect(wdev, reason); in cfg80211_disconnect()
1293 else if (wdev->ssid_len) in cfg80211_disconnect()
1301 if (!wdev->current_bss) in cfg80211_disconnect()
1302 wdev->ssid_len = 0; in cfg80211_disconnect()
1313 struct wireless_dev *wdev = in cfg80211_autodisconnect_wk() local
1315 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_autodisconnect_wk()
1317 wdev_lock(wdev); in cfg80211_autodisconnect_wk()
1319 if (wdev->conn_owner_nlportid) { in cfg80211_autodisconnect_wk()
1320 switch (wdev->iftype) { in cfg80211_autodisconnect_wk()
1322 __cfg80211_leave_ibss(rdev, wdev->netdev, false); in cfg80211_autodisconnect_wk()
1326 __cfg80211_stop_ap(rdev, wdev->netdev, false); in cfg80211_autodisconnect_wk()
1329 __cfg80211_leave_mesh(rdev, wdev->netdev); in cfg80211_autodisconnect_wk()
1338 if (rdev->ops->disconnect || wdev->current_bss) in cfg80211_autodisconnect_wk()
1339 cfg80211_disconnect(rdev, wdev->netdev, in cfg80211_autodisconnect_wk()
1343 cfg80211_mlme_deauth(rdev, wdev->netdev, in cfg80211_autodisconnect_wk()
1344 wdev->disconnect_bssid, in cfg80211_autodisconnect_wk()
1354 wdev_unlock(wdev); in cfg80211_autodisconnect_wk()