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()
70 ASSERT_WDEV_LOCK(wdev); in cfg80211_conn_scan()
75 if (wdev->conn->params.channel) in cfg80211_conn_scan()
78 n_channels = ieee80211_get_num_supported_channels(wdev->wiphy); in cfg80211_conn_scan()
86 if (wdev->conn->params.channel) { in cfg80211_conn_scan()
87 enum nl80211_band band = wdev->conn->params.channel->band; in cfg80211_conn_scan()
89 wdev->wiphy->bands[band]; in cfg80211_conn_scan()
95 request->channels[0] = wdev->conn->params.channel; in cfg80211_conn_scan()
104 bands = wdev->wiphy->bands[band]; in cfg80211_conn_scan()
121 memcpy(request->ssids[0].ssid, wdev->conn->params.ssid, in cfg80211_conn_scan()
122 wdev->conn->params.ssid_len); in cfg80211_conn_scan()
123 request->ssids[0].ssid_len = wdev->conn->params.ssid_len; in cfg80211_conn_scan()
127 request->wdev = wdev; in cfg80211_conn_scan()
135 wdev->conn->state = CFG80211_CONN_SCANNING; in cfg80211_conn_scan()
136 nl80211_send_scan_start(rdev, wdev); in cfg80211_conn_scan()
137 dev_hold(wdev->netdev); in cfg80211_conn_scan()
145 static int cfg80211_conn_do_work(struct wireless_dev *wdev, in cfg80211_conn_do_work() argument
148 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_conn_do_work()
153 ASSERT_WDEV_LOCK(wdev); in cfg80211_conn_do_work()
155 if (!wdev->conn) in cfg80211_conn_do_work()
158 params = &wdev->conn->params; in cfg80211_conn_do_work()
160 switch (wdev->conn->state) { in cfg80211_conn_do_work()
165 return cfg80211_conn_scan(wdev); in cfg80211_conn_do_work()
169 wdev->conn->state = CFG80211_CONN_AUTHENTICATING; in cfg80211_conn_do_work()
170 return cfg80211_mlme_auth(rdev, wdev->netdev, in cfg80211_conn_do_work()
183 wdev->conn->state = CFG80211_CONN_ASSOCIATING; in cfg80211_conn_do_work()
184 if (wdev->conn->prev_bssid_valid) in cfg80211_conn_do_work()
185 req.prev_bssid = wdev->conn->prev_bssid; in cfg80211_conn_do_work()
196 err = cfg80211_mlme_assoc(rdev, wdev->netdev, params->channel, in cfg80211_conn_do_work()
200 cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid, in cfg80211_conn_do_work()
209 cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid, in cfg80211_conn_do_work()
214 cfg80211_mlme_deauth(rdev, wdev->netdev, params->bssid, in cfg80211_conn_do_work()
220 cfg80211_sme_free(wdev); in cfg80211_conn_do_work()
231 struct wireless_dev *wdev; in cfg80211_conn_work() local
237 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_conn_work()
238 if (!wdev->netdev) in cfg80211_conn_work()
241 wdev_lock(wdev); in cfg80211_conn_work()
242 if (!netif_running(wdev->netdev)) { in cfg80211_conn_work()
243 wdev_unlock(wdev); in cfg80211_conn_work()
246 if (!wdev->conn || in cfg80211_conn_work()
247 wdev->conn->state == CFG80211_CONN_CONNECTED) { in cfg80211_conn_work()
248 wdev_unlock(wdev); in cfg80211_conn_work()
251 if (wdev->conn->params.bssid) { in cfg80211_conn_work()
252 memcpy(bssid_buf, wdev->conn->params.bssid, ETH_ALEN); in cfg80211_conn_work()
256 if (cfg80211_conn_do_work(wdev, &treason)) { in cfg80211_conn_work()
263 __cfg80211_connect_result(wdev->netdev, &cr, false); in cfg80211_conn_work()
265 wdev_unlock(wdev); in cfg80211_conn_work()
272 static struct cfg80211_bss *cfg80211_get_conn_bss(struct wireless_dev *wdev) in cfg80211_get_conn_bss() argument
274 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_get_conn_bss()
277 ASSERT_WDEV_LOCK(wdev); in cfg80211_get_conn_bss()
279 bss = cfg80211_get_bss(wdev->wiphy, wdev->conn->params.channel, in cfg80211_get_conn_bss()
280 wdev->conn->params.bssid, in cfg80211_get_conn_bss()
281 wdev->conn->params.ssid, in cfg80211_get_conn_bss()
282 wdev->conn->params.ssid_len, in cfg80211_get_conn_bss()
283 wdev->conn_bss_type, in cfg80211_get_conn_bss()
284 IEEE80211_PRIVACY(wdev->conn->params.privacy)); in cfg80211_get_conn_bss()
288 memcpy(wdev->conn->bssid, bss->bssid, ETH_ALEN); in cfg80211_get_conn_bss()
289 wdev->conn->params.bssid = wdev->conn->bssid; in cfg80211_get_conn_bss()
290 wdev->conn->params.channel = bss->channel; in cfg80211_get_conn_bss()
291 wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT; in cfg80211_get_conn_bss()
299 struct wireless_dev *wdev = dev->ieee80211_ptr; in __cfg80211_sme_scan_done() local
300 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in __cfg80211_sme_scan_done()
303 ASSERT_WDEV_LOCK(wdev); in __cfg80211_sme_scan_done()
305 if (!wdev->conn) in __cfg80211_sme_scan_done()
308 if (wdev->conn->state != CFG80211_CONN_SCANNING && in __cfg80211_sme_scan_done()
309 wdev->conn->state != CFG80211_CONN_SCAN_AGAIN) in __cfg80211_sme_scan_done()
312 bss = cfg80211_get_conn_bss(wdev); in __cfg80211_sme_scan_done()
321 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_sme_scan_done() local
323 wdev_lock(wdev); in cfg80211_sme_scan_done()
325 wdev_unlock(wdev); in cfg80211_sme_scan_done()
328 void cfg80211_sme_rx_auth(struct wireless_dev *wdev, const u8 *buf, size_t len) in cfg80211_sme_rx_auth() argument
330 struct wiphy *wiphy = wdev->wiphy; in cfg80211_sme_rx_auth()
335 ASSERT_WDEV_LOCK(wdev); in cfg80211_sme_rx_auth()
337 if (!wdev->conn || wdev->conn->state == CFG80211_CONN_CONNECTED) in cfg80211_sme_rx_auth()
341 wdev->conn->auto_auth && in cfg80211_sme_rx_auth()
342 wdev->conn->params.auth_type != NL80211_AUTHTYPE_NETWORK_EAP) { in cfg80211_sme_rx_auth()
344 switch (wdev->conn->params.auth_type) { in cfg80211_sme_rx_auth()
346 if (wdev->connect_keys) in cfg80211_sme_rx_auth()
347 wdev->conn->params.auth_type = in cfg80211_sme_rx_auth()
350 wdev->conn->params.auth_type = in cfg80211_sme_rx_auth()
354 wdev->conn->params.auth_type = in cfg80211_sme_rx_auth()
359 wdev->conn->params.auth_type = in cfg80211_sme_rx_auth()
363 wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT; in cfg80211_sme_rx_auth()
372 __cfg80211_connect_result(wdev->netdev, &cr, false); in cfg80211_sme_rx_auth()
373 } else if (wdev->conn->state == CFG80211_CONN_AUTHENTICATING) { in cfg80211_sme_rx_auth()
374 wdev->conn->state = CFG80211_CONN_ASSOCIATE_NEXT; in cfg80211_sme_rx_auth()
379 bool cfg80211_sme_rx_assoc_resp(struct wireless_dev *wdev, u16 status) in cfg80211_sme_rx_assoc_resp() argument
381 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_rx_assoc_resp()
383 if (!wdev->conn) in cfg80211_sme_rx_assoc_resp()
387 wdev->conn->state = CFG80211_CONN_CONNECTED; in cfg80211_sme_rx_assoc_resp()
391 if (wdev->conn->prev_bssid_valid) { in cfg80211_sme_rx_assoc_resp()
397 wdev->conn->prev_bssid_valid = false; in cfg80211_sme_rx_assoc_resp()
398 wdev->conn->state = CFG80211_CONN_ASSOCIATE_NEXT; in cfg80211_sme_rx_assoc_resp()
403 wdev->conn->state = CFG80211_CONN_ASSOC_FAILED; in cfg80211_sme_rx_assoc_resp()
408 void cfg80211_sme_deauth(struct wireless_dev *wdev) in cfg80211_sme_deauth() argument
410 cfg80211_sme_free(wdev); in cfg80211_sme_deauth()
413 void cfg80211_sme_auth_timeout(struct wireless_dev *wdev) in cfg80211_sme_auth_timeout() argument
415 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_auth_timeout()
417 if (!wdev->conn) in cfg80211_sme_auth_timeout()
420 wdev->conn->state = CFG80211_CONN_AUTH_FAILED_TIMEOUT; in cfg80211_sme_auth_timeout()
424 void cfg80211_sme_disassoc(struct wireless_dev *wdev) in cfg80211_sme_disassoc() argument
426 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_disassoc()
428 if (!wdev->conn) in cfg80211_sme_disassoc()
431 wdev->conn->state = CFG80211_CONN_DEAUTH; in cfg80211_sme_disassoc()
435 void cfg80211_sme_assoc_timeout(struct wireless_dev *wdev) in cfg80211_sme_assoc_timeout() argument
437 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_assoc_timeout()
439 if (!wdev->conn) in cfg80211_sme_assoc_timeout()
442 wdev->conn->state = CFG80211_CONN_ASSOC_FAILED_TIMEOUT; in cfg80211_sme_assoc_timeout()
446 void cfg80211_sme_abandon_assoc(struct wireless_dev *wdev) in cfg80211_sme_abandon_assoc() argument
448 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_abandon_assoc()
450 if (!wdev->conn) in cfg80211_sme_abandon_assoc()
453 wdev->conn->state = CFG80211_CONN_ABANDON; in cfg80211_sme_abandon_assoc()
457 static int cfg80211_sme_get_conn_ies(struct wireless_dev *wdev, in cfg80211_sme_get_conn_ies() argument
461 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_get_conn_ies()
513 static int cfg80211_sme_connect(struct wireless_dev *wdev, in cfg80211_sme_connect() argument
517 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_connect()
524 if (wdev->current_bss) { in cfg80211_sme_connect()
525 cfg80211_unhold_bss(wdev->current_bss); in cfg80211_sme_connect()
526 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in cfg80211_sme_connect()
527 wdev->current_bss = NULL; in cfg80211_sme_connect()
529 cfg80211_sme_free(wdev); in cfg80211_sme_connect()
532 if (wdev->conn) in cfg80211_sme_connect()
535 wdev->conn = kzalloc(sizeof(*wdev->conn), GFP_KERNEL); in cfg80211_sme_connect()
536 if (!wdev->conn) in cfg80211_sme_connect()
542 memcpy(&wdev->conn->params, connect, sizeof(*connect)); in cfg80211_sme_connect()
544 wdev->conn->params.bssid = wdev->conn->bssid; in cfg80211_sme_connect()
545 memcpy(wdev->conn->bssid, connect->bssid, ETH_ALEN); in cfg80211_sme_connect()
548 if (cfg80211_sme_get_conn_ies(wdev, connect->ie, connect->ie_len, in cfg80211_sme_connect()
549 &wdev->conn->ie, in cfg80211_sme_connect()
550 &wdev->conn->params.ie_len)) { in cfg80211_sme_connect()
551 kfree(wdev->conn); in cfg80211_sme_connect()
552 wdev->conn = NULL; in cfg80211_sme_connect()
555 wdev->conn->params.ie = wdev->conn->ie; in cfg80211_sme_connect()
558 wdev->conn->auto_auth = true; in cfg80211_sme_connect()
560 wdev->conn->params.auth_type = in cfg80211_sme_connect()
563 wdev->conn->auto_auth = false; in cfg80211_sme_connect()
566 wdev->conn->params.ssid = wdev->ssid; in cfg80211_sme_connect()
567 wdev->conn->params.ssid_len = wdev->ssid_len; in cfg80211_sme_connect()
570 bss = cfg80211_get_conn_bss(wdev); in cfg80211_sme_connect()
573 memcpy(wdev->conn->prev_bssid, prev_bssid, ETH_ALEN); in cfg80211_sme_connect()
574 wdev->conn->prev_bssid_valid = true; in cfg80211_sme_connect()
581 err = cfg80211_conn_do_work(wdev, &treason); in cfg80211_sme_connect()
582 cfg80211_put_bss(wdev->wiphy, bss); in cfg80211_sme_connect()
585 err = cfg80211_conn_scan(wdev); in cfg80211_sme_connect()
594 wdev->conn->state = CFG80211_CONN_SCAN_AGAIN; in cfg80211_sme_connect()
599 cfg80211_sme_free(wdev); in cfg80211_sme_connect()
604 static int cfg80211_sme_disconnect(struct wireless_dev *wdev, u16 reason) in cfg80211_sme_disconnect() argument
606 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sme_disconnect()
609 if (!wdev->conn) in cfg80211_sme_disconnect()
615 if (wdev->conn->state == CFG80211_CONN_SCANNING || in cfg80211_sme_disconnect()
616 wdev->conn->state == CFG80211_CONN_SCAN_AGAIN) { in cfg80211_sme_disconnect()
622 err = cfg80211_mlme_deauth(rdev, wdev->netdev, in cfg80211_sme_disconnect()
623 wdev->conn->params.bssid, in cfg80211_sme_disconnect()
626 cfg80211_sme_free(wdev); in cfg80211_sme_disconnect()
637 struct wireless_dev *wdev; in cfg80211_is_all_idle() local
649 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_is_all_idle()
650 wdev_lock(wdev); in cfg80211_is_all_idle()
651 if (wdev->conn || wdev->current_bss || in cfg80211_is_all_idle()
652 cfg80211_beaconing_iface_active(wdev)) in cfg80211_is_all_idle()
654 wdev_unlock(wdev); in cfg80211_is_all_idle()
682 struct wireless_dev *wdev = dev->ieee80211_ptr; in __cfg80211_connect_result() local
688 ASSERT_WDEV_LOCK(wdev); in __cfg80211_connect_result()
690 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION && in __cfg80211_connect_result()
691 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)) { in __cfg80211_connect_result()
692 cfg80211_put_bss(wdev->wiphy, cr->bss); in __cfg80211_connect_result()
696 wdev->unprot_beacon_reported = 0; 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 kfree_sensitive(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 wdev->unprot_beacon_reported = 0; in __cfg80211_roamed()
925 nl80211_send_roamed(wiphy_to_rdev(wdev->wiphy), in __cfg80211_roamed()
926 wdev->netdev, info, GFP_KERNEL); in __cfg80211_roamed()
932 wireless_send_event(wdev->netdev, IWEVASSOCREQIE, in __cfg80211_roamed()
939 wireless_send_event(wdev->netdev, IWEVASSOCRESPIE, in __cfg80211_roamed()
946 memcpy(wdev->wext.prev_bssid, info->bss->bssid, ETH_ALEN); in __cfg80211_roamed()
947 wdev->wext.prev_bssid_valid = true; in __cfg80211_roamed()
948 wireless_send_event(wdev->netdev, SIOCGIWAP, &wrqu, NULL); in __cfg80211_roamed()
953 cfg80211_put_bss(wdev->wiphy, info->bss); in __cfg80211_roamed()
960 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_roamed() local
961 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_roamed()
967 info->bss = cfg80211_get_bss(wdev->wiphy, info->channel, in cfg80211_roamed()
968 info->bssid, wdev->ssid, in cfg80211_roamed()
969 wdev->ssid_len, in cfg80211_roamed()
970 wdev->conn_bss_type, in cfg80211_roamed()
981 cfg80211_put_bss(wdev->wiphy, info->bss); in cfg80211_roamed()
1025 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_roamed()
1026 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_roamed()
1027 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_roamed()
1032 void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid) in __cfg80211_port_authorized() argument
1034 ASSERT_WDEV_LOCK(wdev); in __cfg80211_port_authorized()
1036 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION)) in __cfg80211_port_authorized()
1039 if (WARN_ON(!wdev->current_bss) || in __cfg80211_port_authorized()
1040 WARN_ON(!ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in __cfg80211_port_authorized()
1043 nl80211_send_port_authorized(wiphy_to_rdev(wdev->wiphy), wdev->netdev, in __cfg80211_port_authorized()
1050 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_port_authorized() local
1051 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_port_authorized()
1069 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_port_authorized()
1070 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_port_authorized()
1071 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_port_authorized()
1079 struct wireless_dev *wdev = dev->ieee80211_ptr; in __cfg80211_disconnected() local
1080 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in __cfg80211_disconnected()
1086 ASSERT_WDEV_LOCK(wdev); in __cfg80211_disconnected()
1088 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION && in __cfg80211_disconnected()
1089 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)) in __cfg80211_disconnected()
1092 if (wdev->current_bss) { in __cfg80211_disconnected()
1093 cfg80211_unhold_bss(wdev->current_bss); in __cfg80211_disconnected()
1094 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in __cfg80211_disconnected()
1097 wdev->current_bss = NULL; in __cfg80211_disconnected()
1098 wdev->ssid_len = 0; in __cfg80211_disconnected()
1099 wdev->conn_owner_nlportid = 0; in __cfg80211_disconnected()
1100 kfree_sensitive(wdev->connect_keys); in __cfg80211_disconnected()
1101 wdev->connect_keys = NULL; in __cfg80211_disconnected()
1108 rdev_crit_proto_stop(rdev, wdev); in __cfg80211_disconnected()
1119 wdev->wiphy, in __cfg80211_disconnected()
1122 wdev->wiphy, in __cfg80211_disconnected()
1135 wdev->wext.connect.ssid_len = 0; in __cfg80211_disconnected()
1145 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_disconnected() local
1146 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_disconnected()
1161 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_disconnected()
1162 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_disconnected()
1163 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_disconnected()
1177 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_connect() local
1180 ASSERT_WDEV_LOCK(wdev); in cfg80211_connect()
1187 if (wdev->ssid_len && in cfg80211_connect()
1188 (wdev->ssid_len != connect->ssid_len || in cfg80211_connect()
1189 memcmp(wdev->ssid, connect->ssid, wdev->ssid_len))) in cfg80211_connect()
1196 if (wdev->current_bss) { in cfg80211_connect()
1199 if (!ether_addr_equal(prev_bssid, wdev->current_bss->pub.bssid)) in cfg80211_connect()
1208 if (wdev->connect_keys) in cfg80211_connect()
1249 wdev->connect_keys = connkeys; in cfg80211_connect()
1250 memcpy(wdev->ssid, connect->ssid, connect->ssid_len); in cfg80211_connect()
1251 wdev->ssid_len = connect->ssid_len; in cfg80211_connect()
1253 wdev->conn_bss_type = connect->pbss ? IEEE80211_BSS_TYPE_PBSS : in cfg80211_connect()
1257 err = cfg80211_sme_connect(wdev, connect, prev_bssid); in cfg80211_connect()
1262 wdev->connect_keys = NULL; in cfg80211_connect()
1267 if (!wdev->current_bss) in cfg80211_connect()
1268 wdev->ssid_len = 0; in cfg80211_connect()
1278 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_disconnect() local
1281 ASSERT_WDEV_LOCK(wdev); in cfg80211_disconnect()
1283 kfree_sensitive(wdev->connect_keys); in cfg80211_disconnect()
1284 wdev->connect_keys = NULL; in cfg80211_disconnect()
1286 wdev->conn_owner_nlportid = 0; in cfg80211_disconnect()
1288 if (wdev->conn) in cfg80211_disconnect()
1289 err = cfg80211_sme_disconnect(wdev, reason); in cfg80211_disconnect()
1292 else if (wdev->ssid_len) in cfg80211_disconnect()
1300 if (!wdev->current_bss) in cfg80211_disconnect()
1301 wdev->ssid_len = 0; in cfg80211_disconnect()
1312 struct wireless_dev *wdev = in cfg80211_autodisconnect_wk() local
1314 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_autodisconnect_wk()
1316 wdev_lock(wdev); in cfg80211_autodisconnect_wk()
1318 if (wdev->conn_owner_nlportid) { in cfg80211_autodisconnect_wk()
1319 switch (wdev->iftype) { in cfg80211_autodisconnect_wk()
1321 __cfg80211_leave_ibss(rdev, wdev->netdev, false); in cfg80211_autodisconnect_wk()
1325 __cfg80211_stop_ap(rdev, wdev->netdev, false); in cfg80211_autodisconnect_wk()
1328 __cfg80211_leave_mesh(rdev, wdev->netdev); in cfg80211_autodisconnect_wk()
1337 if (rdev->ops->disconnect || wdev->current_bss) in cfg80211_autodisconnect_wk()
1338 cfg80211_disconnect(rdev, wdev->netdev, in cfg80211_autodisconnect_wk()
1342 cfg80211_mlme_deauth(rdev, wdev->netdev, in cfg80211_autodisconnect_wk()
1343 wdev->disconnect_bssid, in cfg80211_autodisconnect_wk()
1353 wdev_unlock(wdev); in cfg80211_autodisconnect_wk()