Lines Matching defs:wdev
159 struct wireless_dev *wdev;
165 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
166 if (!wdev->netdev)
168 wdev->netdev->features &= ~NETIF_F_NETNS_LOCAL;
169 err = dev_change_net_namespace(wdev->netdev, net, "wlan%d");
172 wdev->netdev->features |= NETIF_F_NETNS_LOCAL;
179 list_for_each_entry_continue_reverse(wdev,
182 if (!wdev->netdev)
184 wdev->netdev->features &= ~NETIF_F_NETNS_LOCAL;
185 err = dev_change_net_namespace(wdev->netdev, net,
188 wdev->netdev->features |= NETIF_F_NETNS_LOCAL;
194 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
195 if (!wdev->netdev)
197 nl80211_notify_iface(rdev, wdev, NL80211_CMD_DEL_INTERFACE);
211 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
212 if (!wdev->netdev)
214 nl80211_notify_iface(rdev, wdev, NL80211_CMD_NEW_INTERFACE);
230 struct wireless_dev *wdev)
234 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_P2P_DEVICE))
237 if (!wdev_running(wdev))
240 rdev_stop_p2p_device(rdev, wdev);
241 wdev->is_running = false;
245 if (rdev->scan_req && rdev->scan_req->wdev == wdev) {
255 struct wireless_dev *wdev)
259 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_NAN))
262 if (!wdev_running(wdev))
265 rdev_stop_nan(rdev, wdev);
266 wdev->is_running = false;
274 struct wireless_dev *wdev;
278 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
279 if (wdev->netdev) {
280 dev_close(wdev->netdev);
288 switch (wdev->iftype) {
290 cfg80211_stop_p2p_device(rdev, wdev);
293 cfg80211_stop_nan(rdev, wdev);
341 struct wireless_dev *wdev, *tmp;
345 list_for_each_entry_safe(wdev, tmp, &rdev->wiphy.wdev_list, list) {
346 if (wdev->nl_owner_dead) {
347 if (wdev->netdev)
348 dev_close(wdev->netdev);
351 cfg80211_leave(rdev, wdev);
352 cfg80211_remove_virtual_intf(rdev, wdev);
1191 static void _cfg80211_unregister_wdev(struct wireless_dev *wdev,
1194 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
1201 nl80211_notify_iface(rdev, wdev, NL80211_CMD_DEL_INTERFACE);
1203 wdev->registered = false;
1205 if (wdev->netdev) {
1206 sysfs_remove_link(&wdev->netdev->dev.kobj, "phy80211");
1208 unregister_netdevice(wdev->netdev);
1211 list_del_rcu(&wdev->list);
1215 cfg80211_mlme_purge_registrations(wdev);
1217 switch (wdev->iftype) {
1219 cfg80211_stop_p2p_device(rdev, wdev);
1222 cfg80211_stop_nan(rdev, wdev);
1229 kfree_sensitive(wdev->wext.keys);
1230 wdev->wext.keys = NULL;
1232 wiphy_work_cancel(wdev->wiphy, &wdev->cqm_rssi_work);
1234 cqm_config = rcu_access_pointer(wdev->cqm_config);
1241 cfg80211_process_wdev_events(wdev);
1243 if (wdev->iftype == NL80211_IFTYPE_STATION ||
1244 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) {
1245 for (link_id = 0; link_id < ARRAY_SIZE(wdev->links); link_id++) {
1248 curbss = wdev->links[link_id].client.current_bss;
1252 cfg80211_put_bss(wdev->wiphy, &curbss->pub);
1253 wdev->links[link_id].client.current_bss = NULL;
1258 wdev->connected = false;
1261 void cfg80211_unregister_wdev(struct wireless_dev *wdev)
1263 _cfg80211_unregister_wdev(wdev, true);
1282 struct wireless_dev *wdev)
1284 struct net_device *dev = wdev->netdev;
1288 ASSERT_WDEV_LOCK(wdev);
1290 cfg80211_pmsr_wdev_down(wdev);
1292 cfg80211_stop_background_radar_detection(wdev);
1294 switch (wdev->iftype) {
1307 kfree(wdev->wext.ie);
1308 wdev->wext.ie = NULL;
1309 wdev->wext.ie_len = 0;
1310 wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC;
1342 struct wireless_dev *wdev)
1344 wdev_lock(wdev);
1345 __cfg80211_leave(rdev, wdev);
1346 wdev_unlock(wdev);
1349 void cfg80211_stop_iface(struct wiphy *wiphy, struct wireless_dev *wdev,
1356 trace_cfg80211_stop_iface(wiphy, wdev);
1364 spin_lock_irqsave(&wdev->event_lock, flags);
1365 list_add_tail(&ev->list, &wdev->event_list);
1366 spin_unlock_irqrestore(&wdev->event_lock, flags);
1371 void cfg80211_init_wdev(struct wireless_dev *wdev)
1373 mutex_init(&wdev->mtx);
1374 INIT_LIST_HEAD(&wdev->event_list);
1375 spin_lock_init(&wdev->event_lock);
1376 INIT_LIST_HEAD(&wdev->mgmt_registrations);
1377 INIT_LIST_HEAD(&wdev->pmsr_list);
1378 spin_lock_init(&wdev->pmsr_lock);
1379 INIT_WORK(&wdev->pmsr_free_wk, cfg80211_pmsr_free_wk);
1382 wdev->wext.default_key = -1;
1383 wdev->wext.default_mgmt_key = -1;
1384 wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC;
1387 wiphy_work_init(&wdev->cqm_rssi_work, cfg80211_cqm_rssi_notify_work);
1389 if (wdev->wiphy->flags & WIPHY_FLAG_PS_ON_BY_DEFAULT)
1390 wdev->ps = true;
1392 wdev->ps = false;
1394 wdev->ps_timeout = -1;
1396 if ((wdev->iftype == NL80211_IFTYPE_STATION ||
1397 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT ||
1398 wdev->iftype == NL80211_IFTYPE_ADHOC) && !wdev->use_4addr)
1399 wdev->netdev->priv_flags |= IFF_DONT_BRIDGE;
1401 INIT_WORK(&wdev->disconnect_wk, cfg80211_autodisconnect_wk);
1405 struct wireless_dev *wdev)
1417 if (!wdev->identifier)
1418 wdev->identifier = ++rdev->wdev_id;
1419 list_add_rcu(&wdev->list, &rdev->wiphy.wdev_list);
1421 wdev->registered = true;
1423 if (wdev->netdev &&
1424 sysfs_create_link(&wdev->netdev->dev.kobj, &rdev->wiphy.dev.kobj,
1428 nl80211_notify_iface(rdev, wdev, NL80211_CMD_NEW_INTERFACE);
1433 struct wireless_dev *wdev = dev->ieee80211_ptr;
1439 if (WARN_ON(!wdev))
1442 rdev = wiphy_to_rdev(wdev->wiphy);
1447 wdev->registered = true;
1448 wdev->registering = true;
1453 cfg80211_register_wdev(rdev, wdev);
1456 wdev->registering = false;
1458 wdev->registered = false;
1467 struct wireless_dev *wdev = dev->ieee80211_ptr;
1471 if (!wdev)
1474 rdev = wiphy_to_rdev(wdev->wiphy);
1476 WARN_ON(wdev->iftype == NL80211_IFTYPE_UNSPECIFIED);
1481 wdev->netdev = dev;
1485 cfg80211_init_wdev(wdev);
1488 if (!wdev->registered) {
1490 cfg80211_register_wdev(rdev, wdev);
1497 * so check wdev->registered.
1499 if (wdev->registered && !wdev->registering) {
1501 _cfg80211_unregister_wdev(wdev, false);
1507 cfg80211_leave(rdev, wdev);
1508 cfg80211_remove_links(wdev);
1511 cancel_work_sync(&wdev->disconnect_wk);
1512 cancel_work_sync(&wdev->pmsr_free_wk);
1516 cfg80211_update_iface_num(rdev, wdev->iftype, -1);
1517 if (rdev->scan_req && rdev->scan_req->wdev == wdev) {
1527 if (WARN_ON(pos->dev == wdev->netdev))
1537 cfg80211_update_iface_num(rdev, wdev->iftype, 1);
1538 wdev_lock(wdev);
1539 switch (wdev->iftype) {
1542 cfg80211_ibss_wext_join(rdev, wdev);
1545 cfg80211_mgd_wext_connect(rdev, wdev);
1556 setup.mesh_id = wdev->u.mesh.id;
1557 setup.mesh_id_len = wdev->u.mesh.id_up_len;
1558 if (wdev->u.mesh.id_up_len)
1568 wdev_unlock(wdev);
1575 if ((wdev->iftype == NL80211_IFTYPE_STATION ||
1576 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) &&
1578 rdev_set_power_mgmt(rdev, dev, wdev->ps,
1579 wdev->ps_timeout)) {
1581 wdev->ps = false;
1586 if (!cfg80211_iftype_allowed(wdev->wiphy, wdev->iftype,
1587 wdev->use_4addr, 0))