Lines Matching full:local

30 	struct ieee80211_local *local = sdata->local;  in ieee80211_offchannel_ps_enable()  local
33 local->offchannel_ps_enabled = false; in ieee80211_offchannel_ps_enable()
35 /* FIXME: what to do when local->pspolling is true? */ in ieee80211_offchannel_ps_enable()
37 del_timer_sync(&local->dynamic_ps_timer); in ieee80211_offchannel_ps_enable()
41 cancel_work_sync(&local->dynamic_ps_enable_work); in ieee80211_offchannel_ps_enable()
43 if (local->hw.conf.flags & IEEE80211_CONF_PS) { in ieee80211_offchannel_ps_enable()
44 local->offchannel_ps_enabled = true; in ieee80211_offchannel_ps_enable()
45 local->hw.conf.flags &= ~IEEE80211_CONF_PS; in ieee80211_offchannel_ps_enable()
46 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); in ieee80211_offchannel_ps_enable()
49 if (tell_ap && (!local->offchannel_ps_enabled || in ieee80211_offchannel_ps_enable()
50 !(local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK))) in ieee80211_offchannel_ps_enable()
61 ieee80211_send_nullfunc(local, sdata, 1); in ieee80211_offchannel_ps_enable()
67 struct ieee80211_local *local = sdata->local; in ieee80211_offchannel_ps_disable() local
69 if (!local->ps_sdata) in ieee80211_offchannel_ps_disable()
70 ieee80211_send_nullfunc(local, sdata, 0); in ieee80211_offchannel_ps_disable()
71 else if (local->offchannel_ps_enabled) { in ieee80211_offchannel_ps_disable()
88 local->hw.conf.flags |= IEEE80211_CONF_PS; in ieee80211_offchannel_ps_disable()
89 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); in ieee80211_offchannel_ps_disable()
90 } else if (local->hw.conf.dynamic_ps_timeout > 0) { in ieee80211_offchannel_ps_disable()
97 ieee80211_send_nullfunc(local, sdata, 0); in ieee80211_offchannel_ps_disable()
98 mod_timer(&local->dynamic_ps_timer, jiffies + in ieee80211_offchannel_ps_disable()
99 msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout)); in ieee80211_offchannel_ps_disable()
106 void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local, in ieee80211_offchannel_stop_vifs() argument
115 mutex_lock(&local->iflist_mtx); in ieee80211_offchannel_stop_vifs()
116 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_stop_vifs()
138 mutex_unlock(&local->iflist_mtx); in ieee80211_offchannel_stop_vifs()
141 void ieee80211_offchannel_return(struct ieee80211_local *local, in ieee80211_offchannel_return() argument
146 mutex_lock(&local->iflist_mtx); in ieee80211_offchannel_return()
147 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_offchannel_return()
181 mutex_unlock(&local->iflist_mtx); in ieee80211_offchannel_return()
186 struct ieee80211_local *local = in ieee80211_hw_roc_start() local
190 mutex_lock(&local->mtx); in ieee80211_hw_roc_start()
192 if (!local->hw_roc_channel) { in ieee80211_hw_roc_start()
193 mutex_unlock(&local->mtx); in ieee80211_hw_roc_start()
197 if (local->hw_roc_skb) { in ieee80211_hw_roc_start()
198 sdata = IEEE80211_DEV_TO_SUB_IF(local->hw_roc_dev); in ieee80211_hw_roc_start()
199 ieee80211_tx_skb(sdata, local->hw_roc_skb); in ieee80211_hw_roc_start()
200 local->hw_roc_skb = NULL; in ieee80211_hw_roc_start()
202 cfg80211_ready_on_channel(local->hw_roc_dev, in ieee80211_hw_roc_start()
203 local->hw_roc_cookie, in ieee80211_hw_roc_start()
204 local->hw_roc_channel, in ieee80211_hw_roc_start()
205 local->hw_roc_channel_type, in ieee80211_hw_roc_start()
206 local->hw_roc_duration, in ieee80211_hw_roc_start()
210 ieee80211_recalc_idle(local); in ieee80211_hw_roc_start()
212 mutex_unlock(&local->mtx); in ieee80211_hw_roc_start()
217 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_ready_on_channel() local
219 trace_api_ready_on_channel(local); in ieee80211_ready_on_channel()
221 ieee80211_queue_work(hw, &local->hw_roc_start); in ieee80211_ready_on_channel()
227 struct ieee80211_local *local = in ieee80211_hw_roc_done() local
230 mutex_lock(&local->mtx); in ieee80211_hw_roc_done()
232 if (!local->hw_roc_channel) { in ieee80211_hw_roc_done()
233 mutex_unlock(&local->mtx); in ieee80211_hw_roc_done()
237 if (!local->hw_roc_for_tx) in ieee80211_hw_roc_done()
238 cfg80211_remain_on_channel_expired(local->hw_roc_dev, in ieee80211_hw_roc_done()
239 local->hw_roc_cookie, in ieee80211_hw_roc_done()
240 local->hw_roc_channel, in ieee80211_hw_roc_done()
241 local->hw_roc_channel_type, in ieee80211_hw_roc_done()
244 local->hw_roc_channel = NULL; in ieee80211_hw_roc_done()
245 local->hw_roc_cookie = 0; in ieee80211_hw_roc_done()
247 ieee80211_recalc_idle(local); in ieee80211_hw_roc_done()
249 mutex_unlock(&local->mtx); in ieee80211_hw_roc_done()
254 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_remain_on_channel_expired() local
256 trace_api_remain_on_channel_expired(local); in ieee80211_remain_on_channel_expired()
258 ieee80211_queue_work(hw, &local->hw_roc_done); in ieee80211_remain_on_channel_expired()
262 void ieee80211_hw_roc_setup(struct ieee80211_local *local) in ieee80211_hw_roc_setup() argument
264 INIT_WORK(&local->hw_roc_start, ieee80211_hw_roc_start); in ieee80211_hw_roc_setup()
265 INIT_WORK(&local->hw_roc_done, ieee80211_hw_roc_done); in ieee80211_hw_roc_setup()