Lines Matching defs:sdata

185 	struct ieee80211_sub_if_data *sdata;
192 sdata = vif_to_sdata(vif);
193 short_preamble = sdata->vif.bss_conf.use_short_preamble;
194 if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE)
212 struct ieee80211_sub_if_data *sdata;
226 sdata = vif_to_sdata(vif);
227 short_preamble = sdata->vif.bss_conf.use_short_preamble;
228 if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE)
256 struct ieee80211_sub_if_data *sdata;
269 sdata = vif_to_sdata(vif);
270 short_preamble = sdata->vif.bss_conf.use_short_preamble;
271 if (sdata->flags & IEEE80211_SDATA_OPERATING_GMODE)
291 static void __ieee80211_wake_txqs(struct ieee80211_sub_if_data *sdata, int ac)
293 struct ieee80211_local *local = sdata->local;
294 struct ieee80211_vif *vif = &sdata->vif;
304 if (sdata->vif.type == NL80211_IFTYPE_AP)
305 ps = &sdata->bss->ps;
307 sdata->vif.txqs_stopped[ac] = false;
310 if (sdata != sta->sdata)
358 struct ieee80211_sub_if_data *sdata;
372 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
376 int ac_queue = sdata->vif.hw_queue[ac];
379 sdata->vif.cab_queue == i)
380 __ieee80211_wake_txqs(sdata, ac);
401 struct ieee80211_sub_if_data *sdata;
410 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
413 if (!sdata->dev)
416 if (sdata->vif.cab_queue != IEEE80211_INVAL_HW_QUEUE &&
417 local->queue_stop_reasons[sdata->vif.cab_queue] != 0)
421 int ac_queue = sdata->vif.hw_queue[ac];
424 (sdata->vif.cab_queue == queue &&
427 netif_wake_subqueue(sdata->dev, ac);
509 struct ieee80211_sub_if_data *sdata;
529 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
532 if (!sdata->dev)
536 if (sdata->vif.hw_queue[ac] == queue ||
537 sdata->vif.cab_queue == queue) {
539 netif_stop_subqueue(sdata->dev, ac);
543 sdata->vif.txqs_stopped[ac] = true;
695 struct ieee80211_sub_if_data *sdata)
699 if (sdata && ieee80211_hw_check(&local->hw, QUEUE_CONTROL)) {
705 queues |= BIT(sdata->vif.hw_queue[ac]);
706 if (sdata->vif.cab_queue != IEEE80211_INVAL_HW_QUEUE)
707 queues |= BIT(sdata->vif.cab_queue);
717 struct ieee80211_sub_if_data *sdata,
728 queues = ieee80211_get_vif_queues(local, sdata);
734 drv_flush(local, sdata, queues, drop);
742 struct ieee80211_sub_if_data *sdata, bool drop)
744 __ieee80211_flush_queues(local, sdata, 0, drop);
748 struct ieee80211_sub_if_data *sdata,
752 ieee80211_get_vif_queues(local, sdata),
757 struct ieee80211_sub_if_data *sdata,
761 ieee80211_get_vif_queues(local, sdata),
771 struct ieee80211_sub_if_data *sdata;
774 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
775 switch (sdata->vif.type) {
777 if (!(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE))
786 active_only && !(sdata->flags & IEEE80211_SDATA_IN_DRIVER))
789 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER))
791 if (ieee80211_sdata_running(sdata) || !active_only)
792 iterator(data, sdata->vif.addr,
793 &sdata->vif);
796 sdata = rcu_dereference_check(local->monitor_sdata,
799 if (sdata &&
801 sdata->flags & IEEE80211_SDATA_IN_DRIVER))
802 iterator(data, sdata->vif.addr, &sdata->vif);
879 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
881 if (!ieee80211_sdata_running(sdata) ||
882 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER))
884 return &sdata->vif;
890 struct ieee80211_sub_if_data *sdata;
895 sdata = vif_to_sdata(vif);
897 if (!ieee80211_sdata_running(sdata) ||
898 !(sdata->flags & IEEE80211_SDATA_IN_DRIVER))
901 return &sdata->wdev;
1525 void ieee80211_regulatory_limit_wmm_params(struct ieee80211_sub_if_data *sdata,
1534 if (sdata->vif.type != NL80211_IFTYPE_AP &&
1535 sdata->vif.type != NL80211_IFTYPE_STATION)
1539 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
1548 rrule = freq_reg_info(sdata->wdev.wiphy, MHZ_TO_KHZ(center_freq));
1555 if (sdata->vif.type == NL80211_IFTYPE_AP)
1566 void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
1569 struct ieee80211_local *local = sdata->local;
1586 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
1589 !(sdata->flags & IEEE80211_SDATA_OPERATING_GMODE);
1592 is_ocb = (sdata->vif.type == NL80211_IFTYPE_OCB);
1659 ieee80211_regulatory_limit_wmm_params(sdata, &qparam, ac);
1663 sdata->tx_conf[ac] = qparam;
1664 drv_conf_tx(local, sdata, ac, &qparam);
1667 if (sdata->vif.type != NL80211_IFTYPE_MONITOR &&
1668 sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE &&
1669 sdata->vif.type != NL80211_IFTYPE_NAN) {
1670 sdata->vif.bss_conf.qos = enable_qos;
1672 ieee80211_bss_info_change_notify(sdata,
1677 void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata,
1683 struct ieee80211_local *local = sdata->local;
1700 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN);
1716 ieee80211_tx_skb(sdata, skb);
1719 void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata,
1724 struct ieee80211_local *local = sdata->local;
1733 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN);
1749 if (sdata->vif.type != NL80211_IFTYPE_STATION ||
1750 !(sdata->u.mgd.flags & IEEE80211_STA_MFP_ENABLED))
1754 ieee80211_tx_skb(sdata, skb);
1771 static int ieee80211_build_preq_ies_band(struct ieee80211_sub_if_data *sdata,
1779 struct ieee80211_local *local = sdata->local;
1960 ieee80211_vif_type_p2p(&sdata->vif);
1979 int ieee80211_build_preq_ies(struct ieee80211_sub_if_data *sdata, u8 *buffer,
1994 pos += ieee80211_build_preq_ies_band(sdata,
2023 struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata,
2031 struct ieee80211_local *local = sdata->local;
2044 chandef.width = sdata->vif.bss_conf.chandef.width;
2056 ies_len = ieee80211_build_preq_ies(sdata, skb_tail_pointer(skb),
2073 u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata,
2082 sband = sdata->local->hw.wiphy->bands[band];
2086 rate_flags = ieee80211_chandef_rate_flags(&sdata->vif.bss_conf.chandef);
2087 shift = ieee80211_vif_get_shift(&sdata->vif);
2162 struct ieee80211_sub_if_data *sdata;
2186 list_for_each_entry(sdata, &local->interfaces, list)
2187 sdata->flags &= ~IEEE80211_SDATA_IN_DRIVER;
2201 struct ieee80211_sub_if_data *sdata)
2210 conf = rcu_dereference_protected(sdata->vif.chanctx_conf,
2214 drv_assign_vif_chanctx(local, sdata, ctx);
2219 static void ieee80211_reconfig_stations(struct ieee80211_sub_if_data *sdata)
2221 struct ieee80211_local *local = sdata->local;
2229 if (!sta->uploaded || sta->sdata != sdata)
2234 WARN_ON(drv_sta_state(local, sta->sdata, sta, state,
2240 static int ieee80211_reconfig_nan(struct ieee80211_sub_if_data *sdata)
2245 res = drv_start_nan(sdata->local, sdata,
2246 &sdata->u.nan.conf);
2250 funcs = kcalloc(sdata->local->hw.max_nan_de_entries + 1,
2260 spin_lock_bh(&sdata->u.nan.func_lock);
2262 idr_for_each_entry(&sdata->u.nan.function_inst_ids, func, id)
2265 spin_unlock_bh(&sdata->u.nan.func_lock);
2268 res = drv_add_nan_func(sdata->local, sdata, funcs[i]);
2270 ieee80211_nan_func_terminated(&sdata->vif,
2284 struct ieee80211_sub_if_data *sdata;
2371 sdata = rtnl_dereference(local->monitor_sdata);
2372 if (sdata) {
2375 res = drv_add_interface(local, sdata);
2379 kfree(sdata);
2383 list_for_each_entry(sdata, &local->interfaces, list) {
2384 if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
2385 sdata->vif.type != NL80211_IFTYPE_MONITOR &&
2386 ieee80211_sdata_running(sdata)) {
2387 res = drv_add_interface(local, sdata);
2397 list_for_each_entry_continue_reverse(sdata, &local->interfaces,
2399 if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
2400 sdata->vif.type != NL80211_IFTYPE_MONITOR &&
2401 ieee80211_sdata_running(sdata))
2402 drv_remove_interface(local, sdata);
2416 sdata = rtnl_dereference(local->monitor_sdata);
2417 if (sdata && ieee80211_sdata_running(sdata))
2418 ieee80211_assign_chanctx(local, sdata);
2427 list_for_each_entry(sdata, &local->interfaces, list) {
2430 if (!ieee80211_sdata_running(sdata))
2433 ieee80211_assign_chanctx(local, sdata);
2435 switch (sdata->vif.type) {
2440 if (sdata->vif.bss_conf.ibss_joined)
2441 WARN_ON(drv_join_ibss(local, sdata));
2444 ieee80211_reconfig_stations(sdata);
2448 drv_conf_tx(local, sdata, i,
2449 &sdata->tx_conf[i]);
2467 if (sdata->vif.mu_mimo_owner)
2470 switch (sdata->vif.type) {
2477 if (sdata->u.mgd.have_beacon)
2480 if (sdata->vif.bss_conf.max_idle_period ||
2481 sdata->vif.bss_conf.protected_keep_alive)
2484 sdata_lock(sdata);
2485 ieee80211_bss_info_change_notify(sdata, changed);
2486 sdata_unlock(sdata);
2490 ieee80211_bss_info_change_notify(sdata, changed);
2498 if (sdata->vif.bss_conf.ftm_responder == 1 &&
2499 wiphy_ext_feature_isset(sdata->local->hw.wiphy,
2503 if (sdata->vif.type == NL80211_IFTYPE_AP) {
2506 if (rcu_access_pointer(sdata->u.ap.beacon))
2507 drv_start_ap(local, sdata);
2511 if (sdata->vif.bss_conf.enable_beacon) {
2514 ieee80211_bss_info_change_notify(sdata, changed);
2518 res = ieee80211_reconfig_nan(sdata);
2548 list_for_each_entry(sdata, &local->interfaces, list) {
2549 if (sdata->vif.type != NL80211_IFTYPE_STATION)
2551 if (!sdata->u.mgd.associated)
2554 ieee80211_send_nullfunc(local, sdata, false);
2566 if (sta->sdata->vif.type != NL80211_IFTYPE_AP &&
2567 sta->sdata->vif.type != NL80211_IFTYPE_AP_VLAN)
2572 WARN_ON(drv_sta_state(local, sta->sdata, sta, state,
2578 list_for_each_entry(sdata, &local->interfaces, list)
2579 ieee80211_reenable_keys(sdata);
2645 list_for_each_entry(sdata, &local->interfaces, list)
2646 ieee80211_queue_work(&local->hw, &sdata->work);
2674 list_for_each_entry(sdata, &local->interfaces, list) {
2675 if (!ieee80211_sdata_running(sdata))
2677 if (sdata->vif.type == NL80211_IFTYPE_STATION)
2678 ieee80211_sta_restart(sdata);
2691 struct ieee80211_sub_if_data *sdata;
2698 sdata = vif_to_sdata(vif);
2699 local = sdata->local;
2707 sdata->flags |= IEEE80211_SDATA_DISCONNECT_RESUME;
2710 list_for_each_entry(key, &sdata->key_list, list)
2716 void ieee80211_recalc_smps(struct ieee80211_sub_if_data *sdata)
2718 struct ieee80211_local *local = sdata->local;
2724 chanctx_conf = rcu_dereference_protected(sdata->vif.chanctx_conf,
2742 void ieee80211_recalc_min_chandef(struct ieee80211_sub_if_data *sdata)
2744 struct ieee80211_local *local = sdata->local;
2750 chanctx_conf = rcu_dereference_protected(sdata->vif.chanctx_conf,
2772 static void _ieee80211_enable_rssi_reports(struct ieee80211_sub_if_data *sdata,
2776 trace_api_enable_rssi_reports(sdata, rssi_min_thold, rssi_max_thold);
2778 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_STATION))
2786 sdata->u.mgd.rssi_min_thold = rssi_min_thold*16;
2787 sdata->u.mgd.rssi_max_thold = rssi_max_thold*16;
2794 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
2799 _ieee80211_enable_rssi_reports(sdata, rssi_min_thold,
2806 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
2808 _ieee80211_enable_rssi_reports(sdata, 0, 0);
2868 u8 ieee80211_ie_len_he_cap(struct ieee80211_sub_if_data *sdata, u8 iftype)
2874 sband = ieee80211_get_sband(sdata);
2955 void ieee80211_ie_build_he_6ghz_cap(struct ieee80211_sub_if_data *sdata,
2960 enum nl80211_iftype iftype = ieee80211_vif_type_p2p(&sdata->vif);
2964 sband = ieee80211_get_sband(sdata);
2979 switch (sdata->smps_mode) {
3362 bool ieee80211_chandef_he_6ghz_oper(struct ieee80211_sub_if_data *sdata,
3366 struct ieee80211_local *local = sdata->local;
3368 enum nl80211_iftype iftype = ieee80211_vif_type_p2p(&sdata->vif);
3383 sdata_info(sdata, "Missing iftype sband data/HE cap");
3396 sdata_info(sdata,
3405 sdata_info(sdata,
3413 he_chandef.chan = ieee80211_get_channel(sdata->local->hw.wiphy, freq);
3455 sdata_info(sdata,
3535 int ieee80211_add_srates_ie(struct ieee80211_sub_if_data *sdata,
3539 struct ieee80211_local *local = sdata->local;
3543 u32 basic_rates = sdata->vif.bss_conf.basic_rates;
3546 shift = ieee80211_vif_get_shift(&sdata->vif);
3547 rate_flags = ieee80211_chandef_rate_flags(&sdata->vif.bss_conf.chandef);
3579 int ieee80211_add_ext_srates_ie(struct ieee80211_sub_if_data *sdata,
3583 struct ieee80211_local *local = sdata->local;
3587 u32 basic_rates = sdata->vif.bss_conf.basic_rates;
3590 rate_flags = ieee80211_chandef_rate_flags(&sdata->vif.bss_conf.chandef);
3591 shift = ieee80211_vif_get_shift(&sdata->vif);
3630 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
3631 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
3633 if (WARN_ON_ONCE(sdata->vif.type != NL80211_IFTYPE_STATION)) {
3753 struct ieee80211_sub_if_data *sdata;
3760 list_for_each_entry(sdata, &local->interfaces, list) {
3762 * by the time it gets it, sdata->wdev.cac_started
3765 cancel_delayed_work(&sdata->dfs_cac_timer_work);
3767 if (sdata->wdev.cac_started) {
3768 chandef = sdata->vif.bss_conf.chandef;
3769 ieee80211_vif_release_channel(sdata);
3770 cfg80211_cac_event(sdata->dev,
3908 int ieee80211_send_action_csa(struct ieee80211_sub_if_data *sdata,
3913 struct ieee80211_local *local = sdata->local;
3919 if (sdata->vif.type != NL80211_IFTYPE_ADHOC &&
3920 sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
3937 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN);
3938 if (ieee80211_vif_is_mesh(&sdata->vif)) {
3939 memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN);
3941 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
3967 if (ieee80211_vif_is_mesh(&sdata->vif)) {
3968 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
3973 *pos++ = sdata->u.mesh.mshcfg.dot11MeshTTL; /* Mesh TTL */
3991 ieee80211_tx_skb(sdata, skb);
4211 struct ieee80211_sub_if_data *sdata)
4213 u64 tsf = drv_get_tsf(local, sdata);
4215 u16 beacon_int = sdata->vif.bss_conf.beacon_int * 1024;
4216 u8 dtim_period = sdata->vif.bss_conf.dtim_period;
4223 if (sdata->vif.type == NL80211_IFTYPE_AP ||
4224 sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
4225 if (!sdata->bss)
4228 ps = &sdata->bss->ps;
4229 } else if (ieee80211_vif_is_mesh(&sdata->vif)) {
4230 ps = &sdata->u.mesh.ps;
4254 struct ieee80211_sub_if_data *sdata;
4262 list_for_each_entry(sdata, &ctx->reserved_vifs, reserved_chanctx_list)
4263 if (sdata->reserved_radar_required)
4264 radar_detect |= BIT(sdata->reserved_chandef.width);
4273 list_for_each_entry(sdata, &ctx->assigned_vifs, assigned_chanctx_list)
4274 if (sdata->radar_required)
4275 radar_detect |= BIT(sdata->vif.bss_conf.chandef.width);
4280 int ieee80211_check_combinations(struct ieee80211_sub_if_data *sdata,
4285 struct ieee80211_local *local = sdata->local;
4287 enum nl80211_iftype iftype = sdata->wdev.iftype;
4306 if (sdata->vif.type == NL80211_IFTYPE_AP ||
4307 sdata->vif.type == NL80211_IFTYPE_MESH_POINT) {
4313 params.new_beacon_int = sdata->vif.bss_conf.beacon_int;
4350 if (sdata_iter == sdata ||
4378 struct ieee80211_sub_if_data *sdata;
4396 list_for_each_entry_rcu(sdata, &local->interfaces, list)
4397 params.iftype_num[sdata->wdev.iftype]++;
4408 void ieee80211_add_s1g_capab_ie(struct ieee80211_sub_if_data *sdata,
4412 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
4417 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_STATION))
4450 void ieee80211_add_aid_request_ie(struct ieee80211_sub_if_data *sdata,