Files
linux-nv-oot/drivers/net/wireless/realtek/rtl8852ce/include/rtw_twt.h
Shobek Attupurath 7dd632ff96 rtl8852ce: Add base driver v1.19.16.1-0-g1fe335ba1.20240815_PC
- support Android-14
- support Linux kernel 6.9
- support 6G regulation
- support Thermal protection
- support TX shortcut to reduce CPU loading
- fix some coverity issues
- Use RTW regulatory version rtk_8852CE_M.2_2230-67-52
- default enable con-current and MCC

Bug 4667769
Bug 4667981

Change-Id: Iee069ecdd1f00a0b78285d0a4ef5778ed9ace478
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3195601
Tested-by: Shobek Attupurath <sattupurath@nvidia.com>
Reviewed-by: Revanth Kumar Uppala <ruppala@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
2025-07-24 10:19:08 +00:00

107 lines
4.6 KiB
C

/******************************************************************************
*
* Copyright(c) 2007 - 2022 Realtek Corporation.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*****************************************************************************/
#ifndef __RTW_TWT_H_
#define __RTW_TWT_H_
#ifdef CONFIG_80211AX_HE
#ifdef CONFIG_TWT
#define TWT_REQ_SUPP(twt_cap) (twt_cap & RTW_PHL_TWT_REQ_SUP)
#define TWT_RSP_SUPP(twt_cap) (twt_cap & RTW_PHL_TWT_RSP_SUP)
#define TWT_NEGO_TYPE(twt_ele) (twt_ele)->twt_ctrl.nego_type
#define TWT_NEGO_TYPE_I(twt_ele) (((twt_ele)->twt_ctrl.nego_type == RTW_PHL_INDIV_TWT) \
|| ((twt_ele)->twt_ctrl.nego_type == RTW_PHL_WAKE_TBTT_INR))
#define TWT_NEGO_TYPE_B(twt_ele) (((twt_ele)->twt_ctrl.nego_type == RTW_PHL_BCAST_TWT) \
|| ((twt_ele)->twt_ctrl.nego_type == RTW_PHL_MANAGE_BCAST_TWT))
#define TWT_REQER_I(twt_ele) (twt_ele)->info.i_twt_para_set.req_type.twt_request
#define TWT_REQER_B(twt_ele, bidx) (twt_ele)->info.b_twt_para_set[bidx].req_type.twt_request
#define TWT_SETUP_CMD_I(twt_ele) (twt_ele)->info.i_twt_para_set.req_type.twt_setup_cmd
#define TWT_SETUP_CMD_B(twt_ele, bidx) (twt_ele)->info.b_twt_para_set[bidx].req_type.twt_setup_cmd
enum rtw_core_twt_cmd_id {
CORE_TWT_CMD_ISETUP,
CORE_TWT_CMD_BSETUP,
CORE_TWT_CMD_ITEARDOWN,
CORE_TWT_CMD_BTEARDOWN,
CORE_TWT_CMD_SET_INFO,
CORE_TWT_CMD_ON_ISETUP,
CORE_TWT_CMD_ON_BSETUP,
CORE_TWT_CMD_ON_TEARDOWN
};
struct rtw_core_twt_cmd_obj {
_adapter *padapter;
struct _ADAPTER_LINK *padapter_link;
struct sta_info *psta;
enum rtw_core_twt_cmd_id cmd_id;
void *pparm;
u32 parm_sz;
bool pparm_need_free;
};
struct rtw_core_twt_set_info {
bool suspend;
u32 dur;
};
u8 rtw_core_twt_init(_adapter *padapter);
u8 rtw_core_twt_reset(_adapter *padapter, struct _ADAPTER_LINK *padapter_link);
u8 rtw_core_twt_hdl(_adapter *padapter, u8 *pbuf);
u8 rtw_core_twt_cmd(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
struct sta_info *psta, enum rtw_core_twt_cmd_id cmd_id,
void *pparm, u32 pparm_sz, bool parm_need_free);
u8 rtw_core_twt_set_ctrl(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
u32 ndp_pag_ind, u32 rsp_pm_mode, u32 nego_type,
u32 twt_info_dis, u32 wk_dur_unit);
u8 rtw_core_twt_set_ireq(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
u32 request, u32 setup_cmd, u32 trigger, u32 implicit,
u32 flow_type, u32 wk_intvl_exp, u32 protection);
u8 rtw_core_twt_set_isetup(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
struct sta_info *psta, u32 target_wk_time,
u32 nom_min_wk_dur, u32 wk_int_mantissa, u32 twt_chnl);
u8 rtw_core_twt_set_iteardown(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
struct sta_info *psta, u32 nego_type,
u32 flow_id, u32 trdwn_all);
u8 rtw_core_twt_set_breq(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
u32 request, u32 setup_cmd, u32 trigger, u32 lst_bcparm_set,
u32 flow_type, u32 btwt_rcmd, u32 wk_intvl_exp);
u8 rtw_core_twt_set_bsetup(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
struct sta_info *psta, u32 target_wk_time,
u32 nom_min_wk_dur, u32 wk_int_mantissa, u32 btwt_id,
u32 btwt_prstnc);
u8 rtw_core_twt_set_bteardown(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
struct sta_info *psta, u32 nego_type,
u32 btwt_id, u32 trdwn_all);
u8 rtw_core_twt_set_info(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
struct sta_info *psta, bool suspend, u32 dur);
u8 rtw_issue_twt_setup(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
u8 *da, struct rtw_phl_twt_setup_info *twt_setup_info);
u8 rtw_issue_twt_teardown(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
u8 *da, struct rtw_phl_twt_flow_field *twt_flow_info,
int try_cnt, int wait_ms);
u8 rtw_issue_twt_teardown_cmn(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
u8 *da, struct rtw_phl_twt_element *twt_ele,
int try_cnt, int wait_ms, bool individual);
u8 rtw_issue_twt_info(_adapter *padapter, struct _ADAPTER_LINK *padapter_link,
u8 *da, struct rtw_phl_twt_info_f *twt_info);
u8 rtw_core_twt_on_action(_adapter *padapter, u8 *raddr, u8 *pframe_body, u32 frame_len);
#endif /*CONFIG_TWT */
#endif /* CONFIG_80211AX_HE */
#endif /* __RTW_TWT_H_ */