Lines Matching refs:wdev
28 struct wireless_dev *wdev = dev->ieee80211_ptr;
29 struct wiphy *wiphy = wdev->wiphy;
61 if (cfg80211_sme_rx_assoc_resp(wdev, cr.status)) {
74 static void cfg80211_process_auth(struct wireless_dev *wdev,
77 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
79 nl80211_send_rx_auth(rdev, wdev->netdev, buf, len, GFP_KERNEL);
80 cfg80211_sme_rx_auth(wdev, buf, len);
83 static void cfg80211_process_deauth(struct wireless_dev *wdev,
86 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
90 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr);
92 nl80211_send_deauth(rdev, wdev->netdev, buf, len, GFP_KERNEL);
94 if (!wdev->current_bss ||
95 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))
98 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap);
99 cfg80211_sme_deauth(wdev);
102 static void cfg80211_process_disassoc(struct wireless_dev *wdev,
105 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
109 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr);
111 nl80211_send_disassoc(rdev, wdev->netdev, buf, len, GFP_KERNEL);
113 if (WARN_ON(!wdev->current_bss ||
114 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid)))
117 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap);
118 cfg80211_sme_disassoc(wdev);
123 struct wireless_dev *wdev = dev->ieee80211_ptr;
126 ASSERT_WDEV_LOCK(wdev);
134 cfg80211_process_auth(wdev, buf, len);
136 cfg80211_process_deauth(wdev, buf, len);
138 cfg80211_process_disassoc(wdev, buf, len);
144 struct wireless_dev *wdev = dev->ieee80211_ptr;
145 struct wiphy *wiphy = wdev->wiphy;
151 cfg80211_sme_auth_timeout(wdev);
157 struct wireless_dev *wdev = dev->ieee80211_ptr;
158 struct wiphy *wiphy = wdev->wiphy;
164 cfg80211_sme_assoc_timeout(wdev);
173 struct wireless_dev *wdev = dev->ieee80211_ptr;
174 struct wiphy *wiphy = wdev->wiphy;
176 cfg80211_sme_abandon_assoc(wdev);
185 struct wireless_dev *wdev = dev->ieee80211_ptr;
188 ASSERT_WDEV_LOCK(wdev);
196 cfg80211_process_deauth(wdev, buf, len);
198 cfg80211_process_disassoc(wdev, buf, len);
240 struct wireless_dev *wdev = dev->ieee80211_ptr;
253 ASSERT_WDEV_LOCK(wdev);
259 if (wdev->current_bss &&
260 ether_addr_equal(bssid, wdev->current_bss->pub.bssid))
316 struct wireless_dev *wdev = dev->ieee80211_ptr;
319 ASSERT_WDEV_LOCK(wdev);
321 if (wdev->current_bss &&
322 (!req->prev_bssid || !ether_addr_equal(wdev->current_bss->pub.bssid,
351 struct wireless_dev *wdev = dev->ieee80211_ptr;
360 ASSERT_WDEV_LOCK(wdev);
363 (!wdev->current_bss ||
364 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid)))
367 if (ether_addr_equal(wdev->disconnect_bssid, bssid) ||
368 (wdev->current_bss &&
369 ether_addr_equal(wdev->current_bss->pub.bssid, bssid)))
370 wdev->conn_owner_nlportid = 0;
380 struct wireless_dev *wdev = dev->ieee80211_ptr;
389 ASSERT_WDEV_LOCK(wdev);
391 if (!wdev->current_bss)
394 if (ether_addr_equal(wdev->current_bss->pub.bssid, bssid))
395 req.bss = &wdev->current_bss->pub;
404 WARN_ON(wdev->current_bss);
411 struct wireless_dev *wdev = dev->ieee80211_ptr;
414 ASSERT_WDEV_LOCK(wdev);
419 if (!wdev->current_bss)
422 memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN);
429 struct wireless_dev *wdev;
442 static void cfg80211_mgmt_registrations_update(struct wireless_dev *wdev)
444 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
452 if (!wdev->mgmt_registrations_need_update) {
469 if (tmp == wdev) {
477 wdev->mgmt_registrations_need_update = 0;
480 rdev_update_mgmt_frame_registrations(rdev, wdev, &upd);
486 struct wireless_dev *wdev;
492 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list)
493 cfg80211_mgmt_registrations_update(wdev);
497 int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid,
502 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
508 if (!wdev->wiphy->mgmt_stypes)
522 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].rx & BIT(mgmt_type))) {
536 if (wdev->iftype == NL80211_IFTYPE_STATION &&
550 list_for_each_entry(reg, &wdev->mgmt_registrations, list) {
578 nreg->wdev = wdev;
580 list_add(&nreg->list, &wdev->mgmt_registrations);
582 wdev->mgmt_registrations_need_update = 1;
585 cfg80211_mgmt_registrations_update(wdev);
596 void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid)
598 struct wiphy *wiphy = wdev->wiphy;
604 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) {
611 wdev->mgmt_registrations_need_update = 1;
619 rdev_crit_proto_stop(rdev, wdev);
622 if (nlportid == wdev->ap_unexpected_nlportid)
623 wdev->ap_unexpected_nlportid = 0;
626 void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev)
628 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
632 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) {
636 wdev->mgmt_registrations_need_update = 1;
639 cfg80211_mgmt_registrations_update(wdev);
643 struct wireless_dev *wdev,
649 if (!wdev->wiphy->mgmt_stypes)
664 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].tx & BIT(stype >> 4)))
671 wdev_lock(wdev);
673 switch (wdev->iftype) {
677 if (!wdev->current_bss) {
682 if (!ether_addr_equal(wdev->current_bss->pub.bssid,
692 if (wdev->iftype == NL80211_IFTYPE_ADHOC)
696 if (!ether_addr_equal(wdev->current_bss->pub.bssid,
705 if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev)))
728 wdev_unlock(wdev);
734 if (!ether_addr_equal(mgmt->sa, wdev_address(wdev))) {
742 if (!wdev->current_bss &&
747 if (wdev->current_bss &&
755 return rdev_mgmt_tx(rdev, wdev, params, cookie);
758 bool cfg80211_rx_mgmt_khz(struct wireless_dev *wdev, int freq, int sig_dbm,
761 struct wiphy *wiphy = wdev->wiphy;
765 &wiphy->mgmt_stypes[wdev->iftype];
774 trace_cfg80211_rx_mgmt(wdev, freq, sig_dbm);
787 list_for_each_entry(reg, &wdev->mgmt_registrations, list) {
800 if (nl80211_send_mgmt(rdev, wdev, reg->nlportid,
931 struct wireless_dev *wdev = netdev->ieee80211_ptr;
932 struct wiphy *wiphy = wdev->wiphy;
938 if (WARN_ON(!wdev->cac_started && event != NL80211_RADAR_CAC_STARTED))
941 if (WARN_ON(!wdev->chandef.chan))
946 timeout = wdev->cac_start_time +
947 msecs_to_jiffies(wdev->cac_time_ms);
956 wdev->cac_started = false;
959 wdev->cac_started = true;