xref: /linux/drivers/net/wireless/ath/ath11k/wow.h (revision 8e07e0e3964ca4e23ce7b68e2096fe660a888942)
1 /* SPDX-License-Identifier: BSD-3-Clause-Clear */
2 /*
3  * Copyright (c) 2020 The Linux Foundation. All rights reserved.
4  */
5 
6 #ifndef _WOW_H_
7 #define _WOW_H_
8 
9 struct ath11k_wow {
10 	u32 max_num_patterns;
11 	struct completion wakeup_completed;
12 	struct wiphy_wowlan_support wowlan_support;
13 };
14 
15 struct rfc1042_hdr {
16 	u8 llc_dsap;
17 	u8 llc_ssap;
18 	u8 llc_ctrl;
19 	u8 snap_oui[3];
20 	__be16 snap_type;
21 } __packed;
22 
23 #define ATH11K_WOW_RETRY_NUM		3
24 #define ATH11K_WOW_RETRY_WAIT_MS	200
25 #define ATH11K_WOW_PATTERNS		22
26 
27 #ifdef CONFIG_PM
28 
29 int ath11k_wow_init(struct ath11k *ar);
30 int ath11k_wow_op_suspend(struct ieee80211_hw *hw,
31 			  struct cfg80211_wowlan *wowlan);
32 int ath11k_wow_op_resume(struct ieee80211_hw *hw);
33 void ath11k_wow_op_set_wakeup(struct ieee80211_hw *hw, bool enabled);
34 int ath11k_wow_enable(struct ath11k_base *ab);
35 int ath11k_wow_wakeup(struct ath11k_base *ab);
36 
37 #else
38 
39 static inline int ath11k_wow_init(struct ath11k *ar)
40 {
41 	return 0;
42 }
43 
44 static inline int ath11k_wow_enable(struct ath11k_base *ab)
45 {
46 	return 0;
47 }
48 
49 static inline int ath11k_wow_wakeup(struct ath11k_base *ab)
50 {
51 	return 0;
52 }
53 
54 #endif /* CONFIG_PM */
55 #endif /* _WOW_H_ */
56