Lines Matching refs:wdev

27 	struct wireless_dev *wdev = dev->ieee80211_ptr;  in cfg80211_rx_assoc_resp()  local
28 struct wiphy *wiphy = wdev->wiphy; in cfg80211_rx_assoc_resp()
81 if (cfg80211_sme_rx_assoc_resp(wdev, cr.status)) { in cfg80211_rx_assoc_resp()
100 static void cfg80211_process_auth(struct wireless_dev *wdev, in cfg80211_process_auth() argument
103 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_auth()
105 nl80211_send_rx_auth(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_auth()
106 cfg80211_sme_rx_auth(wdev, buf, len); in cfg80211_process_auth()
109 static void cfg80211_process_deauth(struct wireless_dev *wdev, in cfg80211_process_deauth() argument
113 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_deauth()
117 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); in cfg80211_process_deauth()
119 nl80211_send_deauth(rdev, wdev->netdev, buf, len, reconnect, GFP_KERNEL); in cfg80211_process_deauth()
121 if (!wdev->connected || !ether_addr_equal(wdev->u.client.connected_addr, bssid)) in cfg80211_process_deauth()
124 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap); in cfg80211_process_deauth()
125 cfg80211_sme_deauth(wdev); in cfg80211_process_deauth()
128 static void cfg80211_process_disassoc(struct wireless_dev *wdev, in cfg80211_process_disassoc() argument
132 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_disassoc()
136 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); in cfg80211_process_disassoc()
138 nl80211_send_disassoc(rdev, wdev->netdev, buf, len, reconnect, in cfg80211_process_disassoc()
141 if (WARN_ON(!wdev->connected || in cfg80211_process_disassoc()
142 !ether_addr_equal(wdev->u.client.connected_addr, bssid))) in cfg80211_process_disassoc()
145 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap); in cfg80211_process_disassoc()
146 cfg80211_sme_disassoc(wdev); in cfg80211_process_disassoc()
151 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_rx_mlme_mgmt() local
154 lockdep_assert_wiphy(wdev->wiphy); in cfg80211_rx_mlme_mgmt()
162 cfg80211_process_auth(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
164 cfg80211_process_deauth(wdev, buf, len, false); in cfg80211_rx_mlme_mgmt()
166 cfg80211_process_disassoc(wdev, buf, len, false); in cfg80211_rx_mlme_mgmt()
172 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_auth_timeout() local
173 struct wiphy *wiphy = wdev->wiphy; in cfg80211_auth_timeout()
179 cfg80211_sme_auth_timeout(wdev); in cfg80211_auth_timeout()
186 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_assoc_failure() local
187 struct wiphy *wiphy = wdev->wiphy; in cfg80211_assoc_failure()
196 cfg80211_sme_assoc_timeout(wdev); in cfg80211_assoc_failure()
198 cfg80211_sme_abandon_assoc(wdev); in cfg80211_assoc_failure()
216 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_tx_mlme_mgmt() local
219 lockdep_assert_wiphy(wdev->wiphy); in cfg80211_tx_mlme_mgmt()
227 cfg80211_process_deauth(wdev, buf, len, reconnect); in cfg80211_tx_mlme_mgmt()
229 cfg80211_process_disassoc(wdev, buf, len, reconnect); in cfg80211_tx_mlme_mgmt()
265 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_auth() local
267 lockdep_assert_wiphy(wdev->wiphy); in cfg80211_mlme_auth()
273 !(wdev->wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO)) in cfg80211_mlme_auth()
282 if (wdev->connected && in cfg80211_mlme_auth()
283 ether_addr_equal(req->bss->bssid, wdev->u.client.connected_addr)) in cfg80211_mlme_auth()
467 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_assoc() local
470 lockdep_assert_wiphy(wdev->wiphy); in cfg80211_mlme_assoc()
476 if (wdev->connected && in cfg80211_mlme_assoc()
478 !ether_addr_equal(wdev->u.client.connected_addr, req->prev_bssid))) in cfg80211_mlme_assoc()
515 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_deauth() local
524 lockdep_assert_wiphy(wdev->wiphy); in cfg80211_mlme_deauth()
527 (!wdev->connected || in cfg80211_mlme_deauth()
528 !ether_addr_equal(wdev->u.client.connected_addr, bssid))) in cfg80211_mlme_deauth()
531 if (ether_addr_equal(wdev->disconnect_bssid, bssid) || in cfg80211_mlme_deauth()
532 (wdev->connected && in cfg80211_mlme_deauth()
533 ether_addr_equal(wdev->u.client.connected_addr, bssid))) in cfg80211_mlme_deauth()
534 wdev->conn_owner_nlportid = 0; in cfg80211_mlme_deauth()
544 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_disassoc() local
554 lockdep_assert_wiphy(wdev->wiphy); in cfg80211_mlme_disassoc()
556 if (!wdev->connected) in cfg80211_mlme_disassoc()
559 if (memcmp(wdev->u.client.connected_addr, ap_addr, ETH_ALEN)) in cfg80211_mlme_disassoc()
567 WARN_ON(wdev->connected); in cfg80211_mlme_disassoc()
574 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_down() local
577 lockdep_assert_wiphy(wdev->wiphy); in cfg80211_mlme_down()
582 if (!wdev->connected) in cfg80211_mlme_down()
585 memcpy(bssid, wdev->u.client.connected_addr, ETH_ALEN); in cfg80211_mlme_down()
592 struct wireless_dev *wdev; member
605 static void cfg80211_mgmt_registrations_update(struct wireless_dev *wdev) in cfg80211_mgmt_registrations_update() argument
607 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_mgmt_registrations_update()
615 if (!wdev->mgmt_registrations_need_update) { in cfg80211_mgmt_registrations_update()
632 if (tmp == wdev) { in cfg80211_mgmt_registrations_update()
640 wdev->mgmt_registrations_need_update = 0; in cfg80211_mgmt_registrations_update()
643 rdev_update_mgmt_frame_registrations(rdev, wdev, &upd); in cfg80211_mgmt_registrations_update()
649 struct wireless_dev *wdev; in cfg80211_mgmt_registrations_update_wk() local
656 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) in cfg80211_mgmt_registrations_update_wk()
657 cfg80211_mgmt_registrations_update(wdev); in cfg80211_mgmt_registrations_update_wk()
660 int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid, in cfg80211_mlme_register_mgmt() argument
665 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_mlme_register_mgmt()
671 if (!wdev->wiphy->mgmt_stypes) in cfg80211_mlme_register_mgmt()
685 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].rx & BIT(mgmt_type))) { in cfg80211_mlme_register_mgmt()
699 if (wdev->iftype == NL80211_IFTYPE_STATION && in cfg80211_mlme_register_mgmt()
713 list_for_each_entry(reg, &wdev->mgmt_registrations, list) { in cfg80211_mlme_register_mgmt()
741 nreg->wdev = wdev; in cfg80211_mlme_register_mgmt()
743 list_add(&nreg->list, &wdev->mgmt_registrations); in cfg80211_mlme_register_mgmt()
745 wdev->mgmt_registrations_need_update = 1; in cfg80211_mlme_register_mgmt()
748 cfg80211_mgmt_registrations_update(wdev); in cfg80211_mlme_register_mgmt()
759 void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid) in cfg80211_mlme_unregister_socket() argument
761 struct wiphy *wiphy = wdev->wiphy; in cfg80211_mlme_unregister_socket()
767 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) { in cfg80211_mlme_unregister_socket()
774 wdev->mgmt_registrations_need_update = 1; in cfg80211_mlme_unregister_socket()
782 rdev_crit_proto_stop(rdev, wdev); in cfg80211_mlme_unregister_socket()
785 if (nlportid == wdev->ap_unexpected_nlportid) in cfg80211_mlme_unregister_socket()
786 wdev->ap_unexpected_nlportid = 0; in cfg80211_mlme_unregister_socket()
789 void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev) in cfg80211_mlme_purge_registrations() argument
791 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_mlme_purge_registrations()
795 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) { in cfg80211_mlme_purge_registrations()
799 wdev->mgmt_registrations_need_update = 1; in cfg80211_mlme_purge_registrations()
802 cfg80211_mgmt_registrations_update(wdev); in cfg80211_mlme_purge_registrations()
805 static bool cfg80211_allowed_address(struct wireless_dev *wdev, const u8 *addr) in cfg80211_allowed_address() argument
809 for_each_valid_link(wdev, i) { in cfg80211_allowed_address()
810 if (ether_addr_equal(addr, wdev->links[i].addr)) in cfg80211_allowed_address()
814 return ether_addr_equal(addr, wdev_address(wdev)); in cfg80211_allowed_address()
817 static bool cfg80211_allowed_random_address(struct wireless_dev *wdev, in cfg80211_allowed_random_address() argument
826 wdev->wiphy, in cfg80211_allowed_random_address()
834 if (!wdev->connected && in cfg80211_allowed_random_address()
836 wdev->wiphy, in cfg80211_allowed_random_address()
840 if (wdev->connected && in cfg80211_allowed_random_address()
842 wdev->wiphy, in cfg80211_allowed_random_address()
851 struct wireless_dev *wdev, in cfg80211_mlme_mgmt_tx() argument
859 if (!wdev->wiphy->mgmt_stypes) in cfg80211_mlme_mgmt_tx()
875 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].tx & BIT(stype >> 4))) in cfg80211_mlme_mgmt_tx()
882 switch (wdev->iftype) { in cfg80211_mlme_mgmt_tx()
888 if (!wdev->u.ibss.current_bss || in cfg80211_mlme_mgmt_tx()
889 !ether_addr_equal(wdev->u.ibss.current_bss->pub.bssid, in cfg80211_mlme_mgmt_tx()
897 if (!wdev->connected) { in cfg80211_mlme_mgmt_tx()
904 if (!ether_addr_equal(wdev->u.client.connected_addr, in cfg80211_mlme_mgmt_tx()
911 if (!ether_addr_equal(wdev->u.client.connected_addr, in cfg80211_mlme_mgmt_tx()
920 if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev)) && in cfg80211_mlme_mgmt_tx()
923 wdev->links[params->link_id].addr))) in cfg80211_mlme_mgmt_tx()
951 if (!cfg80211_allowed_address(wdev, mgmt->sa) && in cfg80211_mlme_mgmt_tx()
952 !cfg80211_allowed_random_address(wdev, mgmt)) in cfg80211_mlme_mgmt_tx()
956 return rdev_mgmt_tx(rdev, wdev, params, cookie); in cfg80211_mlme_mgmt_tx()
959 bool cfg80211_rx_mgmt_ext(struct wireless_dev *wdev, in cfg80211_rx_mgmt_ext() argument
962 struct wiphy *wiphy = wdev->wiphy; in cfg80211_rx_mgmt_ext()
966 &wiphy->mgmt_stypes[wdev->iftype]; in cfg80211_rx_mgmt_ext()
975 trace_cfg80211_rx_mgmt(wdev, info); in cfg80211_rx_mgmt_ext()
988 list_for_each_entry(reg, &wdev->mgmt_registrations, list) { in cfg80211_rx_mgmt_ext()
1001 if (nl80211_send_mgmt(rdev, wdev, reg->nlportid, info, in cfg80211_rx_mgmt_ext()
1135 struct wireless_dev *wdev = netdev->ieee80211_ptr; in cfg80211_cac_event() local
1136 struct wiphy *wiphy = wdev->wiphy; in cfg80211_cac_event()
1140 if (WARN_ON(wdev->valid_links && in cfg80211_cac_event()
1141 !(wdev->valid_links & BIT(link_id)))) in cfg80211_cac_event()
1146 if (WARN_ON(!wdev->links[link_id].cac_started && in cfg80211_cac_event()
1152 timeout = wdev->links[link_id].cac_start_time + in cfg80211_cac_event()
1153 msecs_to_jiffies(wdev->links[link_id].cac_time_ms); in cfg80211_cac_event()
1162 wdev->links[link_id].cac_started = false; in cfg80211_cac_event()
1165 wdev->links[link_id].cac_started = true; in cfg80211_cac_event()
1178 struct wireless_dev *wdev, in __cfg80211_background_cac_event() argument
1199 wdev = rdev->background_radar_wdev; in __cfg80211_background_cac_event()
1204 wdev = rdev->background_radar_wdev; in __cfg80211_background_cac_event()
1212 netdev = wdev ? wdev->netdev : NULL; in __cfg80211_background_cac_event()
1258 struct wireless_dev *wdev, in cfg80211_start_background_radar_detection() argument
1271 if (rdev->background_radar_wdev && rdev->background_radar_wdev != wdev) in cfg80211_start_background_radar_detection()
1275 if (rdev->background_radar_wdev == wdev && in cfg80211_start_background_radar_detection()
1288 rdev->background_radar_wdev = wdev; /* Get offchain ownership */ in cfg80211_start_background_radar_detection()
1290 __cfg80211_background_cac_event(rdev, wdev, chandef, in cfg80211_start_background_radar_detection()
1298 void cfg80211_stop_background_radar_detection(struct wireless_dev *wdev) in cfg80211_stop_background_radar_detection() argument
1300 struct wiphy *wiphy = wdev->wiphy; in cfg80211_stop_background_radar_detection()
1305 if (wdev != rdev->background_radar_wdev) in cfg80211_stop_background_radar_detection()
1311 __cfg80211_background_cac_event(rdev, wdev, in cfg80211_stop_background_radar_detection()
1320 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_assoc_ml_reconf() local
1323 lockdep_assert_wiphy(wdev->wiphy); in cfg80211_assoc_ml_reconf()
1345 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlo_reconf_add_done() local
1346 struct wiphy *wiphy = wdev->wiphy; in cfg80211_mlo_reconf_add_done()
1355 if (WARN_ON(!wdev->valid_links)) in cfg80211_mlo_reconf_add_done()
1358 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION && in cfg80211_mlo_reconf_add_done()
1359 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)) in cfg80211_mlo_reconf_add_done()
1380 wdev->links[link_id].client.current_bss = in cfg80211_mlo_reconf_add_done()
1386 memcpy(wdev->links[link_id].addr, in cfg80211_mlo_reconf_add_done()
1397 wdev->valid_links |= data->added_links; in cfg80211_mlo_reconf_add_done()