hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/******************************************************************************
 *
 * 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_ */