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  
ath11k_wow_init(struct ath11k * ar)40  static inline int ath11k_wow_init(struct ath11k *ar)
41  {
42  	return 0;
43  }
44  
ath11k_wow_enable(struct ath11k_base * ab)45  static inline int ath11k_wow_enable(struct ath11k_base *ab)
46  {
47  	return 0;
48  }
49  
ath11k_wow_wakeup(struct ath11k_base * ab)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