Lines Matching refs:wdev
28 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_rx_assoc_resp() local
29 struct wiphy *wiphy = wdev->wiphy; in cfg80211_rx_assoc_resp()
61 if (cfg80211_sme_rx_assoc_resp(wdev, cr.status)) { in cfg80211_rx_assoc_resp()
74 static void cfg80211_process_auth(struct wireless_dev *wdev, in cfg80211_process_auth() argument
77 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_auth()
79 nl80211_send_rx_auth(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_auth()
80 cfg80211_sme_rx_auth(wdev, buf, len); in cfg80211_process_auth()
83 static void cfg80211_process_deauth(struct wireless_dev *wdev, in cfg80211_process_deauth() argument
86 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_deauth()
90 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); in cfg80211_process_deauth()
92 nl80211_send_deauth(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_deauth()
94 if (!wdev->current_bss || in cfg80211_process_deauth()
95 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) in cfg80211_process_deauth()
98 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap); in cfg80211_process_deauth()
99 cfg80211_sme_deauth(wdev); in cfg80211_process_deauth()
102 static void cfg80211_process_disassoc(struct wireless_dev *wdev, in cfg80211_process_disassoc() argument
105 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_disassoc()
109 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); in cfg80211_process_disassoc()
111 nl80211_send_disassoc(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_disassoc()
113 if (WARN_ON(!wdev->current_bss || in cfg80211_process_disassoc()
114 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in cfg80211_process_disassoc()
117 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap); in cfg80211_process_disassoc()
118 cfg80211_sme_disassoc(wdev); in cfg80211_process_disassoc()
123 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_rx_mlme_mgmt() local
126 ASSERT_WDEV_LOCK(wdev); in cfg80211_rx_mlme_mgmt()
134 cfg80211_process_auth(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
136 cfg80211_process_deauth(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
138 cfg80211_process_disassoc(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
144 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_auth_timeout() local
145 struct wiphy *wiphy = wdev->wiphy; in cfg80211_auth_timeout()
151 cfg80211_sme_auth_timeout(wdev); in cfg80211_auth_timeout()
157 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_assoc_timeout() local
158 struct wiphy *wiphy = wdev->wiphy; in cfg80211_assoc_timeout()
164 cfg80211_sme_assoc_timeout(wdev); in cfg80211_assoc_timeout()
173 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_abandon_assoc() local
174 struct wiphy *wiphy = wdev->wiphy; in cfg80211_abandon_assoc()
176 cfg80211_sme_abandon_assoc(wdev); in cfg80211_abandon_assoc()
185 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_tx_mlme_mgmt() local
188 ASSERT_WDEV_LOCK(wdev); in cfg80211_tx_mlme_mgmt()
196 cfg80211_process_deauth(wdev, buf, len); in cfg80211_tx_mlme_mgmt()
198 cfg80211_process_disassoc(wdev, buf, len); in cfg80211_tx_mlme_mgmt()
240 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_auth() local
253 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_auth()
259 if (wdev->current_bss && in cfg80211_mlme_auth()
260 ether_addr_equal(bssid, wdev->current_bss->pub.bssid)) in cfg80211_mlme_auth()
316 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_assoc() local
319 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_assoc()
321 if (wdev->current_bss && in cfg80211_mlme_assoc()
322 (!req->prev_bssid || !ether_addr_equal(wdev->current_bss->pub.bssid, in cfg80211_mlme_assoc()
351 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_deauth() local
360 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_deauth()
363 (!wdev->current_bss || in cfg80211_mlme_deauth()
364 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in cfg80211_mlme_deauth()
367 if (ether_addr_equal(wdev->disconnect_bssid, bssid) || in cfg80211_mlme_deauth()
368 (wdev->current_bss && in cfg80211_mlme_deauth()
369 ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in cfg80211_mlme_deauth()
370 wdev->conn_owner_nlportid = 0; in cfg80211_mlme_deauth()
380 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_disassoc() local
389 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_disassoc()
391 if (!wdev->current_bss) in cfg80211_mlme_disassoc()
394 if (ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) in cfg80211_mlme_disassoc()
395 req.bss = &wdev->current_bss->pub; in cfg80211_mlme_disassoc()
404 WARN_ON(wdev->current_bss); in cfg80211_mlme_disassoc()
411 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_down() local
414 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_down()
419 if (!wdev->current_bss) in cfg80211_mlme_down()
422 memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN); in cfg80211_mlme_down()
429 struct wireless_dev *wdev; member
442 static void cfg80211_mgmt_registrations_update(struct wireless_dev *wdev) in cfg80211_mgmt_registrations_update() argument
444 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_mgmt_registrations_update()
451 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mgmt_registrations_update()
452 if (!wdev->mgmt_registrations_need_update) { in cfg80211_mgmt_registrations_update()
453 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mgmt_registrations_update()
469 if (tmp == wdev) { in cfg80211_mgmt_registrations_update()
477 wdev->mgmt_registrations_need_update = 0; in cfg80211_mgmt_registrations_update()
478 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mgmt_registrations_update()
480 rdev_update_mgmt_frame_registrations(rdev, wdev, &upd); in cfg80211_mgmt_registrations_update()
486 struct wireless_dev *wdev; in cfg80211_mgmt_registrations_update_wk() local
492 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) in cfg80211_mgmt_registrations_update_wk()
493 cfg80211_mgmt_registrations_update(wdev); in cfg80211_mgmt_registrations_update_wk()
497 int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid, in cfg80211_mlme_register_mgmt() argument
507 if (!wdev->wiphy->mgmt_stypes) in cfg80211_mlme_register_mgmt()
521 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].rx & BIT(mgmt_type))) { in cfg80211_mlme_register_mgmt()
535 if (wdev->iftype == NL80211_IFTYPE_STATION && in cfg80211_mlme_register_mgmt()
547 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_register_mgmt()
549 list_for_each_entry(reg, &wdev->mgmt_registrations, list) { in cfg80211_mlme_register_mgmt()
577 nreg->wdev = wdev; in cfg80211_mlme_register_mgmt()
579 list_add(&nreg->list, &wdev->mgmt_registrations); in cfg80211_mlme_register_mgmt()
581 wdev->mgmt_registrations_need_update = 1; in cfg80211_mlme_register_mgmt()
582 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_register_mgmt()
584 cfg80211_mgmt_registrations_update(wdev); in cfg80211_mlme_register_mgmt()
590 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_register_mgmt()
595 void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid) in cfg80211_mlme_unregister_socket() argument
597 struct wiphy *wiphy = wdev->wiphy; in cfg80211_mlme_unregister_socket()
601 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_unregister_socket()
603 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) { in cfg80211_mlme_unregister_socket()
610 wdev->mgmt_registrations_need_update = 1; in cfg80211_mlme_unregister_socket()
614 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_unregister_socket()
618 rdev_crit_proto_stop(rdev, wdev); in cfg80211_mlme_unregister_socket()
621 if (nlportid == wdev->ap_unexpected_nlportid) in cfg80211_mlme_unregister_socket()
622 wdev->ap_unexpected_nlportid = 0; in cfg80211_mlme_unregister_socket()
625 void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev) in cfg80211_mlme_purge_registrations() argument
629 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_purge_registrations()
630 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) { in cfg80211_mlme_purge_registrations()
634 wdev->mgmt_registrations_need_update = 1; in cfg80211_mlme_purge_registrations()
635 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_purge_registrations()
637 cfg80211_mgmt_registrations_update(wdev); in cfg80211_mlme_purge_registrations()
641 struct wireless_dev *wdev, in cfg80211_mlme_mgmt_tx() argument
647 if (!wdev->wiphy->mgmt_stypes) in cfg80211_mlme_mgmt_tx()
662 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].tx & BIT(stype >> 4))) in cfg80211_mlme_mgmt_tx()
669 wdev_lock(wdev); in cfg80211_mlme_mgmt_tx()
671 switch (wdev->iftype) { in cfg80211_mlme_mgmt_tx()
675 if (!wdev->current_bss) { in cfg80211_mlme_mgmt_tx()
680 if (!ether_addr_equal(wdev->current_bss->pub.bssid, in cfg80211_mlme_mgmt_tx()
690 if (wdev->iftype == NL80211_IFTYPE_ADHOC) in cfg80211_mlme_mgmt_tx()
694 if (!ether_addr_equal(wdev->current_bss->pub.bssid, in cfg80211_mlme_mgmt_tx()
703 if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev))) in cfg80211_mlme_mgmt_tx()
726 wdev_unlock(wdev); in cfg80211_mlme_mgmt_tx()
732 if (!ether_addr_equal(mgmt->sa, wdev_address(wdev))) { in cfg80211_mlme_mgmt_tx()
740 if (!wdev->current_bss && in cfg80211_mlme_mgmt_tx()
745 if (wdev->current_bss && in cfg80211_mlme_mgmt_tx()
753 return rdev_mgmt_tx(rdev, wdev, params, cookie); in cfg80211_mlme_mgmt_tx()
756 bool cfg80211_rx_mgmt_khz(struct wireless_dev *wdev, int freq, int sig_dbm, in cfg80211_rx_mgmt_khz() argument
759 struct wiphy *wiphy = wdev->wiphy; in cfg80211_rx_mgmt_khz()
763 &wiphy->mgmt_stypes[wdev->iftype]; in cfg80211_rx_mgmt_khz()
772 trace_cfg80211_rx_mgmt(wdev, freq, sig_dbm); in cfg80211_rx_mgmt_khz()
783 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_rx_mgmt_khz()
785 list_for_each_entry(reg, &wdev->mgmt_registrations, list) { in cfg80211_rx_mgmt_khz()
798 if (nl80211_send_mgmt(rdev, wdev, reg->nlportid, in cfg80211_rx_mgmt_khz()
807 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_rx_mgmt_khz()
929 struct wireless_dev *wdev = netdev->ieee80211_ptr; in cfg80211_cac_event() local
930 struct wiphy *wiphy = wdev->wiphy; in cfg80211_cac_event()
936 if (WARN_ON(!wdev->cac_started && event != NL80211_RADAR_CAC_STARTED)) in cfg80211_cac_event()
939 if (WARN_ON(!wdev->chandef.chan)) in cfg80211_cac_event()
944 timeout = wdev->cac_start_time + in cfg80211_cac_event()
945 msecs_to_jiffies(wdev->cac_time_ms); in cfg80211_cac_event()
954 wdev->cac_started = false; in cfg80211_cac_event()
957 wdev->cac_started = true; in cfg80211_cac_event()