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()
52 if (cfg80211_sme_rx_assoc_resp(wdev, cr.status)) { in cfg80211_rx_assoc_resp()
65 static void cfg80211_process_auth(struct wireless_dev *wdev, in cfg80211_process_auth() argument
68 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_auth()
70 nl80211_send_rx_auth(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_auth()
71 cfg80211_sme_rx_auth(wdev, buf, len); in cfg80211_process_auth()
74 static void cfg80211_process_deauth(struct wireless_dev *wdev, in cfg80211_process_deauth() argument
77 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_deauth()
81 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); in cfg80211_process_deauth()
83 nl80211_send_deauth(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_deauth()
85 if (!wdev->current_bss || in cfg80211_process_deauth()
86 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) in cfg80211_process_deauth()
89 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap); in cfg80211_process_deauth()
90 cfg80211_sme_deauth(wdev); in cfg80211_process_deauth()
93 static void cfg80211_process_disassoc(struct wireless_dev *wdev, in cfg80211_process_disassoc() argument
96 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_process_disassoc()
100 bool from_ap = !ether_addr_equal(mgmt->sa, wdev->netdev->dev_addr); in cfg80211_process_disassoc()
102 nl80211_send_disassoc(rdev, wdev->netdev, buf, len, GFP_KERNEL); in cfg80211_process_disassoc()
104 if (WARN_ON(!wdev->current_bss || in cfg80211_process_disassoc()
105 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in cfg80211_process_disassoc()
108 __cfg80211_disconnected(wdev->netdev, NULL, 0, reason_code, from_ap); in cfg80211_process_disassoc()
109 cfg80211_sme_disassoc(wdev); in cfg80211_process_disassoc()
114 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_rx_mlme_mgmt() local
117 ASSERT_WDEV_LOCK(wdev); in cfg80211_rx_mlme_mgmt()
125 cfg80211_process_auth(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
127 cfg80211_process_deauth(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
129 cfg80211_process_disassoc(wdev, buf, len); in cfg80211_rx_mlme_mgmt()
135 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_auth_timeout() local
136 struct wiphy *wiphy = wdev->wiphy; in cfg80211_auth_timeout()
142 cfg80211_sme_auth_timeout(wdev); in cfg80211_auth_timeout()
148 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_assoc_timeout() local
149 struct wiphy *wiphy = wdev->wiphy; in cfg80211_assoc_timeout()
155 cfg80211_sme_assoc_timeout(wdev); in cfg80211_assoc_timeout()
164 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_abandon_assoc() local
165 struct wiphy *wiphy = wdev->wiphy; in cfg80211_abandon_assoc()
167 cfg80211_sme_abandon_assoc(wdev); in cfg80211_abandon_assoc()
176 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_tx_mlme_mgmt() local
179 ASSERT_WDEV_LOCK(wdev); in cfg80211_tx_mlme_mgmt()
187 cfg80211_process_deauth(wdev, buf, len); in cfg80211_tx_mlme_mgmt()
189 cfg80211_process_disassoc(wdev, buf, len); in cfg80211_tx_mlme_mgmt()
231 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_auth() local
244 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_auth()
250 if (wdev->current_bss && in cfg80211_mlme_auth()
251 ether_addr_equal(bssid, wdev->current_bss->pub.bssid)) in cfg80211_mlme_auth()
307 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_assoc() local
310 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_assoc()
312 if (wdev->current_bss && in cfg80211_mlme_assoc()
313 (!req->prev_bssid || !ether_addr_equal(wdev->current_bss->pub.bssid, in cfg80211_mlme_assoc()
342 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_deauth() local
351 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_deauth()
354 (!wdev->current_bss || in cfg80211_mlme_deauth()
355 !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in cfg80211_mlme_deauth()
358 if (ether_addr_equal(wdev->disconnect_bssid, bssid) || in cfg80211_mlme_deauth()
359 (wdev->current_bss && in cfg80211_mlme_deauth()
360 ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) in cfg80211_mlme_deauth()
361 wdev->conn_owner_nlportid = 0; in cfg80211_mlme_deauth()
371 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_disassoc() local
380 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_disassoc()
382 if (!wdev->current_bss) in cfg80211_mlme_disassoc()
385 if (ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) in cfg80211_mlme_disassoc()
386 req.bss = &wdev->current_bss->pub; in cfg80211_mlme_disassoc()
395 WARN_ON(wdev->current_bss); in cfg80211_mlme_disassoc()
402 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_mlme_down() local
405 ASSERT_WDEV_LOCK(wdev); in cfg80211_mlme_down()
410 if (!wdev->current_bss) in cfg80211_mlme_down()
413 memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN); in cfg80211_mlme_down()
420 struct wireless_dev *wdev; member
448 rdev_mgmt_frame_register(rdev, reg->wdev, in cfg80211_process_mlme_unregistrations()
471 int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid, in cfg80211_mlme_register_mgmt() argument
475 struct wiphy *wiphy = wdev->wiphy; in cfg80211_mlme_register_mgmt()
481 if (!wdev->wiphy->mgmt_stypes) in cfg80211_mlme_register_mgmt()
491 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].rx & BIT(mgmt_type))) in cfg80211_mlme_register_mgmt()
498 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_register_mgmt()
500 list_for_each_entry(reg, &wdev->mgmt_registrations, list) { in cfg80211_mlme_register_mgmt()
521 nreg->wdev = wdev; in cfg80211_mlme_register_mgmt()
522 list_add(&nreg->list, &wdev->mgmt_registrations); in cfg80211_mlme_register_mgmt()
523 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_register_mgmt()
529 rdev_mgmt_frame_register(rdev, wdev, frame_type, true); in cfg80211_mlme_register_mgmt()
534 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_register_mgmt()
539 void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid) in cfg80211_mlme_unregister_socket() argument
541 struct wiphy *wiphy = wdev->wiphy; in cfg80211_mlme_unregister_socket()
545 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_unregister_socket()
547 list_for_each_entry_safe(reg, tmp, &wdev->mgmt_registrations, list) { in cfg80211_mlme_unregister_socket()
559 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_unregister_socket()
563 rdev_crit_proto_stop(rdev, wdev); in cfg80211_mlme_unregister_socket()
566 if (nlportid == wdev->ap_unexpected_nlportid) in cfg80211_mlme_unregister_socket()
567 wdev->ap_unexpected_nlportid = 0; in cfg80211_mlme_unregister_socket()
570 void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev) in cfg80211_mlme_purge_registrations() argument
572 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_mlme_purge_registrations()
574 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_purge_registrations()
576 list_splice_tail_init(&wdev->mgmt_registrations, &rdev->mlme_unreg); in cfg80211_mlme_purge_registrations()
578 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_mlme_purge_registrations()
584 struct wireless_dev *wdev, in cfg80211_mlme_mgmt_tx() argument
590 if (!wdev->wiphy->mgmt_stypes) in cfg80211_mlme_mgmt_tx()
605 if (!(wdev->wiphy->mgmt_stypes[wdev->iftype].tx & BIT(stype >> 4))) in cfg80211_mlme_mgmt_tx()
612 wdev_lock(wdev); in cfg80211_mlme_mgmt_tx()
614 switch (wdev->iftype) { in cfg80211_mlme_mgmt_tx()
618 if (!wdev->current_bss) { in cfg80211_mlme_mgmt_tx()
623 if (!ether_addr_equal(wdev->current_bss->pub.bssid, in cfg80211_mlme_mgmt_tx()
633 if (wdev->iftype == NL80211_IFTYPE_ADHOC) in cfg80211_mlme_mgmt_tx()
637 if (!ether_addr_equal(wdev->current_bss->pub.bssid, in cfg80211_mlme_mgmt_tx()
646 if (!ether_addr_equal(mgmt->bssid, wdev_address(wdev))) in cfg80211_mlme_mgmt_tx()
669 wdev_unlock(wdev); in cfg80211_mlme_mgmt_tx()
675 if (!ether_addr_equal(mgmt->sa, wdev_address(wdev))) { in cfg80211_mlme_mgmt_tx()
683 if (!wdev->current_bss && in cfg80211_mlme_mgmt_tx()
688 if (wdev->current_bss && in cfg80211_mlme_mgmt_tx()
696 return rdev_mgmt_tx(rdev, wdev, params, cookie); in cfg80211_mlme_mgmt_tx()
699 bool cfg80211_rx_mgmt(struct wireless_dev *wdev, int freq, int sig_dbm, in cfg80211_rx_mgmt() argument
702 struct wiphy *wiphy = wdev->wiphy; in cfg80211_rx_mgmt()
706 &wiphy->mgmt_stypes[wdev->iftype]; in cfg80211_rx_mgmt()
715 trace_cfg80211_rx_mgmt(wdev, freq, sig_dbm); in cfg80211_rx_mgmt()
726 spin_lock_bh(&wdev->mgmt_registrations_lock); in cfg80211_rx_mgmt()
728 list_for_each_entry(reg, &wdev->mgmt_registrations, list) { in cfg80211_rx_mgmt()
741 if (nl80211_send_mgmt(rdev, wdev, reg->nlportid, in cfg80211_rx_mgmt()
750 spin_unlock_bh(&wdev->mgmt_registrations_lock); in cfg80211_rx_mgmt()
872 struct wireless_dev *wdev = netdev->ieee80211_ptr; in cfg80211_cac_event() local
873 struct wiphy *wiphy = wdev->wiphy; in cfg80211_cac_event()
879 if (WARN_ON(!wdev->cac_started && event != NL80211_RADAR_CAC_STARTED)) in cfg80211_cac_event()
882 if (WARN_ON(!wdev->chandef.chan)) in cfg80211_cac_event()
887 timeout = wdev->cac_start_time + in cfg80211_cac_event()
888 msecs_to_jiffies(wdev->cac_time_ms); in cfg80211_cac_event()
897 wdev->cac_started = false; in cfg80211_cac_event()
900 wdev->cac_started = true; in cfg80211_cac_event()