Lines Matching refs:sdata
25 static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata) in ieee80211_offchannel_ps_enable() argument
27 struct ieee80211_local *local = sdata->local; in ieee80211_offchannel_ps_enable()
28 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_offchannel_ps_enable()
58 ieee80211_send_nullfunc(local, sdata, true); in ieee80211_offchannel_ps_enable()
62 static void ieee80211_offchannel_ps_disable(struct ieee80211_sub_if_data *sdata) in ieee80211_offchannel_ps_disable() argument
64 struct ieee80211_local *local = sdata->local; in ieee80211_offchannel_ps_disable()
67 ieee80211_send_nullfunc(local, sdata, false); in ieee80211_offchannel_ps_disable()
94 ieee80211_send_nullfunc(local, sdata, false); in ieee80211_offchannel_ps_disable()
99 ieee80211_sta_reset_beacon_monitor(sdata); in ieee80211_offchannel_ps_disable()
100 ieee80211_sta_reset_conn_monitor(sdata); in ieee80211_offchannel_ps_disable()
105 struct ieee80211_sub_if_data *sdata; in ieee80211_offchannel_stop_vifs() local
125 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_stop_vifs()
126 if (!ieee80211_sdata_running(sdata)) in ieee80211_offchannel_stop_vifs()
129 if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE || in ieee80211_offchannel_stop_vifs()
130 sdata->vif.type == NL80211_IFTYPE_NAN) in ieee80211_offchannel_stop_vifs()
133 if (sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_offchannel_stop_vifs()
134 set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); in ieee80211_offchannel_stop_vifs()
137 if (sdata->vif.bss_conf.enable_beacon) { in ieee80211_offchannel_stop_vifs()
139 &sdata->state); in ieee80211_offchannel_stop_vifs()
140 sdata->vif.bss_conf.enable_beacon = false; in ieee80211_offchannel_stop_vifs()
142 sdata, BSS_CHANGED_BEACON_ENABLED); in ieee80211_offchannel_stop_vifs()
145 if (sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_offchannel_stop_vifs()
146 sdata->u.mgd.associated) in ieee80211_offchannel_stop_vifs()
147 ieee80211_offchannel_ps_enable(sdata); in ieee80211_offchannel_stop_vifs()
154 struct ieee80211_sub_if_data *sdata; in ieee80211_offchannel_return() local
160 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_return()
161 if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE) in ieee80211_offchannel_return()
164 if (sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_offchannel_return()
165 clear_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); in ieee80211_offchannel_return()
167 if (!ieee80211_sdata_running(sdata)) in ieee80211_offchannel_return()
171 if (sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_offchannel_return()
172 sdata->u.mgd.associated) in ieee80211_offchannel_return()
173 ieee80211_offchannel_ps_disable(sdata); in ieee80211_offchannel_return()
176 &sdata->state)) { in ieee80211_offchannel_return()
177 sdata->vif.bss_conf.enable_beacon = true; in ieee80211_offchannel_return()
179 sdata, BSS_CHANGED_BEACON_ENABLED); in ieee80211_offchannel_return()
193 cfg80211_mgmt_tx_status(&roc->sdata->wdev, roc->mgmt_tx_cookie, in ieee80211_roc_notify_destroy()
196 ieee80211_free_txskb(&roc->sdata->local->hw, roc->frame); in ieee80211_roc_notify_destroy()
200 cfg80211_remain_on_channel_expired(&roc->sdata->wdev, in ieee80211_roc_notify_destroy()
204 cfg80211_tx_mgmt_expired(&roc->sdata->wdev, in ieee80211_roc_notify_destroy()
266 ieee80211_tx_skb_tid_band(roc->sdata, roc->frame, 7, in ieee80211_handle_roc_started()
271 cfg80211_ready_on_channel(&roc->sdata->wdev, roc->cookie, in ieee80211_handle_roc_started()
334 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
342 int ret = drv_remain_on_channel(local, roc->sdata, roc->chan, in _ieee80211_start_next_roc()
353 if (tmp->sdata != roc->sdata || in _ieee80211_start_next_roc()
365 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
394 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
548 struct ieee80211_sub_if_data *sdata, in ieee80211_start_roc_work() argument
584 roc->sdata = sdata; in ieee80211_start_roc_work()
609 ret = drv_remain_on_channel(local, sdata, channel, in ieee80211_start_roc_work()
625 if (tmp->chan != channel || tmp->sdata != sdata) in ieee80211_start_roc_work()
690 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_remain_on_channel() local
691 struct ieee80211_local *local = sdata->local; in ieee80211_remain_on_channel()
695 ret = ieee80211_start_roc_work(local, sdata, chan, in ieee80211_remain_on_channel()
736 ret = drv_cancel_remain_on_channel(local, roc->sdata); in ieee80211_cancel_roc()
774 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_cancel_remain_on_channel() local
775 struct ieee80211_local *local = sdata->local; in ieee80211_cancel_remain_on_channel()
783 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_mgmt_tx() local
784 struct ieee80211_local *local = sdata->local; in ieee80211_mgmt_tx()
802 switch (sdata->vif.type) { in ieee80211_mgmt_tx()
804 if (!sdata->vif.bss_conf.ibss_joined) in ieee80211_mgmt_tx()
809 if (ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
810 !sdata->u.mesh.mesh_id_len) in ieee80211_mgmt_tx()
817 if (sdata->vif.type != NL80211_IFTYPE_ADHOC && in ieee80211_mgmt_tx()
818 !ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
819 !rcu_access_pointer(sdata->bss->beacon)) in ieee80211_mgmt_tx()
827 sta = sta_info_get_bss(sdata, mgmt->da); in ieee80211_mgmt_tx()
834 sdata_lock(sdata); in ieee80211_mgmt_tx()
835 if (!sdata->u.mgd.associated || in ieee80211_mgmt_tx()
838 memcmp(sdata->u.mgd.associated->bssid, in ieee80211_mgmt_tx()
841 sdata_unlock(sdata); in ieee80211_mgmt_tx()
864 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_mgmt_tx()
895 if (sdata->vif.csa_active && in ieee80211_mgmt_tx()
896 (sdata->vif.type == NL80211_IFTYPE_AP || in ieee80211_mgmt_tx()
897 sdata->vif.type == NL80211_IFTYPE_MESH_POINT || in ieee80211_mgmt_tx()
898 sdata->vif.type == NL80211_IFTYPE_ADHOC) && in ieee80211_mgmt_tx()
905 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_mgmt_tx()
906 beacon = rcu_dereference(sdata->u.ap.beacon); in ieee80211_mgmt_tx()
907 else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) in ieee80211_mgmt_tx()
908 beacon = rcu_dereference(sdata->u.ibss.presp); in ieee80211_mgmt_tx()
909 else if (ieee80211_vif_is_mesh(&sdata->vif)) in ieee80211_mgmt_tx()
910 beacon = rcu_dereference(sdata->u.mesh.beacon); in ieee80211_mgmt_tx()
922 skb->dev = sdata->dev; in ieee80211_mgmt_tx()
943 ieee80211_tx_skb(sdata, skb); in ieee80211_mgmt_tx()
955 ret = ieee80211_start_roc_work(local, sdata, params->chan, in ieee80211_mgmt_tx()
982 struct ieee80211_sub_if_data *sdata) in ieee80211_roc_purge() argument
989 if (sdata && roc->sdata != sdata) in ieee80211_roc_purge()
995 drv_cancel_remain_on_channel(local, sdata); in ieee80211_roc_purge()