Lines Matching refs:sdata
184 struct ieee80211_sub_if_data *sdata; in ieee80211_generic_frame_duration() local
191 sdata = vif_to_sdata(vif); in ieee80211_generic_frame_duration()
192 short_preamble = sdata->vif.bss_conf.use_short_preamble; in ieee80211_generic_frame_duration()
193 if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) in ieee80211_generic_frame_duration()
211 struct ieee80211_sub_if_data *sdata; in ieee80211_rts_duration() local
225 sdata = vif_to_sdata(vif); in ieee80211_rts_duration()
226 short_preamble = sdata->vif.bss_conf.use_short_preamble; in ieee80211_rts_duration()
227 if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) in ieee80211_rts_duration()
255 struct ieee80211_sub_if_data *sdata; in ieee80211_ctstoself_duration() local
268 sdata = vif_to_sdata(vif); in ieee80211_ctstoself_duration()
269 short_preamble = sdata->vif.bss_conf.use_short_preamble; in ieee80211_ctstoself_duration()
270 if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) in ieee80211_ctstoself_duration()
292 struct ieee80211_sub_if_data *sdata; in ieee80211_propagate_queue_wake() local
298 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_propagate_queue_wake()
301 if (!sdata->dev) in ieee80211_propagate_queue_wake()
304 if (sdata->vif.cab_queue != IEEE80211_INVAL_HW_QUEUE && in ieee80211_propagate_queue_wake()
305 local->queue_stop_reasons[sdata->vif.cab_queue] != 0) in ieee80211_propagate_queue_wake()
309 int ac_queue = sdata->vif.hw_queue[ac]; in ieee80211_propagate_queue_wake()
312 (atomic_read(&sdata->txqs_len[ac]) > in ieee80211_propagate_queue_wake()
317 (sdata->vif.cab_queue == queue && in ieee80211_propagate_queue_wake()
320 netif_wake_subqueue(sdata->dev, ac); in ieee80211_propagate_queue_wake()
384 struct ieee80211_sub_if_data *sdata; in __ieee80211_stop_queue() local
404 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in __ieee80211_stop_queue()
407 if (!sdata->dev) in __ieee80211_stop_queue()
411 if (sdata->vif.hw_queue[ac] == queue || in __ieee80211_stop_queue()
412 sdata->vif.cab_queue == queue) in __ieee80211_stop_queue()
413 netif_stop_subqueue(sdata->dev, ac); in __ieee80211_stop_queue()
563 struct ieee80211_sub_if_data *sdata) in ieee80211_get_vif_queues() argument
567 if (sdata && local->hw.flags & IEEE80211_HW_QUEUE_CONTROL) { in ieee80211_get_vif_queues()
573 queues |= BIT(sdata->vif.hw_queue[ac]); in ieee80211_get_vif_queues()
574 if (sdata->vif.cab_queue != IEEE80211_INVAL_HW_QUEUE) in ieee80211_get_vif_queues()
575 queues |= BIT(sdata->vif.cab_queue); in ieee80211_get_vif_queues()
585 struct ieee80211_sub_if_data *sdata, in __ieee80211_flush_queues() argument
596 queues = ieee80211_get_vif_queues(local, sdata); in __ieee80211_flush_queues()
602 drv_flush(local, sdata, queues, drop); in __ieee80211_flush_queues()
610 struct ieee80211_sub_if_data *sdata, bool drop) in ieee80211_flush_queues() argument
612 __ieee80211_flush_queues(local, sdata, 0, drop); in ieee80211_flush_queues()
616 struct ieee80211_sub_if_data *sdata, in ieee80211_stop_vif_queues() argument
620 ieee80211_get_vif_queues(local, sdata), in ieee80211_stop_vif_queues()
625 struct ieee80211_sub_if_data *sdata, in ieee80211_wake_vif_queues() argument
629 ieee80211_get_vif_queues(local, sdata), in ieee80211_wake_vif_queues()
639 struct ieee80211_sub_if_data *sdata; in __iterate_interfaces() local
642 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in __iterate_interfaces()
643 switch (sdata->vif.type) { in __iterate_interfaces()
645 if (!(sdata->u.mntr_flags & MONITOR_FLAG_ACTIVE)) in __iterate_interfaces()
654 active_only && !(sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in __iterate_interfaces()
656 if (ieee80211_sdata_running(sdata) || !active_only) in __iterate_interfaces()
657 iterator(data, sdata->vif.addr, in __iterate_interfaces()
658 &sdata->vif); in __iterate_interfaces()
661 sdata = rcu_dereference_check(local->monitor_sdata, in __iterate_interfaces()
664 if (sdata && in __iterate_interfaces()
666 sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in __iterate_interfaces()
667 iterator(data, sdata->vif.addr, &sdata->vif); in __iterate_interfaces()
744 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in wdev_to_ieee80211_vif() local
746 if (!ieee80211_sdata_running(sdata) || in wdev_to_ieee80211_vif()
747 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in wdev_to_ieee80211_vif()
749 return &sdata->vif; in wdev_to_ieee80211_vif()
755 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); in ieee80211_vif_to_wdev() local
757 if (!ieee80211_sdata_running(sdata) || in ieee80211_vif_to_wdev()
758 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in ieee80211_vif_to_wdev()
761 return &sdata->wdev; in ieee80211_vif_to_wdev()
1150 void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata, in ieee80211_set_wmm_default() argument
1153 struct ieee80211_local *local = sdata->local; in ieee80211_set_wmm_default()
1170 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_set_wmm_default()
1173 !(sdata->flags & IEEE80211_SDATA_OPERATING_GMODE); in ieee80211_set_wmm_default()
1181 enable_qos = (sdata->vif.type != NL80211_IFTYPE_STATION); in ieee80211_set_wmm_default()
1183 is_ocb = (sdata->vif.type == NL80211_IFTYPE_OCB); in ieee80211_set_wmm_default()
1253 sdata->tx_conf[ac] = qparam; in ieee80211_set_wmm_default()
1254 drv_conf_tx(local, sdata, ac, &qparam); in ieee80211_set_wmm_default()
1257 if (sdata->vif.type != NL80211_IFTYPE_MONITOR && in ieee80211_set_wmm_default()
1258 sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE) { in ieee80211_set_wmm_default()
1259 sdata->vif.bss_conf.qos = enable_qos; in ieee80211_set_wmm_default()
1261 ieee80211_bss_info_change_notify(sdata, in ieee80211_set_wmm_default()
1266 void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata, in ieee80211_send_auth() argument
1272 struct ieee80211_local *local = sdata->local; in ieee80211_send_auth()
1290 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_send_auth()
1306 ieee80211_tx_skb(sdata, skb); in ieee80211_send_auth()
1309 void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata, in ieee80211_send_deauth_disassoc() argument
1313 struct ieee80211_local *local = sdata->local; in ieee80211_send_deauth_disassoc()
1322 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_send_deauth_disassoc()
1339 if (sdata->vif.type != NL80211_IFTYPE_STATION || in ieee80211_send_deauth_disassoc()
1340 !(sdata->u.mgd.flags & IEEE80211_STA_MFP_ENABLED)) in ieee80211_send_deauth_disassoc()
1344 ieee80211_tx_skb(sdata, skb); in ieee80211_send_deauth_disassoc()
1559 struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata, in ieee80211_build_probe_req() argument
1567 struct ieee80211_local *local = sdata->local; in ieee80211_build_probe_req()
1580 chandef.width = sdata->vif.bss_conf.chandef.width; in ieee80211_build_probe_req()
1609 void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, in ieee80211_send_probe_req() argument
1618 skb = ieee80211_build_probe_req(sdata, src, dst, ratemask, channel, in ieee80211_send_probe_req()
1624 ieee80211_tx_skb_tid_band(sdata, skb, 7, channel->band); in ieee80211_send_probe_req()
1626 ieee80211_tx_skb(sdata, skb); in ieee80211_send_probe_req()
1630 u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata, in ieee80211_sta_get_rates() argument
1638 sband = sdata->local->hw.wiphy->bands[band]; in ieee80211_sta_get_rates()
1640 rate_flags = ieee80211_chandef_rate_flags(&sdata->vif.bss_conf.chandef); in ieee80211_sta_get_rates()
1641 shift = ieee80211_vif_get_shift(&sdata->vif); in ieee80211_sta_get_rates()
1696 struct ieee80211_sub_if_data *sdata; in ieee80211_handle_reconfig_failure() local
1718 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_handle_reconfig_failure()
1719 sdata->flags &= ~IEEE80211_SDATA_IN_DRIVER; in ieee80211_handle_reconfig_failure()
1733 struct ieee80211_sub_if_data *sdata) in ieee80211_assign_chanctx() argument
1742 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_assign_chanctx()
1746 drv_assign_vif_chanctx(local, sdata, ctx); in ieee80211_assign_chanctx()
1754 struct ieee80211_sub_if_data *sdata; in ieee80211_reconfig() local
1819 sdata = rtnl_dereference(local->monitor_sdata); in ieee80211_reconfig()
1820 if (sdata) { in ieee80211_reconfig()
1823 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1827 kfree(sdata); in ieee80211_reconfig()
1831 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1832 if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN && in ieee80211_reconfig()
1833 sdata->vif.type != NL80211_IFTYPE_MONITOR && in ieee80211_reconfig()
1834 ieee80211_sdata_running(sdata)) { in ieee80211_reconfig()
1835 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1845 list_for_each_entry_continue_reverse(sdata, &local->interfaces, in ieee80211_reconfig()
1847 if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN && in ieee80211_reconfig()
1848 sdata->vif.type != NL80211_IFTYPE_MONITOR && in ieee80211_reconfig()
1849 ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1850 drv_remove_interface(local, sdata); in ieee80211_reconfig()
1864 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1865 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1867 ieee80211_assign_chanctx(local, sdata); in ieee80211_reconfig()
1870 sdata = rtnl_dereference(local->monitor_sdata); in ieee80211_reconfig()
1871 if (sdata && ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1872 ieee80211_assign_chanctx(local, sdata); in ieee80211_reconfig()
1884 if (sta->sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_reconfig()
1889 WARN_ON(drv_sta_state(local, sta->sdata, sta, state, in ieee80211_reconfig()
1896 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1897 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN || in ieee80211_reconfig()
1898 sdata->vif.type == NL80211_IFTYPE_MONITOR || in ieee80211_reconfig()
1899 !ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1903 drv_conf_tx(local, sdata, i, in ieee80211_reconfig()
1904 &sdata->tx_conf[i]); in ieee80211_reconfig()
1914 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1917 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1933 switch (sdata->vif.type) { in ieee80211_reconfig()
1940 if (sdata->u.mgd.have_beacon) in ieee80211_reconfig()
1943 sdata_lock(sdata); in ieee80211_reconfig()
1944 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_reconfig()
1945 sdata_unlock(sdata); in ieee80211_reconfig()
1949 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_reconfig()
1957 if (sdata->vif.type == NL80211_IFTYPE_AP) { in ieee80211_reconfig()
1960 if (rcu_access_pointer(sdata->u.ap.beacon)) in ieee80211_reconfig()
1961 drv_start_ap(local, sdata); in ieee80211_reconfig()
1966 if (sdata->vif.bss_conf.enable_beacon) { in ieee80211_reconfig()
1969 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_reconfig()
1996 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1997 if (sdata->vif.type != NL80211_IFTYPE_STATION) in ieee80211_reconfig()
1999 if (!sdata->u.mgd.associated) in ieee80211_reconfig()
2002 ieee80211_send_nullfunc(local, sdata, 0); in ieee80211_reconfig()
2014 if (sta->sdata->vif.type != NL80211_IFTYPE_AP) in ieee80211_reconfig()
2019 WARN_ON(drv_sta_state(local, sta->sdata, sta, state, in ieee80211_reconfig()
2025 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_reconfig()
2026 ieee80211_reset_crypto_tx_tailroom(sdata); in ieee80211_reconfig()
2028 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_reconfig()
2029 if (ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
2030 ieee80211_enable_keys(sdata); in ieee80211_reconfig()
2118 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2119 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
2121 if (sdata->vif.type == NL80211_IFTYPE_STATION) in ieee80211_reconfig()
2122 ieee80211_sta_restart(sdata); in ieee80211_reconfig()
2135 struct ieee80211_sub_if_data *sdata; in ieee80211_resume_disconnect() local
2142 sdata = vif_to_sdata(vif); in ieee80211_resume_disconnect()
2143 local = sdata->local; in ieee80211_resume_disconnect()
2151 sdata->flags |= IEEE80211_SDATA_DISCONNECT_RESUME; in ieee80211_resume_disconnect()
2154 list_for_each_entry(key, &sdata->key_list, list) in ieee80211_resume_disconnect()
2160 void ieee80211_recalc_smps(struct ieee80211_sub_if_data *sdata) in ieee80211_recalc_smps() argument
2162 struct ieee80211_local *local = sdata->local; in ieee80211_recalc_smps()
2168 chanctx_conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_recalc_smps()
2180 void ieee80211_recalc_min_chandef(struct ieee80211_sub_if_data *sdata) in ieee80211_recalc_min_chandef() argument
2182 struct ieee80211_local *local = sdata->local; in ieee80211_recalc_min_chandef()
2188 chanctx_conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_recalc_min_chandef()
2210 static void _ieee80211_enable_rssi_reports(struct ieee80211_sub_if_data *sdata, in _ieee80211_enable_rssi_reports() argument
2214 trace_api_enable_rssi_reports(sdata, rssi_min_thold, rssi_max_thold); in _ieee80211_enable_rssi_reports()
2216 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_STATION)) in _ieee80211_enable_rssi_reports()
2224 sdata->u.mgd.rssi_min_thold = rssi_min_thold*16; in _ieee80211_enable_rssi_reports()
2225 sdata->u.mgd.rssi_max_thold = rssi_max_thold*16; in _ieee80211_enable_rssi_reports()
2232 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); in ieee80211_enable_rssi_reports() local
2237 _ieee80211_enable_rssi_reports(sdata, rssi_min_thold, in ieee80211_enable_rssi_reports()
2244 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); in ieee80211_disable_rssi_reports() local
2246 _ieee80211_enable_rssi_reports(sdata, 0, 0); in ieee80211_disable_rssi_reports()
2474 int ieee80211_add_srates_ie(struct ieee80211_sub_if_data *sdata, in ieee80211_add_srates_ie() argument
2478 struct ieee80211_local *local = sdata->local; in ieee80211_add_srates_ie()
2482 u32 basic_rates = sdata->vif.bss_conf.basic_rates; in ieee80211_add_srates_ie()
2485 shift = ieee80211_vif_get_shift(&sdata->vif); in ieee80211_add_srates_ie()
2486 rate_flags = ieee80211_chandef_rate_flags(&sdata->vif.bss_conf.chandef); in ieee80211_add_srates_ie()
2519 int ieee80211_add_ext_srates_ie(struct ieee80211_sub_if_data *sdata, in ieee80211_add_ext_srates_ie() argument
2523 struct ieee80211_local *local = sdata->local; in ieee80211_add_ext_srates_ie()
2527 u32 basic_rates = sdata->vif.bss_conf.basic_rates; in ieee80211_add_ext_srates_ie()
2530 rate_flags = ieee80211_chandef_rate_flags(&sdata->vif.bss_conf.chandef); in ieee80211_add_ext_srates_ie()
2531 shift = ieee80211_vif_get_shift(&sdata->vif); in ieee80211_add_ext_srates_ie()
2570 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); in ieee80211_ave_rssi() local
2571 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_ave_rssi()
2573 if (WARN_ON_ONCE(sdata->vif.type != NL80211_IFTYPE_STATION)) { in ieee80211_ave_rssi()
2683 struct ieee80211_sub_if_data *sdata; in ieee80211_dfs_cac_cancel() local
2688 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_dfs_cac_cancel()
2693 cancel_delayed_work(&sdata->dfs_cac_timer_work); in ieee80211_dfs_cac_cancel()
2695 if (sdata->wdev.cac_started) { in ieee80211_dfs_cac_cancel()
2696 chandef = sdata->vif.bss_conf.chandef; in ieee80211_dfs_cac_cancel()
2697 ieee80211_vif_release_channel(sdata); in ieee80211_dfs_cac_cancel()
2698 cfg80211_cac_event(sdata->dev, in ieee80211_dfs_cac_cancel()
2830 int ieee80211_send_action_csa(struct ieee80211_sub_if_data *sdata, in ieee80211_send_action_csa() argument
2835 struct ieee80211_local *local = sdata->local; in ieee80211_send_action_csa()
2841 if (sdata->vif.type != NL80211_IFTYPE_ADHOC && in ieee80211_send_action_csa()
2842 sdata->vif.type != NL80211_IFTYPE_MESH_POINT) in ieee80211_send_action_csa()
2859 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_send_action_csa()
2860 if (ieee80211_vif_is_mesh(&sdata->vif)) { in ieee80211_send_action_csa()
2861 memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN); in ieee80211_send_action_csa()
2863 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; in ieee80211_send_action_csa()
2889 if (ieee80211_vif_is_mesh(&sdata->vif)) { in ieee80211_send_action_csa()
2890 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_send_action_csa()
2895 *pos++ = sdata->u.mesh.mshcfg.dot11MeshTTL; /* Mesh TTL */ in ieee80211_send_action_csa()
2906 ieee80211_tx_skb(sdata, skb); in ieee80211_send_action_csa()
3126 struct ieee80211_sub_if_data *sdata) in ieee80211_recalc_dtim() argument
3128 u64 tsf = drv_get_tsf(local, sdata); in ieee80211_recalc_dtim()
3130 u16 beacon_int = sdata->vif.bss_conf.beacon_int * 1024; in ieee80211_recalc_dtim()
3131 u8 dtim_period = sdata->vif.bss_conf.dtim_period; in ieee80211_recalc_dtim()
3138 if (sdata->vif.type == NL80211_IFTYPE_AP || in ieee80211_recalc_dtim()
3139 sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { in ieee80211_recalc_dtim()
3140 if (!sdata->bss) in ieee80211_recalc_dtim()
3143 ps = &sdata->bss->ps; in ieee80211_recalc_dtim()
3144 } else if (ieee80211_vif_is_mesh(&sdata->vif)) { in ieee80211_recalc_dtim()
3145 ps = &sdata->u.mesh.ps; in ieee80211_recalc_dtim()
3169 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_radar_detect() local
3177 list_for_each_entry(sdata, &ctx->reserved_vifs, reserved_chanctx_list) in ieee80211_chanctx_radar_detect()
3178 if (sdata->reserved_radar_required) in ieee80211_chanctx_radar_detect()
3179 radar_detect |= BIT(sdata->reserved_chandef.width); in ieee80211_chanctx_radar_detect()
3188 list_for_each_entry(sdata, &ctx->assigned_vifs, assigned_chanctx_list) in ieee80211_chanctx_radar_detect()
3189 if (sdata->radar_required) in ieee80211_chanctx_radar_detect()
3190 radar_detect |= BIT(sdata->vif.bss_conf.chandef.width); in ieee80211_chanctx_radar_detect()
3195 int ieee80211_check_combinations(struct ieee80211_sub_if_data *sdata, in ieee80211_check_combinations() argument
3200 struct ieee80211_local *local = sdata->local; in ieee80211_check_combinations()
3202 enum nl80211_iftype iftype = sdata->wdev.iftype; in ieee80211_check_combinations()
3255 if (sdata_iter == sdata || in ieee80211_check_combinations()
3284 struct ieee80211_sub_if_data *sdata; in ieee80211_max_num_channels() local
3303 list_for_each_entry_rcu(sdata, &local->interfaces, list) in ieee80211_max_num_channels()
3304 num[sdata->wdev.iftype]++; in ieee80211_max_num_channels()
3331 void ieee80211_init_tx_queue(struct ieee80211_sub_if_data *sdata, in ieee80211_init_tx_queue() argument
3336 txqi->txq.vif = &sdata->vif; in ieee80211_init_tx_queue()
3343 sdata->vif.txq = &txqi->txq; in ieee80211_init_tx_queue()