Lines Matching refs:sdata
181 struct ieee80211_sub_if_data *sdata; in ieee80211_generic_frame_duration() local
188 sdata = vif_to_sdata(vif); in ieee80211_generic_frame_duration()
189 short_preamble = sdata->vif.bss_conf.use_short_preamble; in ieee80211_generic_frame_duration()
190 if (sdata->deflink.operating_11g_mode) in ieee80211_generic_frame_duration()
207 struct ieee80211_sub_if_data *sdata; in ieee80211_rts_duration() local
221 sdata = vif_to_sdata(vif); in ieee80211_rts_duration()
222 short_preamble = sdata->vif.bss_conf.use_short_preamble; in ieee80211_rts_duration()
223 if (sdata->deflink.operating_11g_mode) in ieee80211_rts_duration()
250 struct ieee80211_sub_if_data *sdata; in ieee80211_ctstoself_duration() local
263 sdata = vif_to_sdata(vif); in ieee80211_ctstoself_duration()
264 short_preamble = sdata->vif.bss_conf.use_short_preamble; in ieee80211_ctstoself_duration()
265 if (sdata->deflink.operating_11g_mode) in ieee80211_ctstoself_duration()
285 struct ieee80211_sub_if_data *sdata, in wake_tx_push_queue() argument
307 struct ieee80211_sub_if_data *sdata = vif_to_sdata(txq->vif); in ieee80211_handle_wake_tx_queue() local
315 wake_tx_push_queue(local, sdata, queue); in ieee80211_handle_wake_tx_queue()
323 static void __ieee80211_wake_txqs(struct ieee80211_sub_if_data *sdata, int ac) in __ieee80211_wake_txqs() argument
325 struct ieee80211_local *local = sdata->local; in __ieee80211_wake_txqs()
326 struct ieee80211_vif *vif = &sdata->vif; in __ieee80211_wake_txqs()
336 if (!test_bit(SDATA_STATE_RUNNING, &sdata->state)) in __ieee80211_wake_txqs()
339 if (sdata->vif.type == NL80211_IFTYPE_AP) in __ieee80211_wake_txqs()
340 ps = &sdata->bss->ps; in __ieee80211_wake_txqs()
343 if (sdata != sta->sdata) in __ieee80211_wake_txqs()
391 struct ieee80211_sub_if_data *sdata; in _ieee80211_wake_txqs() local
405 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in _ieee80211_wake_txqs()
409 int ac_queue = sdata->vif.hw_queue[ac]; in _ieee80211_wake_txqs()
412 sdata->vif.cab_queue == i) in _ieee80211_wake_txqs()
413 __ieee80211_wake_txqs(sdata, ac); in _ieee80211_wake_txqs()
664 struct ieee80211_sub_if_data *sdata) in ieee80211_get_vif_queues() argument
668 if (sdata && ieee80211_hw_check(&local->hw, QUEUE_CONTROL)) { in ieee80211_get_vif_queues()
674 if (sdata->vif.hw_queue[ac] != IEEE80211_INVAL_HW_QUEUE) in ieee80211_get_vif_queues()
675 queues |= BIT(sdata->vif.hw_queue[ac]); in ieee80211_get_vif_queues()
676 if (sdata->vif.cab_queue != IEEE80211_INVAL_HW_QUEUE) in ieee80211_get_vif_queues()
677 queues |= BIT(sdata->vif.cab_queue); in ieee80211_get_vif_queues()
687 struct ieee80211_sub_if_data *sdata, in __ieee80211_flush_queues() argument
698 queues = ieee80211_get_vif_queues(local, sdata); in __ieee80211_flush_queues()
711 if (sdata != sta->sdata) in __ieee80211_flush_queues()
718 drv_flush(local, sdata, queues, drop); in __ieee80211_flush_queues()
726 struct ieee80211_sub_if_data *sdata, bool drop) in ieee80211_flush_queues() argument
728 __ieee80211_flush_queues(local, sdata, 0, drop); in ieee80211_flush_queues()
737 struct ieee80211_sub_if_data *sdata; in __iterate_interfaces() local
740 list_for_each_entry_rcu(sdata, &local->interfaces, list, in __iterate_interfaces()
743 switch (sdata->vif.type) { in __iterate_interfaces()
745 if (!(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE) && in __iterate_interfaces()
755 active_only && !(sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in __iterate_interfaces()
758 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in __iterate_interfaces()
760 if (ieee80211_sdata_running(sdata) || !active_only) in __iterate_interfaces()
761 iterator(data, sdata->vif.addr, in __iterate_interfaces()
762 &sdata->vif); in __iterate_interfaces()
765 sdata = rcu_dereference_check(local->monitor_sdata, in __iterate_interfaces()
768 if (sdata && ieee80211_hw_check(&local->hw, WANT_MONITOR_VIF) && in __iterate_interfaces()
770 sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in __iterate_interfaces()
771 iterator(data, sdata->vif.addr, &sdata->vif); in __iterate_interfaces()
862 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in wdev_to_ieee80211_vif() local
864 if (!ieee80211_sdata_running(sdata) || in wdev_to_ieee80211_vif()
865 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in wdev_to_ieee80211_vif()
867 return &sdata->vif; in wdev_to_ieee80211_vif()
923 void ieee80211_regulatory_limit_wmm_params(struct ieee80211_sub_if_data *sdata, in ieee80211_regulatory_limit_wmm_params() argument
932 if (sdata->vif.type != NL80211_IFTYPE_AP && in ieee80211_regulatory_limit_wmm_params()
933 sdata->vif.type != NL80211_IFTYPE_STATION) in ieee80211_regulatory_limit_wmm_params()
937 chanctx_conf = rcu_dereference(sdata->vif.bss_conf.chanctx_conf); in ieee80211_regulatory_limit_wmm_params()
946 rrule = freq_reg_info(sdata->wdev.wiphy, MHZ_TO_KHZ(center_freq)); in ieee80211_regulatory_limit_wmm_params()
953 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_regulatory_limit_wmm_params()
967 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_set_wmm_default() local
968 struct ieee80211_local *local = sdata->local; in ieee80211_set_wmm_default()
991 is_ocb = (sdata->vif.type == NL80211_IFTYPE_OCB); in ieee80211_set_wmm_default()
1058 ieee80211_regulatory_limit_wmm_params(sdata, &qparam, ac); in ieee80211_set_wmm_default()
1066 if (sdata->vif.type != NL80211_IFTYPE_MONITOR && in ieee80211_set_wmm_default()
1067 sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE && in ieee80211_set_wmm_default()
1068 sdata->vif.type != NL80211_IFTYPE_NAN) { in ieee80211_set_wmm_default()
1071 ieee80211_link_info_change_notify(sdata, link, in ieee80211_set_wmm_default()
1076 void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata, in ieee80211_send_auth() argument
1082 struct ieee80211_local *local = sdata->local; in ieee80211_send_auth()
1085 bool multi_link = ieee80211_vif_is_mld(&sdata->vif); in ieee80211_send_auth()
1101 memcpy(mle.basic.mld_mac_addr, sdata->vif.addr, ETH_ALEN); in ieee80211_send_auth()
1116 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_send_auth()
1137 ieee80211_tx_skb(sdata, skb); in ieee80211_send_auth()
1140 void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata, in ieee80211_send_deauth_disassoc() argument
1145 struct ieee80211_local *local = sdata->local; in ieee80211_send_deauth_disassoc()
1154 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_send_deauth_disassoc()
1170 if (sdata->vif.type != NL80211_IFTYPE_STATION || in ieee80211_send_deauth_disassoc()
1171 !(sdata->u.mgd.flags & IEEE80211_STA_MFP_ENABLED)) in ieee80211_send_deauth_disassoc()
1175 ieee80211_tx_skb(sdata, skb); in ieee80211_send_deauth_disassoc()
1195 struct ieee80211_sub_if_data *sdata, in ieee80211_put_preq_ies_band() argument
1203 struct ieee80211_local *local = sdata->local; in ieee80211_put_preq_ies_band()
1355 err = ieee80211_put_he_cap(skb, sdata, sband, NULL); in ieee80211_put_preq_ies_band()
1363 err = ieee80211_put_eht_cap(skb, sdata, sband, NULL); in ieee80211_put_preq_ies_band()
1368 err = ieee80211_put_he_6ghz_cap(skb, sdata, IEEE80211_SMPS_OFF); in ieee80211_put_preq_ies_band()
1381 struct ieee80211_sub_if_data *sdata, in ieee80211_put_preq_ies() argument
1396 err = ieee80211_put_preq_ies_band(skb, sdata, in ieee80211_put_preq_ies()
1423 int ieee80211_build_preq_ies(struct ieee80211_sub_if_data *sdata, u8 *buffer, in ieee80211_build_preq_ies() argument
1441 ret = ieee80211_put_preq_ies(skb, sdata, ie_desc, ie, ie_len, in ieee80211_build_preq_ies()
1469 struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata, in ieee80211_build_probe_req() argument
1477 struct ieee80211_local *local = sdata->local; in ieee80211_build_probe_req()
1489 chandef.width = sdata->vif.bss_conf.chanreq.oper.width; in ieee80211_build_probe_req()
1501 ieee80211_put_preq_ies(skb, sdata, &dummy_ie_desc, in ieee80211_build_probe_req()
1516 u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata, in ieee80211_sta_get_rates() argument
1525 sband = sdata->local->hw.wiphy->bands[band]; in ieee80211_sta_get_rates()
1601 struct ieee80211_sub_if_data *sdata; in ieee80211_handle_reconfig_failure() local
1628 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_handle_reconfig_failure()
1629 sdata->flags &= ~IEEE80211_SDATA_IN_DRIVER; in ieee80211_handle_reconfig_failure()
1639 struct ieee80211_sub_if_data *sdata, in ieee80211_assign_chanctx() argument
1651 drv_assign_vif_chanctx(local, sdata, link->conf, ctx); in ieee80211_assign_chanctx()
1655 static void ieee80211_reconfig_stations(struct ieee80211_sub_if_data *sdata) in ieee80211_reconfig_stations() argument
1657 struct ieee80211_local *local = sdata->local; in ieee80211_reconfig_stations()
1666 if (!sta->uploaded || sta->sdata != sdata) in ieee80211_reconfig_stations()
1671 WARN_ON(drv_sta_state(local, sta->sdata, sta, state, in ieee80211_reconfig_stations()
1676 static int ieee80211_reconfig_nan(struct ieee80211_sub_if_data *sdata) in ieee80211_reconfig_nan() argument
1681 res = drv_start_nan(sdata->local, sdata, in ieee80211_reconfig_nan()
1682 &sdata->u.nan.conf); in ieee80211_reconfig_nan()
1686 funcs = kcalloc(sdata->local->hw.max_nan_de_entries + 1, in ieee80211_reconfig_nan()
1696 spin_lock_bh(&sdata->u.nan.func_lock); in ieee80211_reconfig_nan()
1698 idr_for_each_entry(&sdata->u.nan.function_inst_ids, func, id) in ieee80211_reconfig_nan()
1701 spin_unlock_bh(&sdata->u.nan.func_lock); in ieee80211_reconfig_nan()
1704 res = drv_add_nan_func(sdata->local, sdata, funcs[i]); in ieee80211_reconfig_nan()
1706 ieee80211_nan_func_terminated(&sdata->vif, in ieee80211_reconfig_nan()
1718 struct ieee80211_sub_if_data *sdata, in ieee80211_reconfig_ap_links() argument
1723 for (link_id = 0; link_id < ARRAY_SIZE(sdata->link); link_id++) { in ieee80211_reconfig_ap_links()
1726 if (!(sdata->vif.active_links & BIT(link_id))) in ieee80211_reconfig_ap_links()
1729 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_reconfig_ap_links()
1734 drv_start_ap(local, sdata, link->conf); in ieee80211_reconfig_ap_links()
1742 ieee80211_link_info_change_notify(sdata, link, changed); in ieee80211_reconfig_ap_links()
1749 struct ieee80211_sub_if_data *sdata; in ieee80211_reconfig() local
1850 sdata = wiphy_dereference(local->hw.wiphy, local->monitor_sdata); in ieee80211_reconfig()
1851 if (sdata && ieee80211_hw_check(&local->hw, WANT_MONITOR_VIF)) { in ieee80211_reconfig()
1854 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1858 kfree(sdata); in ieee80211_reconfig()
1862 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1863 if (sdata->vif.type == NL80211_IFTYPE_MONITOR && in ieee80211_reconfig()
1866 if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN && in ieee80211_reconfig()
1867 ieee80211_sdata_running(sdata)) { in ieee80211_reconfig()
1868 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1878 list_for_each_entry_continue_reverse(sdata, &local->interfaces, in ieee80211_reconfig()
1880 if (sdata->vif.type == NL80211_IFTYPE_MONITOR && in ieee80211_reconfig()
1883 if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN && in ieee80211_reconfig()
1884 ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1885 drv_remove_interface(local, sdata); in ieee80211_reconfig()
1896 sdata = wiphy_dereference(local->hw.wiphy, local->monitor_sdata); in ieee80211_reconfig()
1897 if (sdata && ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1898 ieee80211_assign_chanctx(local, sdata, &sdata->deflink); in ieee80211_reconfig()
1910 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1927 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1930 if (ieee80211_vif_is_mld(&sdata->vif)) { in ieee80211_reconfig()
1932 [0] = &sdata->vif.bss_conf, in ieee80211_reconfig()
1935 if (sdata->vif.type == NL80211_IFTYPE_STATION) { in ieee80211_reconfig()
1937 active_links = sdata->vif.active_links; in ieee80211_reconfig()
1939 sdata->vif.active_links = BIT(link_id); in ieee80211_reconfig()
1942 drv_change_vif_links(local, sdata, 0, in ieee80211_reconfig()
1943 sdata->vif.active_links, in ieee80211_reconfig()
1947 sdata->restart_active_links = active_links; in ieee80211_reconfig()
1950 link_id < ARRAY_SIZE(sdata->vif.link_conf); in ieee80211_reconfig()
1952 if (!ieee80211_vif_link_active(&sdata->vif, link_id)) in ieee80211_reconfig()
1955 link = sdata_dereference(sdata->link[link_id], sdata); in ieee80211_reconfig()
1959 ieee80211_assign_chanctx(local, sdata, link); in ieee80211_reconfig()
1962 switch (sdata->vif.type) { in ieee80211_reconfig()
1967 if (sdata->vif.cfg.ibss_joined) in ieee80211_reconfig()
1968 WARN_ON(drv_join_ibss(local, sdata)); in ieee80211_reconfig()
1971 ieee80211_reconfig_stations(sdata); in ieee80211_reconfig()
1975 drv_conf_tx(local, &sdata->deflink, i, in ieee80211_reconfig()
1976 &sdata->deflink.tx_conf[i]); in ieee80211_reconfig()
1980 if (sdata->vif.bss_conf.mu_mimo_owner) in ieee80211_reconfig()
1983 if (!ieee80211_vif_is_mld(&sdata->vif)) in ieee80211_reconfig()
1986 switch (sdata->vif.type) { in ieee80211_reconfig()
1988 if (!ieee80211_vif_is_mld(&sdata->vif)) { in ieee80211_reconfig()
1994 if (sdata->deflink.u.mgd.have_beacon) in ieee80211_reconfig()
1997 if (sdata->vif.bss_conf.max_idle_period || in ieee80211_reconfig()
1998 sdata->vif.bss_conf.protected_keep_alive) in ieee80211_reconfig()
2001 ieee80211_bss_info_change_notify(sdata, in ieee80211_reconfig()
2004 ieee80211_link_info_change_notify(sdata, link, in ieee80211_reconfig()
2010 ieee80211_vif_cfg_change_notify(sdata, changed); in ieee80211_reconfig()
2015 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_reconfig()
2023 if (ieee80211_vif_is_mld(&sdata->vif)) in ieee80211_reconfig()
2024 ieee80211_vif_cfg_change_notify(sdata, in ieee80211_reconfig()
2029 if (sdata->vif.bss_conf.ftm_responder == 1 && in ieee80211_reconfig()
2030 wiphy_ext_feature_isset(sdata->local->hw.wiphy, in ieee80211_reconfig()
2034 if (sdata->vif.type == NL80211_IFTYPE_AP) { in ieee80211_reconfig()
2037 if (ieee80211_vif_is_mld(&sdata->vif)) { in ieee80211_reconfig()
2039 sdata, in ieee80211_reconfig()
2044 if (rcu_access_pointer(sdata->deflink.u.ap.beacon)) in ieee80211_reconfig()
2045 drv_start_ap(local, sdata, in ieee80211_reconfig()
2046 sdata->deflink.conf); in ieee80211_reconfig()
2050 if (sdata->vif.bss_conf.enable_beacon) { in ieee80211_reconfig()
2053 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_reconfig()
2057 res = ieee80211_reconfig_nan(sdata); in ieee80211_reconfig()
2087 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2088 if (sdata->vif.type != NL80211_IFTYPE_STATION) in ieee80211_reconfig()
2090 if (!sdata->u.mgd.associated) in ieee80211_reconfig()
2093 ieee80211_send_nullfunc(local, sdata, false); in ieee80211_reconfig()
2098 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2099 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
2102 switch (sdata->vif.type) { in ieee80211_reconfig()
2105 ieee80211_reconfig_stations(sdata); in ieee80211_reconfig()
2113 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_reconfig()
2114 ieee80211_reenable_keys(sdata); in ieee80211_reconfig()
2117 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2118 if (sdata->restart_active_links) in ieee80211_reconfig()
2119 ieee80211_set_active_links(&sdata->vif, in ieee80211_reconfig()
2120 sdata->restart_active_links); in ieee80211_reconfig()
2125 if (sdata->desired_active_links) in ieee80211_reconfig()
2126 wiphy_work_queue(sdata->local->hw.wiphy, in ieee80211_reconfig()
2127 &sdata->activate_links_work); in ieee80211_reconfig()
2189 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2190 if (ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
2191 wiphy_work_queue(local->hw.wiphy, &sdata->work); in ieee80211_reconfig()
2200 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2201 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
2203 if (sdata->vif.type == NL80211_IFTYPE_STATION) in ieee80211_reconfig()
2204 ieee80211_sta_restart(sdata); in ieee80211_reconfig()
2226 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2227 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
2229 if (sdata->vif.type == NL80211_IFTYPE_STATION) in ieee80211_reconfig()
2230 ieee80211_sta_restart(sdata); in ieee80211_reconfig()
2243 struct ieee80211_sub_if_data *sdata; in ieee80211_reconfig_disconnect() local
2250 sdata = vif_to_sdata(vif); in ieee80211_reconfig_disconnect()
2251 local = sdata->local; in ieee80211_reconfig_disconnect()
2266 sdata->flags |= flag; in ieee80211_reconfig_disconnect()
2268 list_for_each_entry(key, &sdata->key_list, list) in ieee80211_reconfig_disconnect()
2284 void ieee80211_recalc_smps(struct ieee80211_sub_if_data *sdata, in ieee80211_recalc_smps() argument
2287 struct ieee80211_local *local = sdata->local; in ieee80211_recalc_smps()
2309 void ieee80211_recalc_min_chandef(struct ieee80211_sub_if_data *sdata, in ieee80211_recalc_min_chandef() argument
2312 struct ieee80211_local *local = sdata->local; in ieee80211_recalc_min_chandef()
2319 for (i = 0; i < ARRAY_SIZE(sdata->vif.link_conf); i++) { in ieee80211_recalc_min_chandef()
2326 bss_conf = rcu_dereference(sdata->vif.link_conf[i]); in ieee80211_recalc_min_chandef()
2420 u8 ieee80211_ie_len_he_cap(struct ieee80211_sub_if_data *sdata) in ieee80211_ie_len_he_cap() argument
2426 sband = ieee80211_get_sband(sdata); in ieee80211_ie_len_he_cap()
2430 he_cap = ieee80211_get_he_iftype_cap_vif(sband, &sdata->vif); in ieee80211_ie_len_he_cap()
2491 struct ieee80211_sub_if_data *sdata, in ieee80211_put_he_cap() argument
2504 he_cap = ieee80211_get_he_iftype_cap_vif(sband, &sdata->vif); in ieee80211_put_he_cap()
2576 struct ieee80211_sub_if_data *sdata, in ieee80211_put_he_6ghz_cap() argument
2581 enum nl80211_iftype iftype = ieee80211_vif_type_p2p(&sdata->vif); in ieee80211_put_he_6ghz_cap()
2584 if (!cfg80211_any_usable_channels(sdata->local->hw.wiphy, in ieee80211_put_he_6ghz_cap()
2589 sband = sdata->local->hw.wiphy->bands[NL80211_BAND_6GHZ]; in ieee80211_put_he_6ghz_cap()
3294 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); in ieee80211_ave_rssi() local
3297 if (WARN_ON_ONCE(sdata->vif.type != NL80211_IFTYPE_STATION)) in ieee80211_ave_rssi()
3301 link_data = &sdata->deflink; in ieee80211_ave_rssi()
3303 link_data = wiphy_dereference(sdata->local->hw.wiphy, in ieee80211_ave_rssi()
3304 sdata->link[link_id]); in ieee80211_ave_rssi()
3500 struct ieee80211_sub_if_data *sdata; in ieee80211_dfs_cac_cancel() local
3508 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_dfs_cac_cancel()
3511 link = sdata_dereference(sdata->link[link_id], in ieee80211_dfs_cac_cancel()
3512 sdata); in ieee80211_dfs_cac_cancel()
3517 sdata); in ieee80211_dfs_cac_cancel()
3524 if (!sdata->wdev.links[link_id].cac_started) in ieee80211_dfs_cac_cancel()
3529 cfg80211_cac_event(sdata->dev, &chandef, in ieee80211_dfs_cac_cancel()
3682 int ieee80211_send_action_csa(struct ieee80211_sub_if_data *sdata, in ieee80211_send_action_csa() argument
3687 struct ieee80211_local *local = sdata->local; in ieee80211_send_action_csa()
3693 if (sdata->vif.type != NL80211_IFTYPE_ADHOC && in ieee80211_send_action_csa()
3694 sdata->vif.type != NL80211_IFTYPE_MESH_POINT) in ieee80211_send_action_csa()
3711 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_send_action_csa()
3712 if (ieee80211_vif_is_mesh(&sdata->vif)) { in ieee80211_send_action_csa()
3713 memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN); in ieee80211_send_action_csa()
3715 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; in ieee80211_send_action_csa()
3741 if (ieee80211_vif_is_mesh(&sdata->vif)) { in ieee80211_send_action_csa()
3742 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_send_action_csa()
3747 *pos++ = sdata->u.mesh.mshcfg.dot11MeshTTL; /* Mesh TTL */ in ieee80211_send_action_csa()
3765 ieee80211_tx_skb(sdata, skb); in ieee80211_send_action_csa()
3916 void ieee80211_recalc_dtim(struct ieee80211_sub_if_data *sdata, u64 tsf) in ieee80211_recalc_dtim() argument
3919 u32 beacon_int = sdata->vif.bss_conf.beacon_int * 1024; in ieee80211_recalc_dtim()
3920 u8 dtim_period = sdata->vif.bss_conf.dtim_period; in ieee80211_recalc_dtim()
3927 if (sdata->vif.type == NL80211_IFTYPE_AP || in ieee80211_recalc_dtim()
3928 sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { in ieee80211_recalc_dtim()
3929 if (!sdata->bss) in ieee80211_recalc_dtim()
3932 ps = &sdata->bss->ps; in ieee80211_recalc_dtim()
3933 } else if (ieee80211_vif_is_mesh(&sdata->vif)) { in ieee80211_recalc_dtim()
3934 ps = &sdata->u.mesh.ps; in ieee80211_recalc_dtim()
3961 void ieee80211_recalc_sb_count(struct ieee80211_sub_if_data *sdata, u64 tsf) in ieee80211_recalc_sb_count() argument
3964 struct ps_data *ps = &sdata->bss->ps; in ieee80211_recalc_sb_count()
3965 u8 lb_period = sdata->vif.bss_conf.s1g_long_beacon_period; in ieee80211_recalc_sb_count()
3966 u32 beacon_int = sdata->vif.bss_conf.beacon_int * 1024; in ieee80211_recalc_sb_count()
3970 (sdata->vif.type != NL80211_IFTYPE_AP && in ieee80211_recalc_sb_count()
3971 sdata->vif.type != NL80211_IFTYPE_AP_VLAN)) in ieee80211_recalc_sb_count()
4043 __ieee80211_get_radio_mask(struct ieee80211_sub_if_data *sdata) in __ieee80211_get_radio_mask() argument
4050 for_each_vif_active_link(&sdata->vif, link_conf, link_id) { in __ieee80211_get_radio_mask()
4051 conf = sdata_dereference(link_conf->chanctx_conf, sdata); in __ieee80211_get_radio_mask()
4063 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); in ieee80211_get_radio_mask() local
4065 return __ieee80211_get_radio_mask(sdata); in ieee80211_get_radio_mask()
4069 ieee80211_sdata_uses_radio(struct ieee80211_sub_if_data *sdata, int radio_idx) in ieee80211_sdata_uses_radio() argument
4074 return __ieee80211_get_radio_mask(sdata) & BIT(radio_idx); in ieee80211_sdata_uses_radio()
4081 struct ieee80211_sub_if_data *sdata) in ieee80211_fill_ifcomb_params() argument
4085 int total = !!sdata; in ieee80211_fill_ifcomb_params()
4110 if (sdata_iter == sdata || in ieee80211_fill_ifcomb_params()
4126 int ieee80211_check_combinations(struct ieee80211_sub_if_data *sdata, in ieee80211_check_combinations() argument
4132 struct ieee80211_local *local = sdata->local; in ieee80211_check_combinations()
4133 enum nl80211_iftype iftype = sdata->wdev.iftype; in ieee80211_check_combinations()
4152 if (sdata->vif.type == NL80211_IFTYPE_AP || in ieee80211_check_combinations()
4153 sdata->vif.type == NL80211_IFTYPE_MESH_POINT) { in ieee80211_check_combinations()
4159 params.new_beacon_int = sdata->vif.bss_conf.beacon_int; in ieee80211_check_combinations()
4177 sdata); in ieee80211_check_combinations()
4215 void ieee80211_add_s1g_capab_ie(struct ieee80211_sub_if_data *sdata, in ieee80211_add_s1g_capab_ie() argument
4219 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_add_s1g_capab_ie()
4224 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_STATION)) in ieee80211_add_s1g_capab_ie()
4257 void ieee80211_add_aid_request_ie(struct ieee80211_sub_if_data *sdata, in ieee80211_add_aid_request_ie() argument
4332 u8 ieee80211_ie_len_eht_cap(struct ieee80211_sub_if_data *sdata) in ieee80211_ie_len_eht_cap() argument
4340 sband = ieee80211_get_sband(sdata); in ieee80211_ie_len_eht_cap()
4344 he_cap = ieee80211_get_he_iftype_cap_vif(sband, &sdata->vif); in ieee80211_ie_len_eht_cap()
4345 eht_cap = ieee80211_get_eht_iftype_cap_vif(sband, &sdata->vif); in ieee80211_ie_len_eht_cap()
4349 is_ap = sdata->vif.type == NL80211_IFTYPE_AP; in ieee80211_ie_len_eht_cap()
4362 struct ieee80211_sub_if_data *sdata, in ieee80211_put_eht_cap() argument
4367 ieee80211_get_he_iftype_cap_vif(sband, &sdata->vif); in ieee80211_put_eht_cap()
4369 ieee80211_get_eht_iftype_cap_vif(sband, &sdata->vif); in ieee80211_put_eht_cap()
4370 bool for_ap = sdata->vif.type == NL80211_IFTYPE_AP; in ieee80211_put_eht_cap()