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