162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 262306a36Sopenharmony_ci/* Copyright(c) 2018-2019 Realtek Corporation 362306a36Sopenharmony_ci */ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#ifndef __RTW_WOW_H__ 662306a36Sopenharmony_ci#define __RTW_WOW_H__ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#define PNO_CHECK_BYTE 4 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cienum rtw_wow_pattern_type { 1162306a36Sopenharmony_ci RTW_PATTERN_BROADCAST = 0, 1262306a36Sopenharmony_ci RTW_PATTERN_MULTICAST, 1362306a36Sopenharmony_ci RTW_PATTERN_UNICAST, 1462306a36Sopenharmony_ci RTW_PATTERN_VALID, 1562306a36Sopenharmony_ci RTW_PATTERN_INVALID, 1662306a36Sopenharmony_ci}; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cienum rtw_wake_reason { 1962306a36Sopenharmony_ci RTW_WOW_RSN_RX_PTK_REKEY = 0x1, 2062306a36Sopenharmony_ci RTW_WOW_RSN_RX_GTK_REKEY = 0x2, 2162306a36Sopenharmony_ci RTW_WOW_RSN_RX_DEAUTH = 0x8, 2262306a36Sopenharmony_ci RTW_WOW_RSN_DISCONNECT = 0x10, 2362306a36Sopenharmony_ci RTW_WOW_RSN_RX_MAGIC_PKT = 0x21, 2462306a36Sopenharmony_ci RTW_WOW_RSN_RX_PATTERN_MATCH = 0x23, 2562306a36Sopenharmony_ci RTW_WOW_RSN_RX_NLO = 0x55, 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_cistruct rtw_fw_media_status_iter_data { 2962306a36Sopenharmony_ci struct rtw_dev *rtwdev; 3062306a36Sopenharmony_ci u8 connect; 3162306a36Sopenharmony_ci}; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_cistruct rtw_fw_key_type_iter_data { 3462306a36Sopenharmony_ci struct rtw_dev *rtwdev; 3562306a36Sopenharmony_ci u8 group_key_type; 3662306a36Sopenharmony_ci u8 pairwise_key_type; 3762306a36Sopenharmony_ci}; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_cistatic inline bool rtw_wow_mgd_linked(struct rtw_dev *rtwdev) 4062306a36Sopenharmony_ci{ 4162306a36Sopenharmony_ci struct ieee80211_vif *wow_vif = rtwdev->wow.wow_vif; 4262306a36Sopenharmony_ci struct rtw_vif *rtwvif = (struct rtw_vif *)wow_vif->drv_priv; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci return (rtwvif->net_type == RTW_NET_MGD_LINKED); 4562306a36Sopenharmony_ci} 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_cistatic inline bool rtw_wow_no_link(struct rtw_dev *rtwdev) 4862306a36Sopenharmony_ci{ 4962306a36Sopenharmony_ci struct ieee80211_vif *wow_vif = rtwdev->wow.wow_vif; 5062306a36Sopenharmony_ci struct rtw_vif *rtwvif = (struct rtw_vif *)wow_vif->drv_priv; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci return (rtwvif->net_type == RTW_NET_NO_LINK); 5362306a36Sopenharmony_ci} 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciint rtw_wow_suspend(struct rtw_dev *rtwdev, struct cfg80211_wowlan *wowlan); 5662306a36Sopenharmony_ciint rtw_wow_resume(struct rtw_dev *rtwdev); 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci#endif 59