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()
57 ieee80211_send_nullfunc(local, sdata, true); in ieee80211_offchannel_ps_enable()
61 static void ieee80211_offchannel_ps_disable(struct ieee80211_sub_if_data *sdata) in ieee80211_offchannel_ps_disable() argument
63 struct ieee80211_local *local = sdata->local; in ieee80211_offchannel_ps_disable()
66 ieee80211_send_nullfunc(local, sdata, false); in ieee80211_offchannel_ps_disable()
74 ieee80211_send_nullfunc(local, sdata, false); in ieee80211_offchannel_ps_disable()
79 ieee80211_sta_reset_beacon_monitor(sdata); in ieee80211_offchannel_ps_disable()
80 ieee80211_sta_reset_conn_monitor(sdata); in ieee80211_offchannel_ps_disable()
85 struct ieee80211_sub_if_data *sdata; in ieee80211_offchannel_stop_vifs() local
105 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_stop_vifs()
106 if (!ieee80211_sdata_running(sdata)) in ieee80211_offchannel_stop_vifs()
109 if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE || in ieee80211_offchannel_stop_vifs()
110 sdata->vif.type == NL80211_IFTYPE_NAN) in ieee80211_offchannel_stop_vifs()
113 if (sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_offchannel_stop_vifs()
114 set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); in ieee80211_offchannel_stop_vifs()
117 if (sdata->vif.bss_conf.enable_beacon) { in ieee80211_offchannel_stop_vifs()
119 &sdata->state); in ieee80211_offchannel_stop_vifs()
120 sdata->vif.bss_conf.enable_beacon = false; in ieee80211_offchannel_stop_vifs()
122 sdata, BSS_CHANGED_BEACON_ENABLED); in ieee80211_offchannel_stop_vifs()
125 if (sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_offchannel_stop_vifs()
126 sdata->u.mgd.associated) in ieee80211_offchannel_stop_vifs()
127 ieee80211_offchannel_ps_enable(sdata); in ieee80211_offchannel_stop_vifs()
134 struct ieee80211_sub_if_data *sdata; in ieee80211_offchannel_return() local
140 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_return()
141 if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE) in ieee80211_offchannel_return()
144 if (sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_offchannel_return()
145 clear_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); in ieee80211_offchannel_return()
147 if (!ieee80211_sdata_running(sdata)) in ieee80211_offchannel_return()
151 if (sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_offchannel_return()
152 sdata->u.mgd.associated) in ieee80211_offchannel_return()
153 ieee80211_offchannel_ps_disable(sdata); in ieee80211_offchannel_return()
156 &sdata->state)) { in ieee80211_offchannel_return()
157 sdata->vif.bss_conf.enable_beacon = true; in ieee80211_offchannel_return()
159 sdata, BSS_CHANGED_BEACON_ENABLED); in ieee80211_offchannel_return()
173 cfg80211_mgmt_tx_status(&roc->sdata->wdev, roc->mgmt_tx_cookie, in ieee80211_roc_notify_destroy()
176 ieee80211_free_txskb(&roc->sdata->local->hw, roc->frame); in ieee80211_roc_notify_destroy()
180 cfg80211_remain_on_channel_expired(&roc->sdata->wdev, in ieee80211_roc_notify_destroy()
184 cfg80211_tx_mgmt_expired(&roc->sdata->wdev, in ieee80211_roc_notify_destroy()
246 ieee80211_tx_skb_tid_band(roc->sdata, roc->frame, 7, in ieee80211_handle_roc_started()
251 cfg80211_ready_on_channel(&roc->sdata->wdev, roc->cookie, in ieee80211_handle_roc_started()
314 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
322 int ret = drv_remain_on_channel(local, roc->sdata, roc->chan, in _ieee80211_start_next_roc()
333 if (tmp->sdata != roc->sdata || in _ieee80211_start_next_roc()
345 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
374 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
528 struct ieee80211_sub_if_data *sdata, in ieee80211_start_roc_work() argument
568 roc->sdata = sdata; in ieee80211_start_roc_work()
593 ret = drv_remain_on_channel(local, sdata, channel, in ieee80211_start_roc_work()
609 if (tmp->chan != channel || tmp->sdata != sdata) in ieee80211_start_roc_work()
674 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_remain_on_channel() local
675 struct ieee80211_local *local = sdata->local; in ieee80211_remain_on_channel()
679 ret = ieee80211_start_roc_work(local, sdata, chan, in ieee80211_remain_on_channel()
720 ret = drv_cancel_remain_on_channel(local, roc->sdata); in ieee80211_cancel_roc()
758 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_cancel_remain_on_channel() local
759 struct ieee80211_local *local = sdata->local; in ieee80211_cancel_remain_on_channel()
767 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_mgmt_tx() local
768 struct ieee80211_local *local = sdata->local; in ieee80211_mgmt_tx()
786 switch (sdata->vif.type) { in ieee80211_mgmt_tx()
788 if (!sdata->vif.bss_conf.ibss_joined) in ieee80211_mgmt_tx()
793 if (ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
794 !sdata->u.mesh.mesh_id_len) in ieee80211_mgmt_tx()
801 if (sdata->vif.type != NL80211_IFTYPE_ADHOC && in ieee80211_mgmt_tx()
802 !ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
803 !rcu_access_pointer(sdata->bss->beacon)) in ieee80211_mgmt_tx()
811 sta = sta_info_get_bss(sdata, mgmt->da); in ieee80211_mgmt_tx()
818 sdata_lock(sdata); in ieee80211_mgmt_tx()
819 if (!sdata->u.mgd.associated || in ieee80211_mgmt_tx()
822 memcmp(sdata->u.mgd.associated->bssid, in ieee80211_mgmt_tx()
825 sdata_unlock(sdata); in ieee80211_mgmt_tx()
848 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_mgmt_tx()
879 if (sdata->vif.csa_active && in ieee80211_mgmt_tx()
880 (sdata->vif.type == NL80211_IFTYPE_AP || in ieee80211_mgmt_tx()
881 sdata->vif.type == NL80211_IFTYPE_MESH_POINT || in ieee80211_mgmt_tx()
882 sdata->vif.type == NL80211_IFTYPE_ADHOC) && in ieee80211_mgmt_tx()
889 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_mgmt_tx()
890 beacon = rcu_dereference(sdata->u.ap.beacon); in ieee80211_mgmt_tx()
891 else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) in ieee80211_mgmt_tx()
892 beacon = rcu_dereference(sdata->u.ibss.presp); in ieee80211_mgmt_tx()
893 else if (ieee80211_vif_is_mesh(&sdata->vif)) in ieee80211_mgmt_tx()
894 beacon = rcu_dereference(sdata->u.mesh.beacon); in ieee80211_mgmt_tx()
906 skb->dev = sdata->dev; in ieee80211_mgmt_tx()
927 ieee80211_tx_skb(sdata, skb); in ieee80211_mgmt_tx()
939 ret = ieee80211_start_roc_work(local, sdata, params->chan, in ieee80211_mgmt_tx()
966 struct ieee80211_sub_if_data *sdata) in ieee80211_roc_purge() argument
973 if (sdata && roc->sdata != sdata) in ieee80211_roc_purge()
979 drv_cancel_remain_on_channel(local, sdata); in ieee80211_roc_purge()