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
106 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_stop_vifs()
107 if (!ieee80211_sdata_running(sdata)) in ieee80211_offchannel_stop_vifs()
110 if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE || in ieee80211_offchannel_stop_vifs()
111 sdata->vif.type == NL80211_IFTYPE_NAN) in ieee80211_offchannel_stop_vifs()
114 if (sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_offchannel_stop_vifs()
115 set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); in ieee80211_offchannel_stop_vifs()
118 if (sdata->vif.bss_conf.enable_beacon) { in ieee80211_offchannel_stop_vifs()
120 &sdata->state); in ieee80211_offchannel_stop_vifs()
121 sdata->vif.bss_conf.enable_beacon = false; in ieee80211_offchannel_stop_vifs()
123 sdata, &sdata->deflink, in ieee80211_offchannel_stop_vifs()
127 if (sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_offchannel_stop_vifs()
128 sdata->u.mgd.associated) in ieee80211_offchannel_stop_vifs()
129 ieee80211_offchannel_ps_enable(sdata); in ieee80211_offchannel_stop_vifs()
135 struct ieee80211_sub_if_data *sdata; in ieee80211_offchannel_return() local
142 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_return()
143 if (sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE) in ieee80211_offchannel_return()
146 if (sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_offchannel_return()
147 clear_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); in ieee80211_offchannel_return()
149 if (!ieee80211_sdata_running(sdata)) in ieee80211_offchannel_return()
153 if (sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_offchannel_return()
154 sdata->u.mgd.associated) in ieee80211_offchannel_return()
155 ieee80211_offchannel_ps_disable(sdata); in ieee80211_offchannel_return()
158 &sdata->state)) { in ieee80211_offchannel_return()
159 sdata->vif.bss_conf.enable_beacon = true; in ieee80211_offchannel_return()
161 sdata, &sdata->deflink, in ieee80211_offchannel_return()
175 cfg80211_mgmt_tx_status(&roc->sdata->wdev, roc->mgmt_tx_cookie, in ieee80211_roc_notify_destroy()
178 ieee80211_free_txskb(&roc->sdata->local->hw, roc->frame); in ieee80211_roc_notify_destroy()
182 cfg80211_remain_on_channel_expired(&roc->sdata->wdev, in ieee80211_roc_notify_destroy()
186 cfg80211_tx_mgmt_expired(&roc->sdata->wdev, in ieee80211_roc_notify_destroy()
248 ieee80211_tx_skb_tid_band(roc->sdata, roc->frame, 7, in ieee80211_handle_roc_started()
253 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()
377 if (tmp->sdata != roc->sdata || tmp->chan != roc->chan) in _ieee80211_start_next_roc()
562 struct ieee80211_sub_if_data *sdata, in ieee80211_start_roc_work() argument
602 roc->sdata = sdata; in ieee80211_start_roc_work()
627 ret = drv_remain_on_channel(local, sdata, channel, in ieee80211_start_roc_work()
643 if (tmp->chan != channel || tmp->sdata != sdata) in ieee80211_start_roc_work()
708 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_remain_on_channel() local
709 struct ieee80211_local *local = sdata->local; in ieee80211_remain_on_channel()
713 return ieee80211_start_roc_work(local, sdata, chan, in ieee80211_remain_on_channel()
751 ret = drv_cancel_remain_on_channel(local, roc->sdata); in ieee80211_cancel_roc()
804 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_cancel_remain_on_channel() local
805 struct ieee80211_local *local = sdata->local; in ieee80211_cancel_remain_on_channel()
813 struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev); in ieee80211_mgmt_tx() local
814 struct ieee80211_local *local = sdata->local; in ieee80211_mgmt_tx()
836 switch (sdata->vif.type) { in ieee80211_mgmt_tx()
838 if (!sdata->vif.cfg.ibss_joined) in ieee80211_mgmt_tx()
843 if (ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
844 !sdata->u.mesh.mesh_id_len) in ieee80211_mgmt_tx()
851 if (sdata->vif.type != NL80211_IFTYPE_ADHOC && in ieee80211_mgmt_tx()
852 !ieee80211_vif_is_mesh(&sdata->vif) && in ieee80211_mgmt_tx()
853 !sdata->bss->active) in ieee80211_mgmt_tx()
857 sta = sta_info_get_bss(sdata, mgmt->da); in ieee80211_mgmt_tx()
882 if (!sdata->u.mgd.associated || in ieee80211_mgmt_tx()
885 memcmp(sdata->vif.cfg.ap_addr, mgmt->bssid, ETH_ALEN))) { in ieee80211_mgmt_tx()
887 } else if (sdata->u.mgd.associated && in ieee80211_mgmt_tx()
888 ether_addr_equal(sdata->vif.cfg.ap_addr, mgmt->da)) { in ieee80211_mgmt_tx()
889 sta = sta_info_get_bss(sdata, mgmt->da); in ieee80211_mgmt_tx()
916 for (i = 0; i < ARRAY_SIZE(sdata->vif.link_conf); i++) { in ieee80211_mgmt_tx()
919 conf = rcu_dereference(sdata->vif.link_conf[i]); in ieee80211_mgmt_tx()
928 ether_addr_equal(sdata->vif.addr, mgmt->sa)) { in ieee80211_mgmt_tx()
938 if (sdata->vif.valid_links && in ieee80211_mgmt_tx()
974 if (sdata->vif.bss_conf.csa_active && in ieee80211_mgmt_tx()
975 (sdata->vif.type == NL80211_IFTYPE_AP || in ieee80211_mgmt_tx()
976 sdata->vif.type == NL80211_IFTYPE_MESH_POINT || in ieee80211_mgmt_tx()
977 sdata->vif.type == NL80211_IFTYPE_ADHOC) && in ieee80211_mgmt_tx()
984 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_mgmt_tx()
985 beacon = rcu_dereference(sdata->deflink.u.ap.beacon); in ieee80211_mgmt_tx()
986 else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) in ieee80211_mgmt_tx()
987 beacon = rcu_dereference(sdata->u.ibss.presp); in ieee80211_mgmt_tx()
988 else if (ieee80211_vif_is_mesh(&sdata->vif)) in ieee80211_mgmt_tx()
989 beacon = rcu_dereference(sdata->u.mesh.beacon); in ieee80211_mgmt_tx()
1002 skb->dev = sdata->dev; in ieee80211_mgmt_tx()
1023 ieee80211_tx_skb_tid(sdata, skb, 7, link_id); in ieee80211_mgmt_tx()
1035 ret = ieee80211_start_roc_work(local, sdata, params->chan, in ieee80211_mgmt_tx()
1061 struct ieee80211_sub_if_data *sdata) in ieee80211_roc_purge() argument
1069 if (sdata && roc->sdata != sdata) in ieee80211_roc_purge()
1075 drv_cancel_remain_on_channel(local, roc->sdata); in ieee80211_roc_purge()