1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2/* Copyright(c) 2019-2020 Realtek Corporation 3 */ 4 5#ifndef __RTW89_PS_H_ 6#define __RTW89_PS_H_ 7 8void rtw89_enter_lps(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif, 9 bool ps_mode); 10void rtw89_leave_lps(struct rtw89_dev *rtwdev); 11void __rtw89_leave_ps_mode(struct rtw89_dev *rtwdev); 12void __rtw89_enter_ps_mode(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif); 13void rtw89_leave_ps_mode(struct rtw89_dev *rtwdev); 14void rtw89_enter_ips(struct rtw89_dev *rtwdev); 15void rtw89_leave_ips(struct rtw89_dev *rtwdev); 16void rtw89_set_coex_ctrl_lps(struct rtw89_dev *rtwdev, bool btc_ctrl); 17void rtw89_process_p2p_ps(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif); 18void rtw89_recalc_lps(struct rtw89_dev *rtwdev); 19void rtw89_p2p_noa_renew(struct rtw89_vif *rtwvif); 20void rtw89_p2p_noa_append(struct rtw89_vif *rtwvif, 21 const struct ieee80211_p2p_noa_desc *desc); 22u8 rtw89_p2p_noa_fetch(struct rtw89_vif *rtwvif, void **data); 23 24static inline void rtw89_leave_ips_by_hwflags(struct rtw89_dev *rtwdev) 25{ 26 struct ieee80211_hw *hw = rtwdev->hw; 27 28 if (hw->conf.flags & IEEE80211_CONF_IDLE) 29 rtw89_leave_ips(rtwdev); 30} 31 32static inline void rtw89_enter_ips_by_hwflags(struct rtw89_dev *rtwdev) 33{ 34 struct ieee80211_hw *hw = rtwdev->hw; 35 36 /* prevent entering IPS after ROC, but it is scanning */ 37 if (rtwdev->scanning) 38 return; 39 40 if (hw->conf.flags & IEEE80211_CONF_IDLE) 41 rtw89_enter_ips(rtwdev); 42} 43 44#endif 45