Lines Matching refs:wdev

158 	struct wireless_dev *wdev;  in cfg80211_switch_netns()  local
164 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_switch_netns()
165 if (!wdev->netdev) in cfg80211_switch_netns()
167 wdev->netdev->features &= ~NETIF_F_NETNS_LOCAL; in cfg80211_switch_netns()
168 err = dev_change_net_namespace(wdev->netdev, net, "wlan%d"); in cfg80211_switch_netns()
171 wdev->netdev->features |= NETIF_F_NETNS_LOCAL; in cfg80211_switch_netns()
178 list_for_each_entry_continue_reverse(wdev, in cfg80211_switch_netns()
181 if (!wdev->netdev) in cfg80211_switch_netns()
183 wdev->netdev->features &= ~NETIF_F_NETNS_LOCAL; in cfg80211_switch_netns()
184 err = dev_change_net_namespace(wdev->netdev, net, in cfg80211_switch_netns()
187 wdev->netdev->features |= NETIF_F_NETNS_LOCAL; in cfg80211_switch_netns()
209 struct wireless_dev *wdev) in cfg80211_stop_p2p_device() argument
213 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_P2P_DEVICE)) in cfg80211_stop_p2p_device()
216 if (!wdev_running(wdev)) in cfg80211_stop_p2p_device()
219 rdev_stop_p2p_device(rdev, wdev); in cfg80211_stop_p2p_device()
220 wdev->is_running = false; in cfg80211_stop_p2p_device()
224 if (rdev->scan_req && rdev->scan_req->wdev == wdev) { in cfg80211_stop_p2p_device()
232 struct wireless_dev *wdev) in cfg80211_stop_nan() argument
236 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_NAN)) in cfg80211_stop_nan()
239 if (!wdev_running(wdev)) in cfg80211_stop_nan()
242 rdev_stop_nan(rdev, wdev); in cfg80211_stop_nan()
243 wdev->is_running = false; in cfg80211_stop_nan()
251 struct wireless_dev *wdev; in cfg80211_shutdown_all_interfaces() local
255 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_shutdown_all_interfaces()
256 if (wdev->netdev) { in cfg80211_shutdown_all_interfaces()
257 dev_close(wdev->netdev); in cfg80211_shutdown_all_interfaces()
261 switch (wdev->iftype) { in cfg80211_shutdown_all_interfaces()
263 cfg80211_stop_p2p_device(rdev, wdev); in cfg80211_shutdown_all_interfaces()
266 cfg80211_stop_nan(rdev, wdev); in cfg80211_shutdown_all_interfaces()
311 struct wireless_dev *wdev, *tmp; in cfg80211_destroy_ifaces() local
315 list_for_each_entry_safe(wdev, tmp, &rdev->wiphy.wdev_list, list) { in cfg80211_destroy_ifaces()
316 if (wdev->nl_owner_dead) in cfg80211_destroy_ifaces()
317 rdev_del_virtual_intf(rdev, wdev); in cfg80211_destroy_ifaces()
1016 void cfg80211_cqm_config_free(struct wireless_dev *wdev) in cfg80211_cqm_config_free() argument
1018 kfree(wdev->cqm_config); in cfg80211_cqm_config_free()
1019 wdev->cqm_config = NULL; in cfg80211_cqm_config_free()
1022 void cfg80211_unregister_wdev(struct wireless_dev *wdev) in cfg80211_unregister_wdev() argument
1024 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_unregister_wdev()
1028 if (WARN_ON(wdev->netdev)) in cfg80211_unregister_wdev()
1031 nl80211_notify_iface(rdev, wdev, NL80211_CMD_DEL_INTERFACE); in cfg80211_unregister_wdev()
1033 list_del_rcu(&wdev->list); in cfg80211_unregister_wdev()
1037 switch (wdev->iftype) { in cfg80211_unregister_wdev()
1039 cfg80211_mlme_purge_registrations(wdev); in cfg80211_unregister_wdev()
1040 cfg80211_stop_p2p_device(rdev, wdev); in cfg80211_unregister_wdev()
1043 cfg80211_stop_nan(rdev, wdev); in cfg80211_unregister_wdev()
1050 cfg80211_cqm_config_free(wdev); in cfg80211_unregister_wdev()
1069 struct wireless_dev *wdev) in __cfg80211_leave() argument
1071 struct net_device *dev = wdev->netdev; in __cfg80211_leave()
1075 ASSERT_WDEV_LOCK(wdev); in __cfg80211_leave()
1077 switch (wdev->iftype) { in __cfg80211_leave()
1090 kfree(wdev->wext.ie); in __cfg80211_leave()
1091 wdev->wext.ie = NULL; in __cfg80211_leave()
1092 wdev->wext.ie_len = 0; in __cfg80211_leave()
1093 wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC; in __cfg80211_leave()
1127 struct wireless_dev *wdev) in cfg80211_leave() argument
1129 wdev_lock(wdev); in cfg80211_leave()
1130 __cfg80211_leave(rdev, wdev); in cfg80211_leave()
1131 wdev_unlock(wdev); in cfg80211_leave()
1134 void cfg80211_stop_iface(struct wiphy *wiphy, struct wireless_dev *wdev, in cfg80211_stop_iface() argument
1141 trace_cfg80211_stop_iface(wiphy, wdev); in cfg80211_stop_iface()
1149 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_stop_iface()
1150 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_stop_iface()
1151 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_stop_iface()
1160 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_netdev_notifier_call() local
1164 if (!wdev) in cfg80211_netdev_notifier_call()
1167 rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_netdev_notifier_call()
1169 WARN_ON(wdev->iftype == NL80211_IFTYPE_UNSPECIFIED); in cfg80211_netdev_notifier_call()
1181 mutex_init(&wdev->mtx); in cfg80211_netdev_notifier_call()
1182 INIT_LIST_HEAD(&wdev->event_list); in cfg80211_netdev_notifier_call()
1183 spin_lock_init(&wdev->event_lock); in cfg80211_netdev_notifier_call()
1184 INIT_LIST_HEAD(&wdev->mgmt_registrations); in cfg80211_netdev_notifier_call()
1185 spin_lock_init(&wdev->mgmt_registrations_lock); in cfg80211_netdev_notifier_call()
1194 if (!wdev->identifier) in cfg80211_netdev_notifier_call()
1195 wdev->identifier = ++rdev->wdev_id; in cfg80211_netdev_notifier_call()
1196 list_add_rcu(&wdev->list, &rdev->wiphy.wdev_list); in cfg80211_netdev_notifier_call()
1205 wdev->netdev = dev; in cfg80211_netdev_notifier_call()
1207 wdev->wext.default_key = -1; in cfg80211_netdev_notifier_call()
1208 wdev->wext.default_mgmt_key = -1; in cfg80211_netdev_notifier_call()
1209 wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC; in cfg80211_netdev_notifier_call()
1212 if (wdev->wiphy->flags & WIPHY_FLAG_PS_ON_BY_DEFAULT) in cfg80211_netdev_notifier_call()
1213 wdev->ps = true; in cfg80211_netdev_notifier_call()
1215 wdev->ps = false; in cfg80211_netdev_notifier_call()
1217 wdev->ps_timeout = -1; in cfg80211_netdev_notifier_call()
1219 if ((wdev->iftype == NL80211_IFTYPE_STATION || in cfg80211_netdev_notifier_call()
1220 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT || in cfg80211_netdev_notifier_call()
1221 wdev->iftype == NL80211_IFTYPE_ADHOC) && !wdev->use_4addr) in cfg80211_netdev_notifier_call()
1224 INIT_WORK(&wdev->disconnect_wk, cfg80211_autodisconnect_wk); in cfg80211_netdev_notifier_call()
1226 nl80211_notify_iface(rdev, wdev, NL80211_CMD_NEW_INTERFACE); in cfg80211_netdev_notifier_call()
1229 cfg80211_leave(rdev, wdev); in cfg80211_netdev_notifier_call()
1232 cfg80211_update_iface_num(rdev, wdev->iftype, -1); in cfg80211_netdev_notifier_call()
1233 if (rdev->scan_req && rdev->scan_req->wdev == wdev) { in cfg80211_netdev_notifier_call()
1241 if (WARN_ON(pos && pos->dev == wdev->netdev)) in cfg80211_netdev_notifier_call()
1249 cfg80211_update_iface_num(rdev, wdev->iftype, 1); in cfg80211_netdev_notifier_call()
1250 wdev_lock(wdev); in cfg80211_netdev_notifier_call()
1251 switch (wdev->iftype) { in cfg80211_netdev_notifier_call()
1254 cfg80211_ibss_wext_join(rdev, wdev); in cfg80211_netdev_notifier_call()
1257 cfg80211_mgd_wext_connect(rdev, wdev); in cfg80211_netdev_notifier_call()
1268 setup.mesh_id = wdev->ssid; in cfg80211_netdev_notifier_call()
1269 setup.mesh_id_len = wdev->mesh_id_up_len; in cfg80211_netdev_notifier_call()
1270 if (wdev->mesh_id_up_len) in cfg80211_netdev_notifier_call()
1280 wdev_unlock(wdev); in cfg80211_netdev_notifier_call()
1287 if ((wdev->iftype == NL80211_IFTYPE_STATION || in cfg80211_netdev_notifier_call()
1288 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) && in cfg80211_netdev_notifier_call()
1290 rdev_set_power_mgmt(rdev, dev, wdev->ps, in cfg80211_netdev_notifier_call()
1291 wdev->ps_timeout)) { in cfg80211_netdev_notifier_call()
1293 wdev->ps = false; in cfg80211_netdev_notifier_call()
1304 if (!list_empty(&wdev->list)) { in cfg80211_netdev_notifier_call()
1305 nl80211_notify_iface(rdev, wdev, in cfg80211_netdev_notifier_call()
1308 list_del_rcu(&wdev->list); in cfg80211_netdev_notifier_call()
1310 cfg80211_mlme_purge_registrations(wdev); in cfg80211_netdev_notifier_call()
1312 kzfree(wdev->wext.keys); in cfg80211_netdev_notifier_call()
1314 flush_work(&wdev->disconnect_wk); in cfg80211_netdev_notifier_call()
1315 cfg80211_cqm_config_free(wdev); in cfg80211_netdev_notifier_call()
1324 INIT_LIST_HEAD(&wdev->list); in cfg80211_netdev_notifier_call()
1329 cfg80211_process_wdev_events(wdev); in cfg80211_netdev_notifier_call()
1331 if (WARN_ON(wdev->current_bss)) { in cfg80211_netdev_notifier_call()
1332 cfg80211_unhold_bss(wdev->current_bss); in cfg80211_netdev_notifier_call()
1333 cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub); in cfg80211_netdev_notifier_call()
1334 wdev->current_bss = NULL; in cfg80211_netdev_notifier_call()
1338 if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) in cfg80211_netdev_notifier_call()