Lines Matching +full:local +full:- +full:timers
1 // SPDX-License-Identifier: GPL-2.0
4 * Copyright (C) 2020-2021, 2023-2024 Intel Corporation
11 #include "driver-ops.h"
14 static void ieee80211_sched_scan_cancel(struct ieee80211_local *local) in ieee80211_sched_scan_cancel() argument
16 if (ieee80211_request_sched_scan_stop(local)) in ieee80211_sched_scan_cancel()
18 cfg80211_sched_scan_stopped_locked(local->hw.wiphy, 0); in ieee80211_sched_scan_cancel()
23 struct ieee80211_local *local = hw_to_local(hw); in __ieee80211_suspend() local
27 if (!local->open_count) in __ieee80211_suspend()
30 local->suspending = true; in __ieee80211_suspend()
33 ieee80211_scan_cancel(local); in __ieee80211_suspend()
35 ieee80211_dfs_cac_cancel(local, NULL); in __ieee80211_suspend()
37 ieee80211_roc_purge(local, NULL); in __ieee80211_suspend()
39 ieee80211_del_virtual_monitor(local); in __ieee80211_suspend()
42 !(wowlan && wowlan->any)) { in __ieee80211_suspend()
43 lockdep_assert_wiphy(local->hw.wiphy); in __ieee80211_suspend()
44 list_for_each_entry(sta, &local->sta_list, list) { in __ieee80211_suspend()
52 if (!(wowlan && wowlan->any)) in __ieee80211_suspend()
53 ieee80211_sched_scan_cancel(local); in __ieee80211_suspend()
63 ieee80211_flush_queues(local, NULL, true); in __ieee80211_suspend()
65 local->quiescing = true; in __ieee80211_suspend()
66 /* make quiescing visible to timers everywhere */ in __ieee80211_suspend()
69 flush_workqueue(local->workqueue); in __ieee80211_suspend()
71 /* Don't try to run timers while suspended. */ in __ieee80211_suspend()
72 del_timer_sync(&local->sta_cleanup); in __ieee80211_suspend()
78 wiphy_work_cancel(local->hw.wiphy, &local->dynamic_ps_enable_work); in __ieee80211_suspend()
79 del_timer_sync(&local->dynamic_ps_timer); in __ieee80211_suspend()
81 local->wowlan = wowlan; in __ieee80211_suspend()
82 if (local->wowlan) { in __ieee80211_suspend()
90 * Thus, clean up in-progress auth/assoc first. in __ieee80211_suspend()
92 list_for_each_entry(sdata, &local->interfaces, list) { in __ieee80211_suspend()
95 if (sdata->vif.type != NL80211_IFTYPE_STATION) in __ieee80211_suspend()
101 * of power-save due to TX and during suspend in __ieee80211_suspend()
107 if (sdata->u.mgd.associated && in __ieee80211_suspend()
108 sdata->u.mgd.powersave && in __ieee80211_suspend()
109 !(local->hw.conf.flags & IEEE80211_CONF_PS)) { in __ieee80211_suspend()
110 local->hw.conf.flags |= IEEE80211_CONF_PS; in __ieee80211_suspend()
111 ieee80211_hw_config(local, in __ieee80211_suspend()
116 err = drv_suspend(local, wowlan); in __ieee80211_suspend()
118 local->quiescing = false; in __ieee80211_suspend()
119 local->wowlan = false; in __ieee80211_suspend()
121 lockdep_assert_wiphy(local->hw.wiphy); in __ieee80211_suspend()
123 &local->sta_list, list) { in __ieee80211_suspend()
148 list_for_each_entry(sdata, &local->interfaces, list) { in __ieee80211_suspend()
151 switch (sdata->vif.type) { in __ieee80211_suspend()
162 wiphy_delayed_work_flush(local->hw.wiphy, in __ieee80211_suspend()
163 &sdata->dec_tailroom_needed_wk); in __ieee80211_suspend()
164 drv_remove_interface(local, sdata); in __ieee80211_suspend()
171 WARN_ON(!list_empty(&local->chanctx_list)); in __ieee80211_suspend()
173 /* stop hardware - this must stop RX */ in __ieee80211_suspend()
174 ieee80211_stop_device(local, true); in __ieee80211_suspend()
177 local->suspended = true; in __ieee80211_suspend()
180 local->quiescing = false; in __ieee80211_suspend()
181 local->suspending = false; in __ieee80211_suspend()
198 cfg80211_report_wowlan_wakeup(&sdata->wdev, wakeup, gfp); in ieee80211_report_wowlan_wakeup()