Lines Matching defs:wdev

27 	struct wireless_dev *wdev = dev->ieee80211_ptr;
28 struct wiphy *wiphy = wdev->wiphy;
81 if (cfg80211_sme_rx_assoc_resp(wdev, cr.status)) {
100 static void cfg80211_process_auth(struct wireless_dev *wdev,
103 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
105 nl80211_send_rx_auth(rdev, wdev->netdev, buf, len, GFP_KERNEL);
106 cfg80211_sme_rx_auth(wdev, buf, len);
109 static void cfg80211_process_deauth(struct wireless_dev *wdev,
113 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
117 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr);
119 nl80211_send_deauth(rdev, wdev->netdev, buf, len, reconnect, GFP_KERNEL);
121 if (!wdev->connected || !ether_addr_equal(wdev->u.client.connected_addr, bssid))
124 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap);
125 cfg80211_sme_deauth(wdev);
128 static void cfg80211_process_disassoc(struct wireless_dev *wdev,
132 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
136 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr);
138 nl80211_send_disassoc(rdev, wdev->netdev, buf, len, reconnect,
141 if (WARN_ON(!wdev->connected ||
142 !ether_addr_equal(wdev->u.client.connected_addr, bssid)))
145 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap);
146 cfg80211_sme_disassoc(wdev);
151 struct wireless_dev *wdev = dev->ieee80211_ptr;
154 lockdep_assert_wiphy(wdev->wiphy);
162 cfg80211_process_auth(wdev, buf, len);
164 cfg80211_process_deauth(wdev, buf, len, false);
166 cfg80211_process_disassoc(wdev, buf, len, false);
172 struct wireless_dev *wdev = dev->ieee80211_ptr;
173 struct wiphy *wiphy = wdev->wiphy;
179 cfg80211_sme_auth_timeout(wdev);
186 struct wireless_dev *wdev = dev->ieee80211_ptr;
187 struct wiphy *wiphy = wdev->wiphy;
196 cfg80211_sme_assoc_timeout(wdev);
198 cfg80211_sme_abandon_assoc(wdev);
216 struct wireless_dev *wdev = dev->ieee80211_ptr;
219 lockdep_assert_wiphy(wdev->wiphy);
227 cfg80211_process_deauth(wdev, buf, len, reconnect);
229 cfg80211_process_disassoc(wdev, buf, len, reconnect);
265 struct wireless_dev *wdev = dev->ieee80211_ptr;
267 lockdep_assert_wiphy(wdev->wiphy);
273 !(wdev->wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO))
282 if (wdev->connected &&
283 ether_addr_equal(req->bss->bssid, wdev->u.client.connected_addr))
450 struct wireless_dev *wdev = dev->ieee80211_ptr;
453 lockdep_assert_wiphy(wdev->wiphy);
459 if (wdev->connected &&
461 !ether_addr_equal(wdev->u.client.connected_addr, req->prev_bssid)))
498 struct wireless_dev *wdev = dev->ieee80211_ptr;
507 lockdep_assert_wiphy(wdev->wiphy);
510 (!wdev->connected ||
511 !ether_addr_equal(wdev->u.client.connected_addr, bssid)))
514 if (ether_addr_equal(wdev->disconnect_bssid, bssid) ||
515 (wdev->connected &&
516 ether_addr_equal(wdev->u.client.connected_addr, bssid)))
517 wdev->conn_owner_nlportid = 0;
527 struct wireless_dev *wdev = dev->ieee80211_ptr;
537 lockdep_assert_wiphy(wdev->wiphy);
539 if (!wdev->connected)
542 if (memcmp(wdev->u.client.connected_addr, ap_addr, ETH_ALEN))
550 WARN_ON(wdev->connected);
557 struct wireless_dev *wdev = dev->ieee80211_ptr;
560 lockdep_assert_wiphy(wdev->wiphy);
565 if (!wdev->connected)
568 memcpy(bssid, wdev->u.client.connected_addr, ETH_ALEN);
575 struct wireless_dev *wdev;
588 static void cfg80211_mgmt_registrations_update(struct wireless_dev *wdev)
590 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
598 if (!wdev->mgmt_registrations_need_update) {
615 if (tmp == wdev) {
623 wdev->mgmt_registrations_need_update = 0;
626 rdev_update_mgmt_frame_registrations(rdev, wdev, &upd);
632 struct wireless_dev *wdev;
639 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list)
640 cfg80211_mgmt_registrations_update(wdev);
643 int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid,
648 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
654 if (!wdev->wiphy->mgmt_stypes)
668 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].rx & BIT(mgmt_type))) {
682 if (wdev->iftype == NL80211_IFTYPE_STATION &&
696 list_for_each_entry(reg, &wdev->mgmt_registrations, list) {
724 nreg->wdev = wdev;
726 list_add(&nreg->list, &wdev->mgmt_registrations);
728 wdev->mgmt_registrations_need_update = 1;
731 cfg80211_mgmt_registrations_update(wdev);
742 void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid)
744 struct wiphy *wiphy = wdev->wiphy;
750 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) {
757 wdev->mgmt_registrations_need_update = 1;
765 rdev_crit_proto_stop(rdev, wdev);
768 if (nlportid == wdev->ap_unexpected_nlportid)
769 wdev->ap_unexpected_nlportid = 0;
772 void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev)
774 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
778 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) {
782 wdev->mgmt_registrations_need_update = 1;
785 cfg80211_mgmt_registrations_update(wdev);
788 static bool cfg80211_allowed_address(struct wireless_dev *wdev, const u8 *addr)
792 for_each_valid_link(wdev, i) {
793 if (ether_addr_equal(addr, wdev->links[i].addr))
797 return ether_addr_equal(addr, wdev_address(wdev));
800 static bool cfg80211_allowed_random_address(struct wireless_dev *wdev,
809 wdev->wiphy,
817 if (!wdev->connected &&
819 wdev->wiphy,
823 if (wdev->connected &&
825 wdev->wiphy,
834 struct wireless_dev *wdev,
842 if (!wdev->wiphy->mgmt_stypes)
857 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].tx & BIT(stype >> 4)))
864 switch (wdev->iftype) {
870 if (!wdev->u.ibss.current_bss ||
871 !ether_addr_equal(wdev->u.ibss.current_bss->pub.bssid,
879 if (!wdev->connected) {
886 if (!ether_addr_equal(wdev->u.client.connected_addr,
893 if (!ether_addr_equal(wdev->u.client.connected_addr,
902 if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev)) &&
905 wdev->links[params->link_id].addr)))
933 if (!cfg80211_allowed_address(wdev, mgmt->sa) &&
934 !cfg80211_allowed_random_address(wdev, mgmt))
938 return rdev_mgmt_tx(rdev, wdev, params, cookie);
941 bool cfg80211_rx_mgmt_ext(struct wireless_dev *wdev,
944 struct wiphy *wiphy = wdev->wiphy;
948 &wiphy->mgmt_stypes[wdev->iftype];
957 trace_cfg80211_rx_mgmt(wdev, info);
970 list_for_each_entry(reg, &wdev->mgmt_registrations, list) {
983 if (nl80211_send_mgmt(rdev, wdev, reg->nlportid, info,
1117 struct wireless_dev *wdev = netdev->ieee80211_ptr;
1118 struct wiphy *wiphy = wdev->wiphy;
1122 if (WARN_ON(wdev->valid_links &&
1123 !(wdev->valid_links & BIT(link_id))))
1128 if (WARN_ON(!wdev->links[link_id].cac_started &&
1134 timeout = wdev->links[link_id].cac_start_time +
1135 msecs_to_jiffies(wdev->links[link_id].cac_time_ms);
1144 wdev->links[link_id].cac_started = false;
1147 wdev->links[link_id].cac_started = true;
1160 struct wireless_dev *wdev,
1181 wdev = rdev->background_radar_wdev;
1186 wdev = rdev->background_radar_wdev;
1194 netdev = wdev ? wdev->netdev : NULL;
1240 struct wireless_dev *wdev,
1252 /* Offchannel chain already locked by another wdev */
1253 if (rdev->background_radar_wdev && rdev->background_radar_wdev != wdev)
1257 if (rdev->background_radar_wdev == wdev &&
1270 rdev->background_radar_wdev = wdev; /* Get offchain ownership */
1272 __cfg80211_background_cac_event(rdev, wdev, chandef,
1280 void cfg80211_stop_background_radar_detection(struct wireless_dev *wdev)
1282 struct wiphy *wiphy = wdev->wiphy;
1287 if (wdev != rdev->background_radar_wdev)
1293 __cfg80211_background_cac_event(rdev, wdev,
1303 struct wireless_dev *wdev = dev->ieee80211_ptr;
1306 lockdep_assert_wiphy(wdev->wiphy);
1328 struct wireless_dev *wdev = dev->ieee80211_ptr;
1329 struct wiphy *wiphy = wdev->wiphy;
1337 if (WARN_ON(!wdev->valid_links))
1340 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION &&
1341 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT))
1362 wdev->links[link_id].client.current_bss =
1370 wdev->valid_links |= data->added_links;