Lines Matching refs:sdata
169 struct ieee80211_sub_if_data *sdata; in ieee80211_generic_frame_duration() local
176 sdata = vif_to_sdata(vif); in ieee80211_generic_frame_duration()
177 short_preamble = sdata->vif.bss_conf.use_short_preamble; in ieee80211_generic_frame_duration()
178 if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) in ieee80211_generic_frame_duration()
195 struct ieee80211_sub_if_data *sdata; in ieee80211_rts_duration() local
209 sdata = vif_to_sdata(vif); in ieee80211_rts_duration()
210 short_preamble = sdata->vif.bss_conf.use_short_preamble; in ieee80211_rts_duration()
211 if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) in ieee80211_rts_duration()
236 struct ieee80211_sub_if_data *sdata; in ieee80211_ctstoself_duration() local
249 sdata = vif_to_sdata(vif); in ieee80211_ctstoself_duration()
250 short_preamble = sdata->vif.bss_conf.use_short_preamble; in ieee80211_ctstoself_duration()
251 if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE) in ieee80211_ctstoself_duration()
270 struct ieee80211_sub_if_data *sdata; in ieee80211_propagate_queue_wake() local
276 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_propagate_queue_wake()
279 if (!sdata->dev) in ieee80211_propagate_queue_wake()
282 if (test_bit(SDATA_STATE_OFFCHANNEL, &sdata->state)) in ieee80211_propagate_queue_wake()
285 if (sdata->vif.cab_queue != IEEE80211_INVAL_HW_QUEUE && in ieee80211_propagate_queue_wake()
286 local->queue_stop_reasons[sdata->vif.cab_queue] != 0) in ieee80211_propagate_queue_wake()
290 int ac_queue = sdata->vif.hw_queue[ac]; in ieee80211_propagate_queue_wake()
293 (sdata->vif.cab_queue == queue && in ieee80211_propagate_queue_wake()
296 netif_wake_subqueue(sdata->dev, ac); in ieee80211_propagate_queue_wake()
350 struct ieee80211_sub_if_data *sdata; in __ieee80211_stop_queue() local
367 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in __ieee80211_stop_queue()
370 if (!sdata->dev) in __ieee80211_stop_queue()
374 if (sdata->vif.hw_queue[ac] == queue || in __ieee80211_stop_queue()
375 sdata->vif.cab_queue == queue) in __ieee80211_stop_queue()
376 netif_stop_subqueue(sdata->dev, ac); in __ieee80211_stop_queue()
519 struct ieee80211_sub_if_data *sdata) in ieee80211_flush_queues() argument
526 if (sdata && local->hw.flags & IEEE80211_HW_QUEUE_CONTROL) { in ieee80211_flush_queues()
532 queues |= BIT(sdata->vif.hw_queue[ac]); in ieee80211_flush_queues()
533 if (sdata->vif.cab_queue != IEEE80211_INVAL_HW_QUEUE) in ieee80211_flush_queues()
534 queues |= BIT(sdata->vif.cab_queue); in ieee80211_flush_queues()
556 struct ieee80211_sub_if_data *sdata; in ieee80211_iterate_active_interfaces() local
560 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_iterate_active_interfaces()
561 switch (sdata->vif.type) { in ieee80211_iterate_active_interfaces()
569 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in ieee80211_iterate_active_interfaces()
571 if (ieee80211_sdata_running(sdata)) in ieee80211_iterate_active_interfaces()
572 iterator(data, sdata->vif.addr, in ieee80211_iterate_active_interfaces()
573 &sdata->vif); in ieee80211_iterate_active_interfaces()
576 sdata = rcu_dereference_protected(local->monitor_sdata, in ieee80211_iterate_active_interfaces()
578 if (sdata && in ieee80211_iterate_active_interfaces()
580 sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in ieee80211_iterate_active_interfaces()
581 iterator(data, sdata->vif.addr, &sdata->vif); in ieee80211_iterate_active_interfaces()
594 struct ieee80211_sub_if_data *sdata; in ieee80211_iterate_active_interfaces_atomic() local
598 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_iterate_active_interfaces_atomic()
599 switch (sdata->vif.type) { in ieee80211_iterate_active_interfaces_atomic()
607 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in ieee80211_iterate_active_interfaces_atomic()
609 if (ieee80211_sdata_running(sdata)) in ieee80211_iterate_active_interfaces_atomic()
610 iterator(data, sdata->vif.addr, in ieee80211_iterate_active_interfaces_atomic()
611 &sdata->vif); in ieee80211_iterate_active_interfaces_atomic()
614 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_iterate_active_interfaces_atomic()
615 if (sdata && in ieee80211_iterate_active_interfaces_atomic()
617 sdata->flags & IEEE80211_SDATA_IN_DRIVER)) in ieee80211_iterate_active_interfaces_atomic()
618 iterator(data, sdata->vif.addr, &sdata->vif); in ieee80211_iterate_active_interfaces_atomic()
951 void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata, in ieee80211_set_wmm_default() argument
954 struct ieee80211_local *local = sdata->local; in ieee80211_set_wmm_default()
970 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_set_wmm_default()
973 !(sdata->flags & IEEE80211_SDATA_OPERATING_GMODE); in ieee80211_set_wmm_default()
981 enable_qos = (sdata->vif.type != NL80211_IFTYPE_STATION); in ieee80211_set_wmm_default()
1036 sdata->tx_conf[ac] = qparam; in ieee80211_set_wmm_default()
1037 drv_conf_tx(local, sdata, ac, &qparam); in ieee80211_set_wmm_default()
1040 if (sdata->vif.type != NL80211_IFTYPE_MONITOR && in ieee80211_set_wmm_default()
1041 sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE) { in ieee80211_set_wmm_default()
1042 sdata->vif.bss_conf.qos = enable_qos; in ieee80211_set_wmm_default()
1044 ieee80211_bss_info_change_notify(sdata, in ieee80211_set_wmm_default()
1049 void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata, in ieee80211_sta_def_wmm_params() argument
1062 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_sta_def_wmm_params()
1067 sdata->flags |= IEEE80211_SDATA_OPERATING_GMODE; in ieee80211_sta_def_wmm_params()
1069 sdata->flags &= ~IEEE80211_SDATA_OPERATING_GMODE; in ieee80211_sta_def_wmm_params()
1072 ieee80211_set_wmm_default(sdata, true); in ieee80211_sta_def_wmm_params()
1101 void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata, in ieee80211_send_auth() argument
1107 struct ieee80211_local *local = sdata->local; in ieee80211_send_auth()
1124 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_send_auth()
1140 ieee80211_tx_skb(sdata, skb); in ieee80211_send_auth()
1143 void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata, in ieee80211_send_deauth_disassoc() argument
1147 struct ieee80211_local *local = sdata->local; in ieee80211_send_deauth_disassoc()
1156 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_send_deauth_disassoc()
1173 if (sdata->vif.type != NL80211_IFTYPE_STATION || in ieee80211_send_deauth_disassoc()
1174 !(sdata->u.mgd.flags & IEEE80211_STA_MFP_ENABLED)) in ieee80211_send_deauth_disassoc()
1178 ieee80211_tx_skb(sdata, skb); in ieee80211_send_deauth_disassoc()
1305 struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata, in ieee80211_build_probe_req() argument
1312 struct ieee80211_local *local = sdata->local; in ieee80211_build_probe_req()
1328 skb = ieee80211_probereq_get(&local->hw, &sdata->vif, in ieee80211_build_probe_req()
1350 void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, in ieee80211_send_probe_req() argument
1358 skb = ieee80211_build_probe_req(sdata, dst, ratemask, channel, in ieee80211_send_probe_req()
1364 ieee80211_tx_skb_tid_band(sdata, skb, 7, channel->band); in ieee80211_send_probe_req()
1366 ieee80211_tx_skb(sdata, skb); in ieee80211_send_probe_req()
1426 struct ieee80211_sub_if_data *sdata) in ieee80211_assign_chanctx() argument
1435 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_assign_chanctx()
1439 drv_assign_vif_chanctx(local, sdata, ctx); in ieee80211_assign_chanctx()
1447 struct ieee80211_sub_if_data *sdata; in ieee80211_reconfig() local
1506 sdata = rtnl_dereference(local->monitor_sdata); in ieee80211_reconfig()
1507 if (sdata) { in ieee80211_reconfig()
1510 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1514 kfree(sdata); in ieee80211_reconfig()
1518 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1519 if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN && in ieee80211_reconfig()
1520 sdata->vif.type != NL80211_IFTYPE_MONITOR && in ieee80211_reconfig()
1521 ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1522 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1533 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1534 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1536 ieee80211_assign_chanctx(local, sdata); in ieee80211_reconfig()
1539 sdata = rtnl_dereference(local->monitor_sdata); in ieee80211_reconfig()
1540 if (sdata && ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1541 ieee80211_assign_chanctx(local, sdata); in ieee80211_reconfig()
1552 if (sta->sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_reconfig()
1557 WARN_ON(drv_sta_state(local, sta->sdata, sta, state, in ieee80211_reconfig()
1564 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1565 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN || in ieee80211_reconfig()
1566 sdata->vif.type == NL80211_IFTYPE_MONITOR || in ieee80211_reconfig()
1567 !ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1571 drv_conf_tx(local, sdata, i, in ieee80211_reconfig()
1572 &sdata->tx_conf[i]); in ieee80211_reconfig()
1582 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1585 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1601 switch (sdata->vif.type) { in ieee80211_reconfig()
1607 if (sdata->u.mgd.dtim_period) in ieee80211_reconfig()
1610 mutex_lock(&sdata->u.mgd.mtx); in ieee80211_reconfig()
1611 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_reconfig()
1612 mutex_unlock(&sdata->u.mgd.mtx); in ieee80211_reconfig()
1620 if (sdata->vif.type == NL80211_IFTYPE_AP) { in ieee80211_reconfig()
1623 if (rcu_access_pointer(sdata->u.ap.beacon)) in ieee80211_reconfig()
1624 drv_start_ap(local, sdata); in ieee80211_reconfig()
1629 if (sdata->vif.bss_conf.enable_beacon) { in ieee80211_reconfig()
1632 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_reconfig()
1662 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1663 if (sdata->vif.type != NL80211_IFTYPE_STATION) in ieee80211_reconfig()
1665 if (!sdata->u.mgd.associated) in ieee80211_reconfig()
1668 ieee80211_send_nullfunc(local, sdata, 0); in ieee80211_reconfig()
1680 if (sta->sdata->vif.type != NL80211_IFTYPE_AP) in ieee80211_reconfig()
1685 WARN_ON(drv_sta_state(local, sta->sdata, sta, state, in ieee80211_reconfig()
1691 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_reconfig()
1692 if (ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1693 ieee80211_enable_keys(sdata); in ieee80211_reconfig()
1743 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1744 if (!ieee80211_sdata_running(sdata)) in ieee80211_reconfig()
1746 if (sdata->vif.type == NL80211_IFTYPE_STATION) in ieee80211_reconfig()
1747 ieee80211_sta_restart(sdata); in ieee80211_reconfig()
1759 struct ieee80211_sub_if_data *sdata; in ieee80211_resume_disconnect() local
1766 sdata = vif_to_sdata(vif); in ieee80211_resume_disconnect()
1767 local = sdata->local; in ieee80211_resume_disconnect()
1775 sdata->flags |= IEEE80211_SDATA_DISCONNECT_RESUME; in ieee80211_resume_disconnect()
1778 list_for_each_entry(key, &sdata->key_list, list) in ieee80211_resume_disconnect()
1784 void ieee80211_recalc_smps(struct ieee80211_sub_if_data *sdata) in ieee80211_recalc_smps() argument
1786 struct ieee80211_local *local = sdata->local; in ieee80211_recalc_smps()
1792 chanctx_conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_recalc_smps()
1860 static void _ieee80211_enable_rssi_reports(struct ieee80211_sub_if_data *sdata, in _ieee80211_enable_rssi_reports() argument
1864 trace_api_enable_rssi_reports(sdata, rssi_min_thold, rssi_max_thold); in _ieee80211_enable_rssi_reports()
1866 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_STATION)) in _ieee80211_enable_rssi_reports()
1874 sdata->u.mgd.rssi_min_thold = rssi_min_thold*16; in _ieee80211_enable_rssi_reports()
1875 sdata->u.mgd.rssi_max_thold = rssi_max_thold*16; in _ieee80211_enable_rssi_reports()
1882 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); in ieee80211_enable_rssi_reports() local
1887 _ieee80211_enable_rssi_reports(sdata, rssi_min_thold, in ieee80211_enable_rssi_reports()
1894 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); in ieee80211_disable_rssi_reports() local
1896 _ieee80211_enable_rssi_reports(sdata, 0, 0); in ieee80211_disable_rssi_reports()
2026 int ieee80211_add_srates_ie(struct ieee80211_sub_if_data *sdata, in ieee80211_add_srates_ie() argument
2030 struct ieee80211_local *local = sdata->local; in ieee80211_add_srates_ie()
2034 u32 basic_rates = sdata->vif.bss_conf.basic_rates; in ieee80211_add_srates_ie()
2058 int ieee80211_add_ext_srates_ie(struct ieee80211_sub_if_data *sdata, in ieee80211_add_ext_srates_ie() argument
2062 struct ieee80211_local *local = sdata->local; in ieee80211_add_ext_srates_ie()
2066 u32 basic_rates = sdata->vif.bss_conf.basic_rates; in ieee80211_add_ext_srates_ie()
2095 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); in ieee80211_ave_rssi() local
2096 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_ave_rssi()
2098 if (WARN_ON_ONCE(sdata->vif.type != NL80211_IFTYPE_STATION)) { in ieee80211_ave_rssi()
2189 struct ieee80211_sub_if_data *sdata; in ieee80211_dfs_cac_cancel() local
2192 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_dfs_cac_cancel()
2193 cancel_delayed_work_sync(&sdata->dfs_cac_timer_work); in ieee80211_dfs_cac_cancel()
2195 if (sdata->wdev.cac_started) { in ieee80211_dfs_cac_cancel()
2196 ieee80211_vif_release_channel(sdata); in ieee80211_dfs_cac_cancel()
2197 cfg80211_cac_event(sdata->dev, in ieee80211_dfs_cac_cancel()