Lines Matching refs:ar

36 	struct ath10k *ar = arvif->ar;  in ath10k_wow_vif_cleanup()  local
40 ret = ath10k_wmi_wow_add_wakeup_event(ar, arvif->vdev_id, i, 0); in ath10k_wow_vif_cleanup()
42 ath10k_warn(ar, "failed to issue wow wakeup for event %s on vdev %i: %d\n", in ath10k_wow_vif_cleanup()
48 for (i = 0; i < ar->wow.max_num_patterns; i++) { in ath10k_wow_vif_cleanup()
49 ret = ath10k_wmi_wow_del_pattern(ar, arvif->vdev_id, i); in ath10k_wow_vif_cleanup()
51 ath10k_warn(ar, "failed to delete wow pattern %d for vdev %i: %d\n", in ath10k_wow_vif_cleanup()
60 static int ath10k_wow_cleanup(struct ath10k *ar) in ath10k_wow_cleanup() argument
65 lockdep_assert_held(&ar->conf_mutex); in ath10k_wow_cleanup()
67 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_wow_cleanup()
70 ath10k_warn(ar, "failed to clean wow wakeups on vdev %i: %d\n", in ath10k_wow_cleanup()
84 struct ath10k *ar = arvif->ar; in ath10k_vif_wow_set_wakeups() local
129 ret = ath10k_wmi_wow_add_pattern(ar, arvif->vdev_id, in ath10k_vif_wow_set_wakeups()
136 ath10k_warn(ar, "failed to add pattern %i to vdev %i: %d\n", in ath10k_vif_wow_set_wakeups()
149 ret = ath10k_wmi_wow_add_wakeup_event(ar, arvif->vdev_id, i, 1); in ath10k_vif_wow_set_wakeups()
151 ath10k_warn(ar, "failed to enable wakeup event %s on vdev %i: %d\n", in ath10k_vif_wow_set_wakeups()
160 static int ath10k_wow_set_wakeups(struct ath10k *ar, in ath10k_wow_set_wakeups() argument
166 lockdep_assert_held(&ar->conf_mutex); in ath10k_wow_set_wakeups()
168 list_for_each_entry(arvif, &ar->arvifs, list) { in ath10k_wow_set_wakeups()
171 ath10k_warn(ar, "failed to set wow wakeups on vdev %i: %d\n", in ath10k_wow_set_wakeups()
180 static int ath10k_wow_enable(struct ath10k *ar) in ath10k_wow_enable() argument
184 lockdep_assert_held(&ar->conf_mutex); in ath10k_wow_enable()
186 reinit_completion(&ar->target_suspend); in ath10k_wow_enable()
188 ret = ath10k_wmi_wow_enable(ar); in ath10k_wow_enable()
190 ath10k_warn(ar, "failed to issue wow enable: %d\n", ret); in ath10k_wow_enable()
194 ret = wait_for_completion_timeout(&ar->target_suspend, 3 * HZ); in ath10k_wow_enable()
196 ath10k_warn(ar, "timed out while waiting for suspend completion\n"); in ath10k_wow_enable()
203 static int ath10k_wow_wakeup(struct ath10k *ar) in ath10k_wow_wakeup() argument
207 lockdep_assert_held(&ar->conf_mutex); in ath10k_wow_wakeup()
209 reinit_completion(&ar->wow.wakeup_completed); in ath10k_wow_wakeup()
211 ret = ath10k_wmi_wow_host_wakeup_ind(ar); in ath10k_wow_wakeup()
213 ath10k_warn(ar, "failed to send wow wakeup indication: %d\n", in ath10k_wow_wakeup()
218 ret = wait_for_completion_timeout(&ar->wow.wakeup_completed, 3 * HZ); in ath10k_wow_wakeup()
220 ath10k_warn(ar, "timed out while waiting for wow wakeup completion\n"); in ath10k_wow_wakeup()
230 struct ath10k *ar = hw->priv; in ath10k_wow_op_suspend() local
233 mutex_lock(&ar->conf_mutex); in ath10k_wow_op_suspend()
236 ar->fw_features))) { in ath10k_wow_op_suspend()
241 ret = ath10k_wow_cleanup(ar); in ath10k_wow_op_suspend()
243 ath10k_warn(ar, "failed to clear wow wakeup events: %d\n", in ath10k_wow_op_suspend()
248 ret = ath10k_wow_set_wakeups(ar, wowlan); in ath10k_wow_op_suspend()
250 ath10k_warn(ar, "failed to set wow wakeup events: %d\n", in ath10k_wow_op_suspend()
255 ret = ath10k_wow_enable(ar); in ath10k_wow_op_suspend()
257 ath10k_warn(ar, "failed to start wow: %d\n", ret); in ath10k_wow_op_suspend()
261 ret = ath10k_hif_suspend(ar); in ath10k_wow_op_suspend()
263 ath10k_warn(ar, "failed to suspend hif: %d\n", ret); in ath10k_wow_op_suspend()
270 ath10k_wow_wakeup(ar); in ath10k_wow_op_suspend()
273 ath10k_wow_cleanup(ar); in ath10k_wow_op_suspend()
276 mutex_unlock(&ar->conf_mutex); in ath10k_wow_op_suspend()
282 struct ath10k *ar = hw->priv; in ath10k_wow_op_resume() local
285 mutex_lock(&ar->conf_mutex); in ath10k_wow_op_resume()
288 ar->fw_features))) { in ath10k_wow_op_resume()
293 ret = ath10k_hif_resume(ar); in ath10k_wow_op_resume()
295 ath10k_warn(ar, "failed to resume hif: %d\n", ret); in ath10k_wow_op_resume()
299 ret = ath10k_wow_wakeup(ar); in ath10k_wow_op_resume()
301 ath10k_warn(ar, "failed to wakeup from wow: %d\n", ret); in ath10k_wow_op_resume()
305 switch (ar->state) { in ath10k_wow_op_resume()
307 ar->state = ATH10K_STATE_RESTARTING; in ath10k_wow_op_resume()
315 ath10k_warn(ar, "encountered unexpected device state %d on resume, cannot recover\n", in ath10k_wow_op_resume()
316 ar->state); in ath10k_wow_op_resume()
322 mutex_unlock(&ar->conf_mutex); in ath10k_wow_op_resume()
326 int ath10k_wow_init(struct ath10k *ar) in ath10k_wow_init() argument
328 if (!test_bit(ATH10K_FW_FEATURE_WOWLAN_SUPPORT, ar->fw_features)) in ath10k_wow_init()
331 if (WARN_ON(!test_bit(WMI_SERVICE_WOW, ar->wmi.svc_map))) in ath10k_wow_init()
334 ar->wow.wowlan_support = ath10k_wowlan_support; in ath10k_wow_init()
335 ar->wow.wowlan_support.n_patterns = ar->wow.max_num_patterns; in ath10k_wow_init()
336 ar->hw->wiphy->wowlan = &ar->wow.wowlan_support; in ath10k_wow_init()