Lines Matching refs:sdata
27 static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata) in ieee80211_offchannel_ps_enable() argument
29 struct ieee80211_local *local = sdata->local; in ieee80211_offchannel_ps_enable()
30 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_offchannel_ps_enable()
60 ieee80211_send_nullfunc(local, sdata, true); in ieee80211_offchannel_ps_enable()
64 static void ieee80211_offchannel_ps_disable(struct ieee80211_sub_if_data *sdata) in ieee80211_offchannel_ps_disable() argument
66 struct ieee80211_local *local = sdata->local; in ieee80211_offchannel_ps_disable()
69 ieee80211_send_nullfunc(local, sdata, false); in ieee80211_offchannel_ps_disable()
96 ieee80211_send_nullfunc(local, sdata, false); in ieee80211_offchannel_ps_disable()
101 ieee80211_sta_reset_beacon_monitor(sdata); in ieee80211_offchannel_ps_disable()
102 ieee80211_sta_reset_conn_monitor(sdata); in ieee80211_offchannel_ps_disable()
107 struct ieee80211_sub_if_data *sdata; in ieee80211_offchannel_stop_vifs() local
127 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_stop_vifs()
128 if (!ieee80211_sdata_running(sdata)) in ieee80211_offchannel_stop_vifs()
131 if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE || in ieee80211_offchannel_stop_vifs()
132 sdata->vif.type == NL80211_IFTYPE_NAN) in ieee80211_offchannel_stop_vifs()
135 if (sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_offchannel_stop_vifs()
136 set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); in ieee80211_offchannel_stop_vifs()
139 if (sdata->vif.bss_conf.enable_beacon) { in ieee80211_offchannel_stop_vifs()
141 &sdata->state); in ieee80211_offchannel_stop_vifs()
142 sdata->vif.bss_conf.enable_beacon = false; in ieee80211_offchannel_stop_vifs()
144 sdata, BSS_CHANGED_BEACON_ENABLED); in ieee80211_offchannel_stop_vifs()
147 if (sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_offchannel_stop_vifs()
148 sdata->u.mgd.associated) in ieee80211_offchannel_stop_vifs()
149 ieee80211_offchannel_ps_enable(sdata); in ieee80211_offchannel_stop_vifs()
156 struct ieee80211_sub_if_data *sdata; in ieee80211_offchannel_return() local
162 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_return()
163 if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE) in ieee80211_offchannel_return()
166 if (sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_offchannel_return()
167 clear_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); in ieee80211_offchannel_return()
169 if (!ieee80211_sdata_running(sdata)) in ieee80211_offchannel_return()
173 if (sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_offchannel_return()
174 sdata->u.mgd.associated) in ieee80211_offchannel_return()
175 ieee80211_offchannel_ps_disable(sdata); in ieee80211_offchannel_return()
178 &sdata->state)) { in ieee80211_offchannel_return()
179 sdata->vif.bss_conf.enable_beacon = true; in ieee80211_offchannel_return()
181 sdata, BSS_CHANGED_BEACON_ENABLED); in ieee80211_offchannel_return()
195 cfg80211_mgmt_tx_status(&roc->sdata->wdev, roc->mgmt_tx_cookie, in ieee80211_roc_notify_destroy()
198 ieee80211_free_txskb(&roc->sdata->local->hw, roc->frame); in ieee80211_roc_notify_destroy()
202 cfg80211_remain_on_channel_expired(&roc->sdata->wdev, in ieee80211_roc_notify_destroy()
264 ieee80211_tx_skb_tid_band(roc->sdata, roc->frame, 7, in ieee80211_handle_roc_started()
269 cfg80211_ready_on_channel(&roc->sdata->wdev, roc->cookie, in ieee80211_handle_roc_started()
332 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
340 int ret = drv_remain_on_channel(local, roc->sdata, roc->chan, in _ieee80211_start_next_roc()
351 if (tmp->sdata != roc->sdata || in _ieee80211_start_next_roc()
363 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
392 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
546 struct ieee80211_sub_if_data *sdata, in ieee80211_start_roc_work() argument
582 roc->sdata = sdata; in ieee80211_start_roc_work()
607 ret = drv_remain_on_channel(local, sdata, channel, in ieee80211_start_roc_work()
623 if (tmp->chan != channel || tmp->sdata != sdata) in ieee80211_start_roc_work()
688 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_remain_on_channel() local
689 struct ieee80211_local *local = sdata->local; in ieee80211_remain_on_channel()
693 ret = ieee80211_start_roc_work(local, sdata, chan, in ieee80211_remain_on_channel()
772 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_cancel_remain_on_channel() local
773 struct ieee80211_local *local = sdata->local; in ieee80211_cancel_remain_on_channel()
781 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_mgmt_tx() local
782 struct ieee80211_local *local = sdata->local; in ieee80211_mgmt_tx()
800 switch (sdata->vif.type) { in ieee80211_mgmt_tx()
802 if (!sdata->vif.bss_conf.ibss_joined) in ieee80211_mgmt_tx()
807 if (ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
808 !sdata->u.mesh.mesh_id_len) in ieee80211_mgmt_tx()
815 if (sdata->vif.type != NL80211_IFTYPE_ADHOC && in ieee80211_mgmt_tx()
816 !ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
817 !rcu_access_pointer(sdata->bss->beacon)) in ieee80211_mgmt_tx()
825 sta = sta_info_get_bss(sdata, mgmt->da); in ieee80211_mgmt_tx()
832 sdata_lock(sdata); in ieee80211_mgmt_tx()
833 if (!sdata->u.mgd.associated || in ieee80211_mgmt_tx()
836 memcmp(sdata->u.mgd.associated->bssid, in ieee80211_mgmt_tx()
839 sdata_unlock(sdata); in ieee80211_mgmt_tx()
862 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_mgmt_tx()
893 if (sdata->vif.csa_active && in ieee80211_mgmt_tx()
894 (sdata->vif.type == NL80211_IFTYPE_AP || in ieee80211_mgmt_tx()
895 sdata->vif.type == NL80211_IFTYPE_MESH_POINT || in ieee80211_mgmt_tx()
896 sdata->vif.type == NL80211_IFTYPE_ADHOC) && in ieee80211_mgmt_tx()
903 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_mgmt_tx()
904 beacon = rcu_dereference(sdata->u.ap.beacon); in ieee80211_mgmt_tx()
905 else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) in ieee80211_mgmt_tx()
906 beacon = rcu_dereference(sdata->u.ibss.presp); in ieee80211_mgmt_tx()
907 else if (ieee80211_vif_is_mesh(&sdata->vif)) in ieee80211_mgmt_tx()
908 beacon = rcu_dereference(sdata->u.mesh.beacon); in ieee80211_mgmt_tx()
920 skb->dev = sdata->dev; in ieee80211_mgmt_tx()
941 ieee80211_tx_skb(sdata, skb); in ieee80211_mgmt_tx()
953 ret = ieee80211_start_roc_work(local, sdata, params->chan, in ieee80211_mgmt_tx()
980 struct ieee80211_sub_if_data *sdata) in ieee80211_roc_purge() argument
987 if (sdata && roc->sdata != sdata) in ieee80211_roc_purge()