Lines Matching defs:sdata
47 bool __ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata)
53 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
62 if (sdata->user_power_level != IEEE80211_UNSET_POWER_LEVEL)
63 power = min(power, sdata->user_power_level);
65 if (sdata->ap_power_level != IEEE80211_UNSET_POWER_LEVEL)
66 power = min(power, sdata->ap_power_level);
68 if (power != sdata->vif.bss_conf.txpower) {
69 sdata->vif.bss_conf.txpower = power;
70 ieee80211_hw_config(sdata->local, 0);
77 void ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata,
80 if (__ieee80211_recalc_txpower(sdata) ||
81 (update_bss && ieee80211_sdata_running(sdata)))
82 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_TXPOWER);
152 static int ieee80211_verify_mac(struct ieee80211_sub_if_data *sdata, u8 *addr,
155 struct ieee80211_local *local = sdata->local;
179 if (iter == sdata)
203 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
208 if (ieee80211_sdata_running(sdata))
211 if (sdata->vif.type == NL80211_IFTYPE_MONITOR &&
212 !(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE))
215 ret = ieee80211_verify_mac(sdata, sa->sa_data, check_dup);
222 memcpy(sdata->vif.addr, sa->sa_data, ETH_ALEN);
243 static int ieee80211_check_concurrent_iface(struct ieee80211_sub_if_data *sdata,
246 struct ieee80211_local *local = sdata->local;
254 if (nsdata != sdata && ieee80211_sdata_running(nsdata)) {
258 if ((sdata->vif.type == NL80211_IFTYPE_OCB &&
260 (sdata->vif.type != NL80211_IFTYPE_MONITOR &&
288 if (!ether_addr_equal(sdata->vif.addr,
304 sdata->bss = &nsdata->u.ap;
309 ret = ieee80211_check_combinations(sdata, NULL, 0, 0);
314 static int ieee80211_check_queues(struct ieee80211_sub_if_data *sdata,
317 int n_queues = sdata->local->hw.queues;
325 if (WARN_ON_ONCE(sdata->vif.hw_queue[i] ==
328 if (WARN_ON_ONCE(sdata->vif.hw_queue[i] >=
337 !ieee80211_hw_check(&sdata->local->hw, QUEUE_CONTROL)) {
338 sdata->vif.cab_queue = IEEE80211_INVAL_HW_QUEUE;
342 if (WARN_ON_ONCE(sdata->vif.cab_queue == IEEE80211_INVAL_HW_QUEUE))
345 if (WARN_ON_ONCE(sdata->vif.cab_queue >= n_queues))
353 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
360 err = ieee80211_check_concurrent_iface(sdata, sdata->vif.type);
364 return ieee80211_do_open(&sdata->wdev, true);
367 static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
370 struct ieee80211_local *local = sdata->local;
380 clear_bit(SDATA_STATE_RUNNING, &sdata->state);
382 cancel_scan = rcu_access_pointer(local->scan_sdata) == sdata;
389 if (sdata->dev)
390 netif_tx_stop_all_queues(sdata->dev);
392 ieee80211_roc_purge(local, sdata);
394 switch (sdata->vif.type) {
396 ieee80211_mgd_stop(sdata);
399 ieee80211_ibss_stop(sdata);
402 if (sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES)
404 list_del_rcu(&sdata->u.mntr.list);
425 flushed = sta_info_flush(sdata);
426 WARN_ON_ONCE(sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
427 ((sdata->vif.type != NL80211_IFTYPE_WDS && flushed > 0) ||
428 (sdata->vif.type == NL80211_IFTYPE_WDS && flushed != 1)));
431 if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
434 if (sdata->vif.type == NL80211_IFTYPE_AP) {
437 } else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
441 if (sdata->dev) {
442 netif_addr_lock_bh(sdata->dev);
444 __hw_addr_unsync(&local->mc_list, &sdata->dev->mc,
445 sdata->dev->addr_len);
447 netif_addr_unlock_bh(sdata->dev);
453 cancel_work_sync(&sdata->recalc_smps);
454 sdata_lock(sdata);
456 sdata->vif.csa_active = false;
457 if (sdata->vif.type == NL80211_IFTYPE_STATION)
458 sdata->u.mgd.csa_waiting_bcn = false;
459 if (sdata->csa_block_tx) {
460 ieee80211_wake_vif_queues(local, sdata,
462 sdata->csa_block_tx = false;
465 sdata_unlock(sdata);
467 cancel_work_sync(&sdata->csa_finalize_work);
469 cancel_delayed_work_sync(&sdata->dfs_cac_timer_work);
471 if (sdata->wdev.cac_started) {
472 chandef = sdata->vif.bss_conf.chandef;
475 ieee80211_vif_release_channel(sdata);
477 cfg80211_cac_event(sdata->dev, &chandef,
483 if (sdata->vif.type == NL80211_IFTYPE_AP) {
487 list_for_each_entry_safe(vlan, tmpsdata, &sdata->u.ap.vlans,
490 WARN_ON(!list_empty(&sdata->u.ap.vlans));
491 } else if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
493 ps = &sdata->bss->ps;
497 if (skb->dev == sdata->dev) {
509 switch (sdata->vif.type) {
512 list_del(&sdata->u.vlan.list);
514 RCU_INIT_POINTER(sdata->vif.chanctx_conf, NULL);
516 ieee80211_free_keys(sdata, true);
520 if (sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES) {
531 ieee80211_adjust_monitor_flags(sdata, -1);
535 spin_lock_bh(&sdata->u.nan.func_lock);
537 idr_for_each_entry(&sdata->u.nan.function_inst_ids, func, i) {
538 idr_remove(&sdata->u.nan.function_inst_ids, i);
541 idr_destroy(&sdata->u.nan.function_inst_ids);
543 spin_unlock_bh(&sdata->u.nan.func_lock);
550 cancel_work_sync(&sdata->work);
563 ieee80211_free_keys(sdata, true);
564 skb_queue_purge(&sdata->skb_queue);
571 if (info->control.vif == &sdata->vif) {
579 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
580 ieee80211_txq_remove_vlan(local, sdata);
582 sdata->bss = NULL;
587 sdata->vif.bss_conf.beacon_int = 0;
604 switch (sdata->vif.type) {
615 if (!(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE))
621 drv_remove_interface(local, sdata);
646 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
648 ieee80211_do_stop(sdata, true);
655 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
656 struct ieee80211_local *local = sdata->local;
660 sdata_allmulti = !!(sdata->flags & IEEE80211_SDATA_ALLMULTI);
667 sdata->flags ^= IEEE80211_SDATA_ALLMULTI;
680 static void ieee80211_teardown_sdata(struct ieee80211_sub_if_data *sdata)
683 ieee80211_free_keys(sdata, false);
685 ieee80211_debugfs_remove_netdev(sdata);
687 ieee80211_destroy_frag_cache(&sdata->frags);
689 if (ieee80211_vif_is_mesh(&sdata->vif))
690 ieee80211_mesh_teardown_sdata(sdata);
726 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
727 struct ieee80211_local *local = sdata->local;
747 return ieee80211_select_queue_80211(sdata, skb, hdr);
784 static bool ieee80211_set_sdata_offload_flags(struct ieee80211_sub_if_data *sdata)
786 struct ieee80211_local *local = sdata->local;
789 flags = sdata->vif.offload_flags;
792 ieee80211_iftype_supports_encap_offload(sdata->vif.type)) {
805 if (sdata->vif.offload_flags == flags)
808 sdata->vif.offload_flags = flags;
812 static void ieee80211_set_vif_encap_ops(struct ieee80211_sub_if_data *sdata)
814 struct ieee80211_local *local = sdata->local;
815 struct ieee80211_sub_if_data *bss = sdata;
818 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
819 if (!sdata->bss)
822 bss = container_of(sdata->bss, struct ieee80211_sub_if_data, u.ap);
830 if (sdata->wdev.use_4addr &&
834 sdata->dev->netdev_ops = enabled ? &ieee80211_dataif_8023_ops :
838 static void ieee80211_recalc_sdata_offload(struct ieee80211_sub_if_data *sdata)
840 struct ieee80211_local *local = sdata->local;
843 if (ieee80211_set_sdata_offload_flags(sdata)) {
844 drv_update_vif_offload(local, sdata);
845 ieee80211_set_vif_encap_ops(sdata);
850 vsdata->bss != &sdata->u.ap)
859 struct ieee80211_sub_if_data *sdata;
866 list_for_each_entry(sdata, &local->interfaces, list) {
867 if (!ieee80211_sdata_running(sdata))
870 ieee80211_recalc_sdata_offload(sdata);
876 void ieee80211_adjust_monitor_flags(struct ieee80211_sub_if_data *sdata,
879 struct ieee80211_local *local = sdata->local;
880 u32 flags = sdata->u.mntr.flags;
896 static void ieee80211_set_default_queues(struct ieee80211_sub_if_data *sdata)
898 struct ieee80211_local *local = sdata->local;
903 sdata->vif.hw_queue[i] = IEEE80211_INVAL_HW_QUEUE;
905 sdata->vif.hw_queue[i] = i;
907 sdata->vif.hw_queue[i] = 0;
909 sdata->vif.cab_queue = IEEE80211_INVAL_HW_QUEUE;
914 struct ieee80211_sub_if_data *sdata;
925 sdata = kzalloc(sizeof(*sdata) + local->hw.vif_data_size, GFP_KERNEL);
926 if (!sdata)
930 sdata->local = local;
931 sdata->vif.type = NL80211_IFTYPE_MONITOR;
932 snprintf(sdata->name, IFNAMSIZ, "%s-monitor",
934 sdata->wdev.iftype = NL80211_IFTYPE_MONITOR;
936 sdata->encrypt_headroom = IEEE80211_ENCRYPT_HEADROOM;
938 ieee80211_set_default_queues(sdata);
940 ret = drv_add_interface(local, sdata);
943 kfree(sdata);
947 set_bit(SDATA_STATE_RUNNING, &sdata->state);
949 ret = ieee80211_check_queues(sdata, NL80211_IFTYPE_MONITOR);
951 kfree(sdata);
956 rcu_assign_pointer(local->monitor_sdata, sdata);
960 ret = ieee80211_vif_use_channel(sdata, &local->monitor_chandef,
968 drv_remove_interface(local, sdata);
969 kfree(sdata);
973 skb_queue_head_init(&sdata->skb_queue);
974 INIT_WORK(&sdata->work, ieee80211_iface_work);
981 struct ieee80211_sub_if_data *sdata;
990 sdata = rcu_dereference_protected(local->monitor_sdata,
992 if (!sdata) {
1003 ieee80211_vif_release_channel(sdata);
1006 drv_remove_interface(local, sdata);
1008 kfree(sdata);
1018 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
1020 struct ieee80211_local *local = sdata->local;
1026 switch (sdata->vif.type) {
1028 if (!is_valid_ether_addr(sdata->u.wds.remote_addr))
1034 if (!sdata->bss)
1038 list_add(&sdata->u.vlan.list, &sdata->bss->vlans);
1041 master = container_of(sdata->bss,
1043 sdata->control_port_protocol =
1045 sdata->control_port_no_encrypt =
1047 sdata->control_port_over_nl80211 =
1049 sdata->control_port_no_preauth =
1051 sdata->vif.cab_queue = master->vif.cab_queue;
1052 memcpy(sdata->vif.hw_queue, master->vif.hw_queue,
1053 sizeof(sdata->vif.hw_queue));
1054 sdata->vif.bss_conf.chandef = master->vif.bss_conf.chandef;
1057 sdata->crypto_tx_tailroom_needed_cnt +=
1064 sdata->bss = &sdata->u.ap;
1111 switch (sdata->vif.type) {
1114 if (rtnl_dereference(sdata->bss->beacon)) {
1115 ieee80211_vif_vlan_copy_chanctx(sdata);
1117 ieee80211_set_vif_encap_ops(sdata);
1123 if (sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES) {
1128 if (sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE) {
1129 res = drv_add_interface(local, sdata);
1145 ieee80211_adjust_monitor_flags(sdata, 1);
1157 ieee80211_set_sdata_offload_flags(sdata);
1159 res = drv_add_interface(local, sdata);
1163 ieee80211_set_vif_encap_ops(sdata);
1164 res = ieee80211_check_queues(sdata,
1165 ieee80211_vif_type_p2p(&sdata->vif));
1170 if (sdata->vif.type == NL80211_IFTYPE_AP) {
1175 } else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
1179 if (sdata->vif.probe_req_reg)
1180 drv_config_iface_filter(local, sdata,
1184 if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE &&
1185 sdata->vif.type != NL80211_IFTYPE_NAN)
1186 changed |= ieee80211_reset_erp_info(sdata);
1187 ieee80211_bss_info_change_notify(sdata, changed);
1189 switch (sdata->vif.type) {
1212 ieee80211_set_wmm_default(sdata, true,
1213 sdata->vif.type != NL80211_IFTYPE_STATION);
1216 set_bit(SDATA_STATE_RUNNING, &sdata->state);
1218 switch (sdata->vif.type) {
1221 sta = sta_info_alloc(sdata, sdata->u.wds.remote_addr,
1242 rcu_assign_pointer(local->p2p_sdata, sdata);
1245 if (sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES)
1247 list_add_tail_rcu(&sdata->u.mntr.list, &local->mon_list);
1258 if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
1269 if (sdata->vif.type == NL80211_IFTYPE_MONITOR ||
1270 sdata->vif.type == NL80211_IFTYPE_AP_VLAN ||
1284 if (sdata->vif.cab_queue == IEEE80211_INVAL_HW_QUEUE ||
1285 (local->queue_stop_reasons[sdata->vif.cab_queue] == 0 &&
1286 skb_queue_empty(&local->pending[sdata->vif.cab_queue]))) {
1288 int ac_queue = sdata->vif.hw_queue[ac];
1300 drv_remove_interface(local, sdata);
1305 sdata->bss = NULL;
1306 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
1308 list_del(&sdata->u.vlan.list);
1312 clear_bit(SDATA_STATE_RUNNING, &sdata->state);
1338 struct ieee80211_sub_if_data *sdata =
1340 struct ieee80211_local *local = sdata->local;
1344 if (!ieee80211_sdata_running(sdata))
1354 while ((skb = skb_dequeue(&sdata->skb_queue))) {
1362 sta = sta_info_get_bss(sdata, mgmt->sa);
1374 ieee80211_process_delba(sdata, sta,
1396 sta = sta_info_get_bss(sdata, mgmt->sa);
1399 ieee80211_vht_handle_opmode(sdata, sta,
1407 ieee80211_process_mu_groups(sdata, mgmt);
1414 if (sdata->vif.type == NL80211_IFTYPE_STATION)
1415 ieee80211_sta_rx_queued_ext(sdata, skb);
1438 sta = sta_info_get_bss(sdata, mgmt->sa);
1448 } else switch (sdata->vif.type) {
1450 ieee80211_sta_rx_queued_mgmt(sdata, skb);
1453 ieee80211_ibss_rx_queued_mgmt(sdata, skb);
1456 if (!ieee80211_vif_is_mesh(&sdata->vif))
1458 ieee80211_mesh_rx_queued_mgmt(sdata, skb);
1469 switch (sdata->vif.type) {
1471 ieee80211_sta_work(sdata);
1474 ieee80211_ibss_work(sdata);
1477 if (!ieee80211_vif_is_mesh(&sdata->vif))
1479 ieee80211_mesh_work(sdata);
1482 ieee80211_ocb_work(sdata);
1491 struct ieee80211_sub_if_data *sdata =
1494 ieee80211_recalc_smps(sdata);
1500 static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata,
1507 memset(&sdata->u, 0, sizeof(sdata->u));
1510 sdata->vif.type = type;
1511 sdata->vif.p2p = false;
1512 sdata->wdev.iftype = type;
1514 sdata->control_port_protocol = cpu_to_be16(ETH_P_PAE);
1515 sdata->control_port_no_encrypt = false;
1516 sdata->control_port_over_nl80211 = false;
1517 sdata->control_port_no_preauth = false;
1518 sdata->encrypt_headroom = IEEE80211_ENCRYPT_HEADROOM;
1519 sdata->vif.bss_conf.idle = true;
1520 sdata->vif.bss_conf.txpower = INT_MIN; /* unset */
1522 sdata->noack_map = 0;
1525 if (sdata->dev) {
1526 sdata->dev->netdev_ops = &ieee80211_dataif_ops;
1527 sdata->dev->type = ARPHRD_ETHER;
1530 skb_queue_head_init(&sdata->skb_queue);
1531 INIT_WORK(&sdata->work, ieee80211_iface_work);
1532 INIT_WORK(&sdata->recalc_smps, ieee80211_recalc_smps_work);
1533 INIT_WORK(&sdata->csa_finalize_work, ieee80211_csa_finalize_work);
1534 INIT_LIST_HEAD(&sdata->assigned_chanctx_list);
1535 INIT_LIST_HEAD(&sdata->reserved_chanctx_list);
1540 sdata->vif.type = type;
1541 sdata->vif.p2p = true;
1544 skb_queue_head_init(&sdata->u.ap.ps.bc_buf);
1545 INIT_LIST_HEAD(&sdata->u.ap.vlans);
1546 sdata->vif.bss_conf.bssid = sdata->vif.addr;
1550 sdata->vif.type = type;
1551 sdata->vif.p2p = true;
1554 sdata->vif.bss_conf.bssid = sdata->u.mgd.bssid;
1555 ieee80211_sta_setup_sdata(sdata);
1558 sdata->vif.bss_conf.bssid = bssid_wildcard;
1559 ieee80211_ocb_setup_sdata(sdata);
1562 sdata->vif.bss_conf.bssid = sdata->u.ibss.bssid;
1563 ieee80211_ibss_setup_sdata(sdata);
1566 if (ieee80211_vif_is_mesh(&sdata->vif))
1567 ieee80211_mesh_init_sdata(sdata);
1570 sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
1571 sdata->dev->netdev_ops = &ieee80211_monitorif_ops;
1572 sdata->u.mntr.flags = MONITOR_FLAG_CONTROL |
1576 sdata->vif.bss_conf.bssid = NULL;
1579 idr_init(&sdata->u.nan.function_inst_ids);
1580 spin_lock_init(&sdata->u.nan.func_lock);
1581 sdata->vif.bss_conf.bssid = sdata->vif.addr;
1585 sdata->vif.bss_conf.bssid = sdata->vif.addr;
1593 ieee80211_debugfs_add_netdev(sdata);
1596 static int ieee80211_runtime_change_iftype(struct ieee80211_sub_if_data *sdata,
1599 struct ieee80211_local *local = sdata->local;
1609 switch (sdata->vif.type) {
1649 ret = ieee80211_check_concurrent_iface(sdata, internal_type);
1653 ieee80211_stop_vif_queues(local, sdata,
1657 ieee80211_do_stop(sdata, false);
1659 ieee80211_teardown_sdata(sdata);
1661 ieee80211_set_sdata_offload_flags(sdata);
1662 ret = drv_change_interface(local, sdata, internal_type, p2p);
1664 type = ieee80211_vif_type_p2p(&sdata->vif);
1671 ieee80211_check_queues(sdata, type);
1673 ieee80211_setup_sdata(sdata, type);
1674 ieee80211_set_vif_encap_ops(sdata);
1676 err = ieee80211_do_open(&sdata->wdev, false);
1679 ieee80211_wake_vif_queues(local, sdata,
1684 int ieee80211_if_change_type(struct ieee80211_sub_if_data *sdata,
1691 if (type == ieee80211_vif_type_p2p(&sdata->vif))
1694 if (ieee80211_sdata_running(sdata)) {
1695 ret = ieee80211_runtime_change_iftype(sdata, type);
1700 ieee80211_teardown_sdata(sdata);
1701 ieee80211_setup_sdata(sdata, type);
1706 sdata->u.mgd.use_4addr = false;
1714 struct ieee80211_sub_if_data *sdata;
1736 list_for_each_entry(sdata, &local->interfaces, list) {
1737 if (sdata->vif.type != NL80211_IFTYPE_AP)
1739 memcpy(perm_addr, sdata->vif.addr, ETH_ALEN);
1747 list_for_each_entry(sdata, &local->interfaces, list) {
1748 if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE)
1750 if (!ieee80211_sdata_running(sdata))
1752 memcpy(perm_addr, sdata->vif.addr, ETH_ALEN);
1762 list_for_each_entry(sdata, &local->interfaces, list) {
1764 sdata->vif.addr)) {
1798 list_for_each_entry(sdata, &local->interfaces, list) {
1799 if (sdata->vif.type == NL80211_IFTYPE_MONITOR)
1801 m = sdata->vif.addr;
1823 list_for_each_entry(sdata, &local->interfaces, list) {
1824 if (ether_addr_equal(tmp_addr, sdata->vif.addr)) {
1850 struct ieee80211_sub_if_data *sdata = NULL;
1861 sdata = kzalloc(sizeof(*sdata) + local->hw.vif_data_size,
1863 if (!sdata)
1865 wdev = &sdata->wdev;
1867 sdata->dev = NULL;
1868 strlcpy(sdata->name, name, IFNAMSIZ);
1870 memcpy(sdata->vif.addr, wdev->address, ETH_ALEN);
1872 int size = ALIGN(sizeof(*sdata) + local->hw.vif_data_size,
1932 sdata = netdev_priv(ndev);
1933 ndev->ieee80211_ptr = &sdata->wdev;
1934 memcpy(sdata->vif.addr, ndev->dev_addr, ETH_ALEN);
1935 memcpy(sdata->name, ndev->name, IFNAMSIZ);
1939 ieee80211_txq_init(sdata, NULL, txqi, 0);
1942 sdata->dev = ndev;
1946 sdata->wdev.wiphy = local->hw.wiphy;
1947 sdata->local = local;
1949 ieee80211_init_frag_cache(&sdata->frags);
1951 INIT_LIST_HEAD(&sdata->key_list);
1953 INIT_DELAYED_WORK(&sdata->dfs_cac_timer_work,
1955 INIT_DELAYED_WORK(&sdata->dec_tailroom_needed_wk,
1961 sdata->rc_rateidx_mask[i] =
1967 memcpy(sdata->rc_rateidx_mcs_mask[i],
1969 sizeof(sdata->rc_rateidx_mcs_mask[i]));
1972 vht_rate_mask = sdata->rc_rateidx_vht_mcs_mask[i];
1975 memset(sdata->rc_rateidx_mcs_mask[i], 0,
1976 sizeof(sdata->rc_rateidx_mcs_mask[i]));
1977 memset(sdata->rc_rateidx_vht_mcs_mask[i], 0,
1978 sizeof(sdata->rc_rateidx_vht_mcs_mask[i]));
1982 ieee80211_set_default_queues(sdata);
1984 sdata->ap_power_level = IEEE80211_UNSET_POWER_LEVEL;
1985 sdata->user_power_level = local->user_power_level;
1987 sdata->encrypt_headroom = IEEE80211_ENCRYPT_HEADROOM;
1990 ieee80211_setup_sdata(sdata, type);
1995 sdata->u.mgd.use_4addr = params->use_4addr;
2022 list_add_tail_rcu(&sdata->list, &local->interfaces);
2026 *new_wdev = &sdata->wdev;
2031 void ieee80211_if_remove(struct ieee80211_sub_if_data *sdata)
2035 mutex_lock(&sdata->local->iflist_mtx);
2036 list_del_rcu(&sdata->list);
2037 mutex_unlock(&sdata->local->iflist_mtx);
2039 if (sdata->vif.txq)
2040 ieee80211_txq_purge(sdata->local, to_txq_info(sdata->vif.txq));
2044 if (sdata->dev) {
2045 unregister_netdevice(sdata->dev);
2047 cfg80211_unregister_wdev(&sdata->wdev);
2048 ieee80211_teardown_sdata(sdata);
2049 kfree(sdata);
2053 void ieee80211_sdata_stop(struct ieee80211_sub_if_data *sdata)
2055 if (WARN_ON_ONCE(!test_bit(SDATA_STATE_RUNNING, &sdata->state)))
2057 ieee80211_do_stop(sdata, true);
2062 struct ieee80211_sub_if_data *sdata, *tmp;
2087 list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) {
2088 list_del(&sdata->list);
2090 if (sdata->dev)
2091 unregister_netdevice_queue(sdata->dev, &unreg_list);
2093 list_add(&sdata->list, &wdev_list);
2098 list_for_each_entry_safe(sdata, tmp, &wdev_list, list) {
2099 list_del(&sdata->list);
2100 cfg80211_unregister_wdev(&sdata->wdev);
2101 kfree(sdata);
2109 struct ieee80211_sub_if_data *sdata;
2120 sdata = IEEE80211_DEV_TO_SUB_IF(dev);
2121 memcpy(sdata->name, dev->name, IFNAMSIZ);
2122 ieee80211_debugfs_rename_netdev(sdata);
2141 void ieee80211_vif_inc_num_mcast(struct ieee80211_sub_if_data *sdata)
2143 if (sdata->vif.type == NL80211_IFTYPE_AP)
2144 atomic_inc(&sdata->u.ap.num_mcast_sta);
2145 else if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
2146 atomic_inc(&sdata->u.vlan.num_mcast_sta);
2149 void ieee80211_vif_dec_num_mcast(struct ieee80211_sub_if_data *sdata)
2151 if (sdata->vif.type == NL80211_IFTYPE_AP)
2152 atomic_dec(&sdata->u.ap.num_mcast_sta);
2153 else if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
2154 atomic_dec(&sdata->u.vlan.num_mcast_sta);