Lines Matching refs:sdata
31 struct ieee80211_sub_if_data *sdata; in ieee80211_add_iface() local
39 sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_add_iface()
40 sdata->u.mntr_flags = *flags; in ieee80211_add_iface()
58 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_change_iface() local
61 ret = ieee80211_if_change_type(sdata, type); in ieee80211_change_iface()
67 RCU_INIT_POINTER(sdata->u.vlan.sta, NULL); in ieee80211_change_iface()
70 sdata->u.mgd.use_4addr = params->use_4addr; in ieee80211_change_iface()
72 if (sdata->vif.type == NL80211_IFTYPE_MONITOR && flags) { in ieee80211_change_iface()
73 struct ieee80211_local *local = sdata->local; in ieee80211_change_iface()
75 if (ieee80211_sdata_running(sdata)) { in ieee80211_change_iface()
85 (sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES)) in ieee80211_change_iface()
88 ieee80211_adjust_monitor_flags(sdata, -1); in ieee80211_change_iface()
89 sdata->u.mntr_flags = *flags; in ieee80211_change_iface()
90 ieee80211_adjust_monitor_flags(sdata, 1); in ieee80211_change_iface()
99 sdata->u.mntr_flags = *flags; in ieee80211_change_iface()
122 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_set_noack_map() local
124 sdata->noack_map = noack_map; in ieee80211_set_noack_map()
132 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_add_key() local
137 if (!ieee80211_sdata_running(sdata)) in ieee80211_add_key()
145 if (IS_ERR(sdata->local->wep_tx_tfm)) in ieee80211_add_key()
160 mutex_lock(&sdata->local->sta_mtx); in ieee80211_add_key()
163 if (ieee80211_vif_is_mesh(&sdata->vif)) in ieee80211_add_key()
164 sta = sta_info_get(sdata, mac_addr); in ieee80211_add_key()
166 sta = sta_info_get_bss(sdata, mac_addr); in ieee80211_add_key()
184 switch (sdata->vif.type) { in ieee80211_add_key()
186 if (sdata->u.mgd.mfp != IEEE80211_MFP_DISABLED) in ieee80211_add_key()
200 if (sdata->u.mesh.security != IEEE80211_MESH_SEC_NONE) in ieee80211_add_key()
216 err = ieee80211_key_link(key, sdata, sta); in ieee80211_add_key()
219 mutex_unlock(&sdata->local->sta_mtx); in ieee80211_add_key()
227 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_del_key() local
228 struct ieee80211_local *local = sdata->local; in ieee80211_del_key()
239 sta = sta_info_get_bss(sdata, mac_addr); in ieee80211_del_key()
248 key = key_mtx_dereference(local, sdata->keys[key_idx]); in ieee80211_del_key()
271 struct ieee80211_sub_if_data *sdata; in ieee80211_get_key() local
281 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_get_key()
286 sta = sta_info_get_bss(sdata, mac_addr); in ieee80211_get_key()
295 key = rcu_dereference(sdata->keys[key_idx]); in ieee80211_get_key()
310 drv_get_tkip_seq(sdata->local, in ieee80211_get_key()
363 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_config_default_key() local
365 ieee80211_set_default_key(sdata, key_idx, uni, multi); in ieee80211_config_default_key()
374 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_config_default_mgmt_key() local
376 ieee80211_set_default_mgmt_key(sdata, key_idx); in ieee80211_config_default_mgmt_key()
396 ieee80211_get_sdata_band(sta->sdata)]; in sta_set_rate_info_tx()
424 ieee80211_get_sdata_band(sta->sdata)]; in sta_set_rate_info_rx()
443 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_set_sinfo() local
444 struct ieee80211_local *local = sdata->local; in sta_set_sinfo()
449 sinfo->generation = sdata->local->sta_generation; in sta_set_sinfo()
487 drv_get_rssi(local, sdata, &sta->sta, &sinfo->signal)) in sta_set_sinfo()
495 if (ieee80211_vif_is_mesh(&sdata->vif)) { in sta_set_sinfo()
518 if (sdata->vif.bss_conf.use_cts_prot) in sta_set_sinfo()
520 if (sdata->vif.bss_conf.use_short_preamble) in sta_set_sinfo()
522 if (sdata->vif.bss_conf.use_short_slot) in sta_set_sinfo()
524 sinfo->bss_param.dtim_period = sdata->local->hw.conf.ps_dtim_period; in sta_set_sinfo()
525 sinfo->bss_param.beacon_interval = sdata->vif.bss_conf.beacon_int; in sta_set_sinfo()
566 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_get_et_sset_count() local
572 rv += drv_get_et_sset_count(sdata, sset); in ieee80211_get_et_sset_count()
584 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_get_et_stats() local
588 struct ieee80211_local *local = sdata->local; in ieee80211_get_et_stats()
622 if (sdata->vif.type == NL80211_IFTYPE_STATION) { in ieee80211_get_et_stats()
623 sta = sta_info_get_bss(sdata, sdata->u.mgd.bssid); in ieee80211_get_et_stats()
625 if (!(sta && !WARN_ON(sta->sdata->dev != dev))) in ieee80211_get_et_stats()
652 if (sta->sdata->dev != dev) in ieee80211_get_et_stats()
666 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_get_et_stats()
719 drv_get_et_stats(sdata, stats, &(data[STA_STATS_LEN])); in ieee80211_get_et_stats()
726 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_get_et_strings() local
733 drv_get_et_strings(sdata, sset, &(data[sz_sta_stats])); in ieee80211_get_et_strings()
739 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_dump_station() local
740 struct ieee80211_local *local = sdata->local; in ieee80211_dump_station()
746 sta = sta_info_get_by_idx(sdata, idx); in ieee80211_dump_station()
769 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_get_station() local
770 struct ieee80211_local *local = sdata->local; in ieee80211_get_station()
776 sta = sta_info_get_bss(sdata, mac); in ieee80211_get_station()
791 struct ieee80211_sub_if_data *sdata; in ieee80211_set_monitor_channel() local
799 sdata = rcu_dereference_protected( in ieee80211_set_monitor_channel()
802 if (sdata) { in ieee80211_set_monitor_channel()
803 ieee80211_vif_release_channel(sdata); in ieee80211_set_monitor_channel()
804 ret = ieee80211_vif_use_channel(sdata, chandef, in ieee80211_set_monitor_channel()
819 static int ieee80211_set_probe_resp(struct ieee80211_sub_if_data *sdata, in ieee80211_set_probe_resp() argument
827 old = rtnl_dereference(sdata->u.ap.probe_resp); in ieee80211_set_probe_resp()
836 rcu_assign_pointer(sdata->u.ap.probe_resp, new); in ieee80211_set_probe_resp()
843 static int ieee80211_assign_beacon(struct ieee80211_sub_if_data *sdata, in ieee80211_assign_beacon() argument
851 old = rtnl_dereference(sdata->u.ap.beacon); in ieee80211_assign_beacon()
900 err = ieee80211_set_probe_resp(sdata, params->probe_resp, in ieee80211_assign_beacon()
907 rcu_assign_pointer(sdata->u.ap.beacon, new); in ieee80211_assign_beacon()
918 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_start_ap() local
928 old = rtnl_dereference(sdata->u.ap.beacon); in ieee80211_start_ap()
933 sdata->smps_mode = IEEE80211_SMPS_OFF; in ieee80211_start_ap()
934 sdata->needed_rx_chains = sdata->local->rx_chains; in ieee80211_start_ap()
935 sdata->radar_required = params->radar_required; in ieee80211_start_ap()
937 err = ieee80211_vif_use_channel(sdata, ¶ms->chandef, in ieee80211_start_ap()
941 ieee80211_vif_copy_chanctx_to_vlans(sdata, false); in ieee80211_start_ap()
947 sdata->control_port_protocol = params->crypto.control_port_ethertype; in ieee80211_start_ap()
948 sdata->control_port_no_encrypt = params->crypto.control_port_no_encrypt; in ieee80211_start_ap()
949 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) { in ieee80211_start_ap()
956 sdata->vif.bss_conf.beacon_int = params->beacon_interval; in ieee80211_start_ap()
957 sdata->vif.bss_conf.dtim_period = params->dtim_period; in ieee80211_start_ap()
958 sdata->vif.bss_conf.enable_beacon = true; in ieee80211_start_ap()
960 sdata->vif.bss_conf.ssid_len = params->ssid_len; in ieee80211_start_ap()
962 memcpy(sdata->vif.bss_conf.ssid, params->ssid, in ieee80211_start_ap()
964 sdata->vif.bss_conf.hidden_ssid = in ieee80211_start_ap()
967 memset(&sdata->vif.bss_conf.p2p_noa_attr, 0, in ieee80211_start_ap()
968 sizeof(sdata->vif.bss_conf.p2p_noa_attr)); in ieee80211_start_ap()
969 sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow = in ieee80211_start_ap()
972 sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow |= in ieee80211_start_ap()
975 err = ieee80211_assign_beacon(sdata, ¶ms->beacon); in ieee80211_start_ap()
980 err = drv_start_ap(sdata->local, sdata); in ieee80211_start_ap()
982 old = rtnl_dereference(sdata->u.ap.beacon); in ieee80211_start_ap()
985 RCU_INIT_POINTER(sdata->u.ap.beacon, NULL); in ieee80211_start_ap()
989 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_start_ap()
992 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in ieee80211_start_ap()
1001 struct ieee80211_sub_if_data *sdata; in ieee80211_change_beacon() local
1005 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_change_beacon()
1007 old = rtnl_dereference(sdata->u.ap.beacon); in ieee80211_change_beacon()
1011 err = ieee80211_assign_beacon(sdata, params); in ieee80211_change_beacon()
1014 ieee80211_bss_info_change_notify(sdata, err); in ieee80211_change_beacon()
1020 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_stop_ap() local
1022 struct ieee80211_local *local = sdata->local; in ieee80211_stop_ap()
1026 old_beacon = rtnl_dereference(sdata->u.ap.beacon); in ieee80211_stop_ap()
1029 old_probe_resp = rtnl_dereference(sdata->u.ap.probe_resp); in ieee80211_stop_ap()
1032 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in ieee80211_stop_ap()
1037 RCU_INIT_POINTER(sdata->u.ap.beacon, NULL); in ieee80211_stop_ap()
1038 RCU_INIT_POINTER(sdata->u.ap.probe_resp, NULL); in ieee80211_stop_ap()
1043 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in ieee80211_stop_ap()
1045 sta_info_flush_defer(sdata); in ieee80211_stop_ap()
1048 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) { in ieee80211_stop_ap()
1052 sta_info_flush_cleanup(sdata); in ieee80211_stop_ap()
1053 ieee80211_free_keys(sdata); in ieee80211_stop_ap()
1055 sdata->vif.bss_conf.enable_beacon = false; in ieee80211_stop_ap()
1056 sdata->vif.bss_conf.ssid_len = 0; in ieee80211_stop_ap()
1057 clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED, &sdata->state); in ieee80211_stop_ap()
1058 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED); in ieee80211_stop_ap()
1060 if (sdata->wdev.cac_started) { in ieee80211_stop_ap()
1061 cancel_delayed_work_sync(&sdata->dfs_cac_timer_work); in ieee80211_stop_ap()
1062 cfg80211_cac_event(sdata->dev, NL80211_RADAR_CAC_ABORTED, in ieee80211_stop_ap()
1066 drv_stop_ap(sdata->local, sdata); in ieee80211_stop_ap()
1069 local->total_ps_buffered -= skb_queue_len(&sdata->u.ap.ps.bc_buf); in ieee80211_stop_ap()
1070 skb_queue_purge(&sdata->u.ap.ps.bc_buf); in ieee80211_stop_ap()
1072 ieee80211_vif_copy_chanctx_to_vlans(sdata, true); in ieee80211_stop_ap()
1073 ieee80211_vif_release_channel(sdata); in ieee80211_stop_ap()
1116 skb->dev = sta->sdata->dev; in ieee80211_send_layer2_update()
1117 skb->protocol = eth_type_trans(skb, sta->sdata->dev); in ieee80211_send_layer2_update()
1182 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_apply_parameters() local
1183 enum ieee80211_band band = ieee80211_get_sdata_band(sdata); in sta_apply_parameters()
1191 if (ieee80211_vif_is_mesh(&sdata->vif)) { in sta_apply_parameters()
1286 ieee80211_ht_cap_ie_to_sta_ht_cap(sdata, sband, in sta_apply_parameters()
1290 ieee80211_vht_cap_ie_to_sta_vht_cap(sdata, sband, in sta_apply_parameters()
1293 if (ieee80211_vif_is_mesh(&sdata->vif)) { in sta_apply_parameters()
1302 sdata); in sta_apply_parameters()
1307 sdata->u.mesh.mshcfg.power_mode); in sta_apply_parameters()
1317 sdata); in sta_apply_parameters()
1322 ieee80211_mps_local_status_update(sdata); in sta_apply_parameters()
1346 ieee80211_bss_info_change_notify(sdata, changed); in sta_apply_parameters()
1358 struct ieee80211_sub_if_data *sdata; in ieee80211_add_station() local
1363 sdata = IEEE80211_DEV_TO_SUB_IF(params->vlan); in ieee80211_add_station()
1365 if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN && in ieee80211_add_station()
1366 sdata->vif.type != NL80211_IFTYPE_AP) in ieee80211_add_station()
1369 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_add_station()
1371 if (ether_addr_equal(mac, sdata->vif.addr)) in ieee80211_add_station()
1377 sta = sta_info_alloc(sdata, mac, GFP_KERNEL); in ieee80211_add_station()
1403 layer2_update = sdata->vif.type == NL80211_IFTYPE_AP_VLAN || in ieee80211_add_station()
1404 sdata->vif.type == NL80211_IFTYPE_AP; in ieee80211_add_station()
1423 struct ieee80211_sub_if_data *sdata; in ieee80211_del_station() local
1425 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_del_station()
1428 return sta_info_destroy_addr_bss(sdata, mac); in ieee80211_del_station()
1430 sta_info_flush(sdata); in ieee80211_del_station()
1438 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_change_station() local
1447 sta = sta_info_get_bss(sdata, mac); in ieee80211_change_station()
1453 switch (sdata->vif.type) { in ieee80211_change_station()
1455 if (sdata->u.mesh.user_mpm) in ieee80211_change_station()
1486 if (params->vlan && params->vlan != sta->sdata->dev) { in ieee80211_change_station()
1502 if (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && in ieee80211_change_station()
1503 sta->sdata->u.vlan.sta) { in ieee80211_change_station()
1504 rcu_assign_pointer(sta->sdata->u.vlan.sta, NULL); in ieee80211_change_station()
1508 sta->sdata = vlansdata; in ieee80211_change_station()
1513 atomic_dec(&sta->sdata->bss->num_mcast_sta); in ieee80211_change_station()
1515 atomic_inc(&sta->sdata->bss->num_mcast_sta); in ieee80211_change_station()
1532 if (sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_change_station()
1535 ieee80211_recalc_ps_vif(sdata); in ieee80211_change_station()
1548 struct ieee80211_sub_if_data *sdata; in ieee80211_add_mpath() local
1552 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_add_mpath()
1555 sta = sta_info_get(sdata, next_hop); in ieee80211_add_mpath()
1561 mpath = mesh_path_add(sdata, dst); in ieee80211_add_mpath()
1576 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_del_mpath() local
1579 return mesh_path_del(sdata, dst); in ieee80211_del_mpath()
1581 mesh_path_flush_by_iface(sdata); in ieee80211_del_mpath()
1589 struct ieee80211_sub_if_data *sdata; in ieee80211_change_mpath() local
1593 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_change_mpath()
1597 sta = sta_info_get(sdata, next_hop); in ieee80211_change_mpath()
1603 mpath = mesh_path_lookup(sdata, dst); in ieee80211_change_mpath()
1661 struct ieee80211_sub_if_data *sdata; in ieee80211_get_mpath() local
1664 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_get_mpath()
1667 mpath = mesh_path_lookup(sdata, dst); in ieee80211_get_mpath()
1682 struct ieee80211_sub_if_data *sdata; in ieee80211_dump_mpath() local
1685 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_dump_mpath()
1688 mpath = mesh_path_lookup_by_idx(sdata, idx); in ieee80211_dump_mpath()
1703 struct ieee80211_sub_if_data *sdata; in ieee80211_get_mesh_config() local
1704 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_get_mesh_config()
1706 memcpy(conf, &(sdata->u.mesh.mshcfg), sizeof(struct mesh_config)); in ieee80211_get_mesh_config()
1720 struct ieee80211_sub_if_data *sdata = container_of(ifmsh, in copy_mesh_setup() local
1751 memcpy(sdata->vif.bss_conf.mcast_rate, setup->mcast_rate, in copy_mesh_setup()
1754 sdata->vif.bss_conf.beacon_int = setup->beacon_interval; in copy_mesh_setup()
1755 sdata->vif.bss_conf.dtim_period = setup->dtim_period; in copy_mesh_setup()
1765 struct ieee80211_sub_if_data *sdata; in ieee80211_update_mesh_config() local
1768 sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_update_mesh_config()
1769 ifmsh = &sdata->u.mesh; in ieee80211_update_mesh_config()
1772 conf = &(sdata->u.mesh.mshcfg); in ieee80211_update_mesh_config()
1840 if (!(sdata->local->hw.flags & IEEE80211_HW_SIGNAL_DBM)) in ieee80211_update_mesh_config()
1846 sdata->vif.bss_conf.ht_operation_mode = nconf->ht_opmode; in ieee80211_update_mesh_config()
1847 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_HT); in ieee80211_update_mesh_config()
1860 ieee80211_mps_local_status_update(sdata); in ieee80211_update_mesh_config()
1865 ieee80211_mbss_info_change_notify(sdata, BSS_CHANGED_BEACON); in ieee80211_update_mesh_config()
1873 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_join_mesh() local
1874 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_join_mesh()
1883 sdata->smps_mode = IEEE80211_SMPS_OFF; in ieee80211_join_mesh()
1884 sdata->needed_rx_chains = sdata->local->rx_chains; in ieee80211_join_mesh()
1886 err = ieee80211_vif_use_channel(sdata, &setup->chandef, in ieee80211_join_mesh()
1891 return ieee80211_start_mesh(sdata); in ieee80211_join_mesh()
1896 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_leave_mesh() local
1898 ieee80211_stop_mesh(sdata); in ieee80211_leave_mesh()
1899 ieee80211_vif_release_channel(sdata); in ieee80211_leave_mesh()
1909 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_change_bss() local
1913 if (!rtnl_dereference(sdata->u.ap.beacon)) in ieee80211_change_bss()
1916 band = ieee80211_get_sdata_band(sdata); in ieee80211_change_bss()
1919 sdata->vif.bss_conf.use_cts_prot = params->use_cts_prot; in ieee80211_change_bss()
1923 sdata->vif.bss_conf.use_short_preamble = in ieee80211_change_bss()
1928 if (!sdata->vif.bss_conf.use_short_slot && in ieee80211_change_bss()
1930 sdata->vif.bss_conf.use_short_slot = true; in ieee80211_change_bss()
1935 sdata->vif.bss_conf.use_short_slot = in ieee80211_change_bss()
1952 sdata->vif.bss_conf.basic_rates = rates; in ieee80211_change_bss()
1958 sdata->flags |= IEEE80211_SDATA_DONT_BRIDGE_PACKETS; in ieee80211_change_bss()
1960 sdata->flags &= ~IEEE80211_SDATA_DONT_BRIDGE_PACKETS; in ieee80211_change_bss()
1964 sdata->vif.bss_conf.ht_operation_mode = in ieee80211_change_bss()
1970 sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow &= in ieee80211_change_bss()
1972 sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow |= in ieee80211_change_bss()
1978 sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow |= in ieee80211_change_bss()
1982 sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow &= in ieee80211_change_bss()
1987 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_change_bss()
1997 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_set_txq_params() local
2018 sdata->tx_conf[params->ac] = p; in ieee80211_set_txq_params()
2019 if (drv_conf_tx(local, sdata, params->ac, &p)) { in ieee80211_set_txq_params()
2026 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_QOS); in ieee80211_set_txq_params()
2050 struct ieee80211_sub_if_data *sdata; in ieee80211_scan() local
2052 sdata = IEEE80211_WDEV_TO_SUB_IF(req->wdev); in ieee80211_scan()
2054 switch (ieee80211_vif_type_p2p(&sdata->vif)) { in ieee80211_scan()
2062 if (sdata->local->ops->hw_scan) in ieee80211_scan()
2077 if (sdata->u.ap.beacon && in ieee80211_scan()
2086 return ieee80211_request_scan(sdata, req); in ieee80211_scan()
2094 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_sched_scan_start() local
2096 if (!sdata->local->ops->sched_scan_start) in ieee80211_sched_scan_start()
2099 return ieee80211_request_sched_scan_start(sdata, req); in ieee80211_sched_scan_start()
2105 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_sched_scan_stop() local
2107 if (!sdata->local->ops->sched_scan_stop) in ieee80211_sched_scan_stop()
2110 return ieee80211_request_sched_scan_stop(sdata); in ieee80211_sched_scan_stop()
2151 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_set_mcast_rate() local
2153 memcpy(sdata->vif.bss_conf.mcast_rate, rate, in ieee80211_set_mcast_rate()
2207 struct ieee80211_sub_if_data *sdata; in ieee80211_set_tx_power() local
2210 sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_set_tx_power()
2214 sdata->user_power_level = IEEE80211_UNSET_POWER_LEVEL; in ieee80211_set_tx_power()
2220 sdata->user_power_level = MBM_TO_DBM(mbm); in ieee80211_set_tx_power()
2224 ieee80211_recalc_txpower(sdata); in ieee80211_set_tx_power()
2242 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_set_tx_power()
2243 sdata->user_power_level = local->user_power_level; in ieee80211_set_tx_power()
2244 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_set_tx_power()
2245 ieee80211_recalc_txpower(sdata); in ieee80211_set_tx_power()
2256 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_get_tx_power() local
2261 *dbm = sdata->vif.bss_conf.txpower; in ieee80211_get_tx_power()
2269 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_set_wds_peer() local
2271 memcpy(&sdata->u.wds.remote_addr, addr, ETH_ALEN); in ieee80211_set_wds_peer()
2308 int __ieee80211_request_smps(struct ieee80211_sub_if_data *sdata, in __ieee80211_request_smps() argument
2315 lockdep_assert_held(&sdata->u.mgd.mtx); in __ieee80211_request_smps()
2317 old_req = sdata->u.mgd.req_smps; in __ieee80211_request_smps()
2318 sdata->u.mgd.req_smps = smps_mode; in __ieee80211_request_smps()
2329 if (!sdata->u.mgd.associated || in __ieee80211_request_smps()
2330 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT) in __ieee80211_request_smps()
2333 ap = sdata->u.mgd.associated->bssid; in __ieee80211_request_smps()
2336 if (sdata->u.mgd.powersave) in __ieee80211_request_smps()
2343 err = ieee80211_send_smps_action(sdata, smps_mode, in __ieee80211_request_smps()
2346 sdata->u.mgd.req_smps = old_req; in __ieee80211_request_smps()
2354 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_set_power_mgmt() local
2357 if (sdata->vif.type != NL80211_IFTYPE_STATION && in ieee80211_set_power_mgmt()
2358 sdata->vif.type != NL80211_IFTYPE_MESH_POINT) in ieee80211_set_power_mgmt()
2364 if (enabled == sdata->u.mgd.powersave && in ieee80211_set_power_mgmt()
2368 sdata->u.mgd.powersave = enabled; in ieee80211_set_power_mgmt()
2372 mutex_lock(&sdata->u.mgd.mtx); in ieee80211_set_power_mgmt()
2373 __ieee80211_request_smps(sdata, sdata->u.mgd.req_smps); in ieee80211_set_power_mgmt()
2374 mutex_unlock(&sdata->u.mgd.mtx); in ieee80211_set_power_mgmt()
2380 ieee80211_recalc_ps_vif(sdata); in ieee80211_set_power_mgmt()
2389 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_set_cqm_rssi_config() local
2390 struct ieee80211_vif *vif = &sdata->vif; in ieee80211_set_cqm_rssi_config()
2401 if (sdata->u.mgd.associated && in ieee80211_set_cqm_rssi_config()
2402 sdata->vif.driver_flags & IEEE80211_VIF_SUPPORTS_CQM_RSSI) in ieee80211_set_cqm_rssi_config()
2403 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_CQM); in ieee80211_set_cqm_rssi_config()
2413 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_set_bitrate_mask() local
2417 if (!ieee80211_sdata_running(sdata)) in ieee80211_set_bitrate_mask()
2421 ret = drv_set_bitrate_mask(local, sdata, mask); in ieee80211_set_bitrate_mask()
2430 sdata->rc_rateidx_mask[i] = mask->control[i].legacy; in ieee80211_set_bitrate_mask()
2431 memcpy(sdata->rc_rateidx_mcs_mask[i], mask->control[i].mcs, in ieee80211_set_bitrate_mask()
2434 sdata->rc_has_mcs_mask[i] = false; in ieee80211_set_bitrate_mask()
2439 if (~sdata->rc_rateidx_mcs_mask[i][j]) { in ieee80211_set_bitrate_mask()
2440 sdata->rc_has_mcs_mask[i] = true; in ieee80211_set_bitrate_mask()
2449 struct ieee80211_sub_if_data *sdata, in ieee80211_start_roc_work() argument
2474 roc->sdata = sdata; in ieee80211_start_roc_work()
2503 ret = drv_remain_on_channel(local, sdata, channel, duration, type); in ieee80211_start_roc_work()
2514 if (tmp->chan != channel || tmp->sdata != sdata) in ieee80211_start_roc_work()
2639 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_remain_on_channel() local
2640 struct ieee80211_local *local = sdata->local; in ieee80211_remain_on_channel()
2644 ret = ieee80211_start_roc_work(local, sdata, chan, in ieee80211_remain_on_channel()
2732 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_cancel_remain_on_channel() local
2733 struct ieee80211_local *local = sdata->local; in ieee80211_cancel_remain_on_channel()
2742 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_start_radar_detection() local
2743 struct ieee80211_local *local = sdata->local; in ieee80211_start_radar_detection()
2751 sdata->smps_mode = IEEE80211_SMPS_OFF; in ieee80211_start_radar_detection()
2752 sdata->needed_rx_chains = local->rx_chains; in ieee80211_start_radar_detection()
2753 sdata->radar_required = true; in ieee80211_start_radar_detection()
2756 err = ieee80211_vif_use_channel(sdata, chandef, in ieee80211_start_radar_detection()
2763 ieee80211_queue_delayed_work(&sdata->local->hw, in ieee80211_start_radar_detection()
2764 &sdata->dfs_cac_timer_work, timeout); in ieee80211_start_radar_detection()
2774 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_mgmt_tx() local
2775 struct ieee80211_local *local = sdata->local; in ieee80211_mgmt_tx()
2792 switch (sdata->vif.type) { in ieee80211_mgmt_tx()
2794 if (!sdata->vif.bss_conf.ibss_joined) in ieee80211_mgmt_tx()
2799 if (ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
2800 !sdata->u.mesh.mesh_id_len) in ieee80211_mgmt_tx()
2807 if (sdata->vif.type != NL80211_IFTYPE_ADHOC && in ieee80211_mgmt_tx()
2808 !ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
2809 !rcu_access_pointer(sdata->bss->beacon)) in ieee80211_mgmt_tx()
2815 sta = sta_info_get(sdata, mgmt->da); in ieee80211_mgmt_tx()
2822 if (!sdata->u.mgd.associated) in ieee80211_mgmt_tx()
2839 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_mgmt_tx()
2864 skb->dev = sdata->dev; in ieee80211_mgmt_tx()
2868 ieee80211_tx_skb(sdata, skb); in ieee80211_mgmt_tx()
2880 ret = ieee80211_start_roc_work(local, sdata, chan, in ieee80211_mgmt_tx()
2904 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_mgmt_frame_register() local
2908 if (sdata->vif.type == NL80211_IFTYPE_ADHOC) { in ieee80211_mgmt_frame_register()
2909 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; in ieee80211_mgmt_frame_register()
2970 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_set_rekey_data() local
2975 drv_set_rekey_data(local, sdata, data); in ieee80211_set_rekey_data()
2993 static u16 ieee80211_get_tdls_sta_capab(struct ieee80211_sub_if_data *sdata) in ieee80211_get_tdls_sta_capab() argument
2995 struct ieee80211_local *local = sdata->local; in ieee80211_get_tdls_sta_capab()
2999 if (ieee80211_get_sdata_band(sdata) != IEEE80211_BAND_2GHZ) in ieee80211_get_tdls_sta_capab()
3030 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_prep_tdls_encap_data() local
3031 enum ieee80211_band band = ieee80211_get_sdata_band(sdata); in ieee80211_prep_tdls_encap_data()
3037 memcpy(tf->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_prep_tdls_encap_data()
3049 cpu_to_le16(ieee80211_get_tdls_sta_capab(sdata)); in ieee80211_prep_tdls_encap_data()
3051 ieee80211_add_srates_ie(sdata, skb, false, band); in ieee80211_prep_tdls_encap_data()
3052 ieee80211_add_ext_srates_ie(sdata, skb, false, band); in ieee80211_prep_tdls_encap_data()
3063 cpu_to_le16(ieee80211_get_tdls_sta_capab(sdata)); in ieee80211_prep_tdls_encap_data()
3065 ieee80211_add_srates_ie(sdata, skb, false, band); in ieee80211_prep_tdls_encap_data()
3066 ieee80211_add_ext_srates_ie(sdata, skb, false, band); in ieee80211_prep_tdls_encap_data()
3103 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_prep_tdls_direct() local
3104 enum ieee80211_band band = ieee80211_get_sdata_band(sdata); in ieee80211_prep_tdls_direct()
3110 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_prep_tdls_direct()
3111 memcpy(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN); in ieee80211_prep_tdls_direct()
3125 cpu_to_le16(ieee80211_get_tdls_sta_capab(sdata)); in ieee80211_prep_tdls_direct()
3127 ieee80211_add_srates_ie(sdata, skb, false, band); in ieee80211_prep_tdls_direct()
3128 ieee80211_add_ext_srates_ie(sdata, skb, false, band); in ieee80211_prep_tdls_direct()
3143 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_tdls_mgmt() local
3144 struct ieee80211_local *local = sdata->local; in ieee80211_tdls_mgmt()
3153 if (sdata->vif.type != NL80211_IFTYPE_STATION || in ieee80211_tdls_mgmt()
3154 !sdata->u.mgd.associated) in ieee80211_tdls_mgmt()
3157 tdls_dbg(sdata, "TDLS mgmt action %d peer %pM\n", in ieee80211_tdls_mgmt()
3207 ieee80211_tdls_add_link_ie(skb, sdata->vif.addr, peer, in ieee80211_tdls_mgmt()
3208 sdata->u.mgd.bssid); in ieee80211_tdls_mgmt()
3213 ieee80211_tdls_add_link_ie(skb, peer, sdata->vif.addr, in ieee80211_tdls_mgmt()
3214 sdata->u.mgd.bssid); in ieee80211_tdls_mgmt()
3222 ieee80211_tx_skb(sdata, skb); in ieee80211_tdls_mgmt()
3258 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_tdls_oper() local
3263 if (sdata->vif.type != NL80211_IFTYPE_STATION) in ieee80211_tdls_oper()
3266 tdls_dbg(sdata, "TDLS oper %d peer %pM\n", oper, peer); in ieee80211_tdls_oper()
3271 sta = sta_info_get(sdata, peer); in ieee80211_tdls_oper()
3281 return sta_info_destroy_addr(sdata, peer); in ieee80211_tdls_oper()
3297 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_probe_client() local
3298 struct ieee80211_local *local = sdata->local; in ieee80211_probe_client()
3310 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_probe_client()
3316 sta = sta_info_get(sdata, peer); in ieee80211_probe_client()
3349 memcpy(nullfunc->addr2, sdata->vif.addr, ETH_ALEN); in ieee80211_probe_client()
3350 memcpy(nullfunc->addr3, sdata->vif.addr, ETH_ALEN); in ieee80211_probe_client()
3364 ieee80211_xmit(sdata, skb, band); in ieee80211_probe_client()
3376 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_cfg_get_channel() local
3382 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_cfg_get_channel()
3388 sdata->vif.type == NL80211_IFTYPE_MONITOR) { in ieee80211_cfg_get_channel()