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