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

source code of linux/drivers/net/wireless/realtek/rtw89/ps.h