Lines Matching refs:wdev
26 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_rx_assoc_resp() local
27 struct wiphy *wiphy = wdev->wiphy; in cfg80211_rx_assoc_resp()
49 if (cfg80211_sme_rx_assoc_resp(wdev, cr.status)) { in cfg80211_rx_assoc_resp()
61 static void cfg80211_process_auth(struct wireless_dev *wdev, in cfg80211_process_auth() argument
64 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_auth()
66 nl80211_send_rx_auth(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_auth()
67 cfg80211_sme_rx_auth(wdev, buf, len); in cfg80211_process_auth()
70 static void cfg80211_process_deauth(struct wireless_dev *wdev, in cfg80211_process_deauth() argument
73 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_deauth()
77 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); in cfg80211_process_deauth()
79 nl80211_send_deauth(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_deauth()
81 if (!wdev->current_bss || in cfg80211_process_deauth()
82 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) in cfg80211_process_deauth()
85 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap); in cfg80211_process_deauth()
86 cfg80211_sme_deauth(wdev); in cfg80211_process_deauth()
89 static void cfg80211_process_disassoc(struct wireless_dev *wdev, in cfg80211_process_disassoc() argument
92 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_disassoc()
96 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); in cfg80211_process_disassoc()
98 nl80211_send_disassoc(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_disassoc()
100 if (WARN_ON(!wdev->current_bss || in cfg80211_process_disassoc()
101 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in cfg80211_process_disassoc()
104 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap); in cfg80211_process_disassoc()
105 cfg80211_sme_disassoc(wdev); in cfg80211_process_disassoc()
110 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_rx_mlme_mgmt() local
113 ASSERT_WDEV_LOCK(wdev); in cfg80211_rx_mlme_mgmt()
121 cfg80211_process_auth(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
123 cfg80211_process_deauth(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
125 cfg80211_process_disassoc(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
131 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_auth_timeout() local
132 struct wiphy *wiphy = wdev->wiphy; in cfg80211_auth_timeout()
138 cfg80211_sme_auth_timeout(wdev); in cfg80211_auth_timeout()
144 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_assoc_timeout() local
145 struct wiphy *wiphy = wdev->wiphy; in cfg80211_assoc_timeout()
151 cfg80211_sme_assoc_timeout(wdev); in cfg80211_assoc_timeout()
160 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_abandon_assoc() local
161 struct wiphy *wiphy = wdev->wiphy; in cfg80211_abandon_assoc()
163 cfg80211_sme_abandon_assoc(wdev); in cfg80211_abandon_assoc()
172 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_tx_mlme_mgmt() local
175 ASSERT_WDEV_LOCK(wdev); in cfg80211_tx_mlme_mgmt()
183 cfg80211_process_deauth(wdev, buf, len); in cfg80211_tx_mlme_mgmt()
185 cfg80211_process_disassoc(wdev, buf, len); in cfg80211_tx_mlme_mgmt()
227 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_auth() local
240 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_auth()
246 if (wdev->current_bss && in cfg80211_mlme_auth()
247 ether_addr_equal(bssid, wdev->current_bss->pub.bssid)) in cfg80211_mlme_auth()
303 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_assoc() local
306 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_assoc()
308 if (wdev->current_bss && in cfg80211_mlme_assoc()
309 (!req->prev_bssid || !ether_addr_equal(wdev->current_bss->pub.bssid, in cfg80211_mlme_assoc()
338 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_deauth() local
347 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_deauth()
350 (!wdev->current_bss || in cfg80211_mlme_deauth()
351 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in cfg80211_mlme_deauth()
354 if (ether_addr_equal(wdev->disconnect_bssid, bssid) || in cfg80211_mlme_deauth()
355 (wdev->current_bss && in cfg80211_mlme_deauth()
356 ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in cfg80211_mlme_deauth()
357 wdev->conn_owner_nlportid = 0; in cfg80211_mlme_deauth()
367 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_disassoc() local
376 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_disassoc()
378 if (!wdev->current_bss) in cfg80211_mlme_disassoc()
381 if (ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) in cfg80211_mlme_disassoc()
382 req.bss = &wdev->current_bss->pub; in cfg80211_mlme_disassoc()
391 WARN_ON(wdev->current_bss); in cfg80211_mlme_disassoc()
398 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_down() local
401 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_down()
406 if (!wdev->current_bss) in cfg80211_mlme_down()
409 memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN); in cfg80211_mlme_down()
416 struct wireless_dev *wdev; member
444 rdev_mgmt_frame_register(rdev, reg->wdev, in cfg80211_process_mlme_unregistrations()
467 int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid, in cfg80211_mlme_register_mgmt() argument
471 struct wiphy *wiphy = wdev->wiphy; in cfg80211_mlme_register_mgmt()
477 if (!wdev->wiphy->mgmt_stypes) in cfg80211_mlme_register_mgmt()
487 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].rx & BIT(mgmt_type))) in cfg80211_mlme_register_mgmt()
494 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_register_mgmt()
496 list_for_each_entry(reg, &wdev->mgmt_registrations, list) { in cfg80211_mlme_register_mgmt()
517 nreg->wdev = wdev; in cfg80211_mlme_register_mgmt()
518 list_add(&nreg->list, &wdev->mgmt_registrations); in cfg80211_mlme_register_mgmt()
519 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_register_mgmt()
525 rdev_mgmt_frame_register(rdev, wdev, frame_type, true); in cfg80211_mlme_register_mgmt()
530 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_register_mgmt()
535 void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid) in cfg80211_mlme_unregister_socket() argument
537 struct wiphy *wiphy = wdev->wiphy; in cfg80211_mlme_unregister_socket()
541 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_unregister_socket()
543 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) { in cfg80211_mlme_unregister_socket()
555 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_unregister_socket()
559 rdev_crit_proto_stop(rdev, wdev); in cfg80211_mlme_unregister_socket()
562 if (nlportid == wdev->ap_unexpected_nlportid) in cfg80211_mlme_unregister_socket()
563 wdev->ap_unexpected_nlportid = 0; in cfg80211_mlme_unregister_socket()
566 void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev) in cfg80211_mlme_purge_registrations() argument
568 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_mlme_purge_registrations()
570 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_purge_registrations()
572 list_splice_tail_init(&wdev->mgmt_registrations, &rdev->mlme_unreg); in cfg80211_mlme_purge_registrations()
574 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_purge_registrations()
580 struct wireless_dev *wdev, in cfg80211_mlme_mgmt_tx() argument
586 if (!wdev->wiphy->mgmt_stypes) in cfg80211_mlme_mgmt_tx()
601 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].tx & BIT(stype >> 4))) in cfg80211_mlme_mgmt_tx()
608 wdev_lock(wdev); in cfg80211_mlme_mgmt_tx()
610 switch (wdev->iftype) { in cfg80211_mlme_mgmt_tx()
614 if (!wdev->current_bss) { in cfg80211_mlme_mgmt_tx()
619 if (!ether_addr_equal(wdev->current_bss->pub.bssid, in cfg80211_mlme_mgmt_tx()
629 if (wdev->iftype == NL80211_IFTYPE_ADHOC) in cfg80211_mlme_mgmt_tx()
633 if (!ether_addr_equal(wdev->current_bss->pub.bssid, in cfg80211_mlme_mgmt_tx()
642 if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev))) in cfg80211_mlme_mgmt_tx()
665 wdev_unlock(wdev); in cfg80211_mlme_mgmt_tx()
671 if (!ether_addr_equal(mgmt->sa, wdev_address(wdev))) { in cfg80211_mlme_mgmt_tx()
679 if (!wdev->current_bss && in cfg80211_mlme_mgmt_tx()
684 if (wdev->current_bss && in cfg80211_mlme_mgmt_tx()
692 return rdev_mgmt_tx(rdev, wdev, params, cookie); in cfg80211_mlme_mgmt_tx()
695 bool cfg80211_rx_mgmt(struct wireless_dev *wdev, int freq, int sig_dbm, in cfg80211_rx_mgmt() argument
698 struct wiphy *wiphy = wdev->wiphy; in cfg80211_rx_mgmt()
702 &wiphy->mgmt_stypes[wdev->iftype]; in cfg80211_rx_mgmt()
711 trace_cfg80211_rx_mgmt(wdev, freq, sig_dbm); in cfg80211_rx_mgmt()
722 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_rx_mgmt()
724 list_for_each_entry(reg, &wdev->mgmt_registrations, list) { in cfg80211_rx_mgmt()
737 if (nl80211_send_mgmt(rdev, wdev, reg->nlportid, in cfg80211_rx_mgmt()
746 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_rx_mgmt()
868 struct wireless_dev *wdev = netdev->ieee80211_ptr; in cfg80211_cac_event() local
869 struct wiphy *wiphy = wdev->wiphy; in cfg80211_cac_event()
875 if (WARN_ON(!wdev->cac_started && event != NL80211_RADAR_CAC_STARTED)) in cfg80211_cac_event()
878 if (WARN_ON(!wdev->chandef.chan)) in cfg80211_cac_event()
883 timeout = wdev->cac_start_time + in cfg80211_cac_event()
884 msecs_to_jiffies(wdev->cac_time_ms); in cfg80211_cac_event()
893 wdev->cac_started = false; in cfg80211_cac_event()
896 wdev->cac_started = true; in cfg80211_cac_event()