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. Zeebstatic 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. Zeebstatic 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. Zeebstatic 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