xref: /wlan-dirver/qca-wifi-host-cmn/wmi/inc/wmi_unified_twt_api.h (revision 97f44cd39e4ff816eaa1710279d28cf6b9e65ad9)
1 
2 /*
3  * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 /**
20  * DOC: Implement API's specific to TWT component.
21  */
22 
23 #ifndef _WMI_UNIFIED_TWT_API_H_
24 #define _WMI_UNIFIED_TWT_API_H_
25 
26 #include "wmi_unified_twt_param.h"
27 
28 
29 /**
30  * wmi_unified_twt_enable_cmd() - Send WMI command to Enable TWT
31  * @wmi_handle: wmi handle
32  * @params: Parameters to be configured
33  *
34  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
35  */
36 QDF_STATUS
37 wmi_unified_twt_enable_cmd(wmi_unified_t wmi_handle,
38 			   struct wmi_twt_enable_param *params);
39 
40 /**
41  * wmi_unified_twt_disable_cmd() - Send WMI command to disable TWT
42  * @wmi_handle: wmi handle
43  * @params: Parameters to be configured
44  *
45  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
46  */
47 QDF_STATUS
48 wmi_unified_twt_disable_cmd(wmi_unified_t wmi_handle,
49 			    struct wmi_twt_disable_param *params);
50 
51 /**
52  * wmi_unified_twt_add_dialog_cmd() - Send WMI command to add TWT dialog
53  * @wmi_handle: wmi handle
54  * @params: Parameters to be configured
55  *
56  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
57  */
58 QDF_STATUS
59 wmi_unified_twt_add_dialog_cmd(wmi_unified_t wmi_handle,
60 			       struct wmi_twt_add_dialog_param *params);
61 
62 /**
63  * wmi_unified_twt_del_dialog_cmd() - Send WMI command to delete TWT dialog
64  * @wmi_handle: wmi handle
65  * @params: Parameters to be configured
66  *
67  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
68  */
69 QDF_STATUS
70 wmi_unified_twt_del_dialog_cmd(wmi_unified_t wmi_handle,
71 			       struct wmi_twt_del_dialog_param *params);
72 
73 /**
74  * wmi_unified_twt_pause_dialog_cmd() - Send WMI command to pause TWT dialog
75  * @wmi_handle: wmi handle
76  * @params: Parameters to be configured
77  *
78  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
79  */
80 QDF_STATUS
81 wmi_unified_twt_pause_dialog_cmd(wmi_unified_t wmi_handle,
82 				 struct wmi_twt_pause_dialog_cmd_param *params);
83 
84 /**
85  * wmi_unified_twt_resume_dialog_cmd() - Send WMI command to resume TWT dialog
86  * @wmi_handle: wmi handle
87  * @params: Parameters to be configured
88  *
89  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
90  */
91 QDF_STATUS wmi_unified_twt_resume_dialog_cmd(
92 			wmi_unified_t wmi_handle,
93 			struct wmi_twt_resume_dialog_cmd_param *params);
94 
95 #ifdef WLAN_SUPPORT_BCAST_TWT
96 /**
97  * wmi_unified_twt_btwt_invite_sta_cmd() - Send WMI command for bTWT sta
98  *                               invitation
99  * @wmi_handle: wmi handle
100  * @params: Parameters to be configured
101  *
102  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
103  */
104 QDF_STATUS wmi_unified_twt_btwt_invite_sta_cmd(
105 			wmi_unified_t wmi_handle,
106 			struct wmi_twt_btwt_invite_sta_cmd_param *params);
107 
108 /**
109  * wmi_unified_twt_btwt_remove_sta_cmd() - Send WMI command for bTWT sta kickoff
110  * @wmi_handle: wmi handle
111  * @params: Parameters to be configured
112  *
113  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
114  */
115 QDF_STATUS wmi_unified_twt_btwt_remove_sta_cmd(
116 			wmi_unified_t wmi_handle,
117 			struct wmi_twt_btwt_remove_sta_cmd_param *params);
118 #endif
119 
120 /**
121  * wmi_extract_twt_enable_comp_event() - Extract WMI event params for TWT enable
122  *                               completion event
123  * @wmi_handle: wmi handle
124  * @evt_buf: Pointer event buffer
125  * @params: Parameters to extract
126  *
127  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
128  */
129 QDF_STATUS wmi_extract_twt_enable_comp_event(
130 		wmi_unified_t wmi_handle,
131 		uint8_t *evt_buf,
132 		struct wmi_twt_enable_complete_event_param *params);
133 
134 /**
135  * wmi_extract_twt_disable_comp_event() - Extract WMI event params for TWT
136  *                               disable completion event
137  * @wmi_handle: wmi handle
138  * @evt_buf: Pointer event buffer
139  * @params: Parameters to extract
140  *
141  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
142  */
143 QDF_STATUS wmi_extract_twt_disable_comp_event(
144 		wmi_unified_t wmi_handle,
145 		uint8_t *evt_buf,
146 		struct wmi_twt_disable_complete_event *params);
147 
148 /**
149  * wmi_extract_twt_add_dialog_comp_event() - Extract WMI event params for TWT
150  *                               add dialog completion event
151  * @wmi_hdl: wmi handle
152  * @evt_buf: Pointer event buffer
153  * @params: Parameters to extract
154  *
155  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
156  */
157 QDF_STATUS wmi_extract_twt_add_dialog_comp_event(
158 		wmi_unified_t wmi_handle,
159 		uint8_t *evt_buf,
160 		struct wmi_twt_add_dialog_complete_event_param *params);
161 
162 /**
163  * wmi_extract_twt_add_dialog_comp_additional_params() - Extracts additional
164  * twt parameters, as part of add dialog completion event
165  * @wmi_hdl: wmi handle
166  * @evt_buf: Pointer event buffer
167  * @evt_buf_len: length of the add dialog event buffer
168  * @idx: index of num_twt_params to extract
169  * @additional_params: additional parameters to extract
170  *
171  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
172  */
173 QDF_STATUS wmi_extract_twt_add_dialog_comp_additional_params(
174 		wmi_unified_t wmi_handle, uint8_t *evt_buf,
175 		uint32_t evt_buf_len, uint32_t idx,
176 		struct wmi_twt_add_dialog_additional_params *additional_params);
177 
178 /**
179  * wmi_extract_twt_del_dialog_comp_event() - Extract WMI event params for TWT
180  *                               delete dialog completion event
181  * @wmi_hdl: wmi handle
182  * @evt_buf: Pointer event buffer
183  * @params: Parameters to extract
184  *
185  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
186  */
187 QDF_STATUS wmi_extract_twt_del_dialog_comp_event(
188 		wmi_unified_t wmi_handle,
189 		uint8_t *evt_buf,
190 		struct wmi_twt_del_dialog_complete_event_param *params);
191 
192 /**
193  * wmi_extract_twt_pause_dialog_comp_event() - Extract WMI event params for TWT
194  *                               pause dialog completion event
195  * @wmi_handle: wmi handle
196  * @evt_buf: Pointer event buffer
197  * @params: Parameters to extract
198  *
199  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
200  */
201 QDF_STATUS wmi_extract_twt_pause_dialog_comp_event(
202 		wmi_unified_t wmi_handle,
203 		uint8_t *evt_buf,
204 		struct wmi_twt_pause_dialog_complete_event_param *params);
205 
206 /**
207  * wmi_extract_twt_resume_dialog_comp_event() - Extract WMI event params for TWT
208  *                               resume dialog completion event
209  * @wmi_handle: wmi handle
210  * @evt_buf: Pointer event buffer
211  * @params: Parameters to extract
212  *
213  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
214  */
215 QDF_STATUS wmi_extract_twt_resume_dialog_comp_event(
216 		wmi_unified_t wmi_handle,
217 		uint8_t *evt_buf,
218 		struct wmi_twt_resume_dialog_complete_event_param *params);
219 
220 #ifdef WLAN_SUPPORT_BCAST_TWT
221 /**
222  * wmi_extract_twt_btwt_invite_sta_comp_event() - Extract WMI event params for
223  *                          BTWT sta invitation completion event
224  * @wmi_handle: wmi handle
225  * @evt_buf: Pointer event buffer
226  * @params: Parameters to extract
227  *
228  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
229  */
230 QDF_STATUS wmi_extract_twt_btwt_invite_sta_comp_event(
231 		wmi_unified_t wmi_handle,
232 		uint8_t *evt_buf,
233 		struct wmi_twt_btwt_invite_sta_complete_event_param *params);
234 
235 /**
236  * wmi_extract_twt_btwt_remove_sta_comp_event() - Extract WMI event params for
237  *                          BTWT sta kickoff completion event
238  * @wmi_handle: wmi handle
239  * @evt_buf: Pointer event buffer
240  * @params: Parameters to extract
241  *
242  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
243  */
244 QDF_STATUS wmi_extract_twt_btwt_remove_sta_comp_event(
245 		wmi_unified_t wmi_handle,
246 		uint8_t *evt_buf,
247 		struct wmi_twt_btwt_remove_sta_complete_event_param *params);
248 #endif
249 
250 /**
251  * wmi_extract_twt_session_stats_event() - Extract WMI event params for TWT
252  *                               session stats event
253  * @wmi_handle: wmi handle
254  * @evt_buf: Pointer event buffer
255  * @params: Parameters to extract
256  *
257  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
258  */
259 QDF_STATUS wmi_extract_twt_session_stats_event(
260 		wmi_unified_t wmi_handle,
261 		uint8_t *evt_buf,
262 		struct wmi_twt_session_stats_event_param *params);
263 
264 /**
265  * wmi_extract_twt_session_stats_data() - Extract one TWT session from TWT
266  *                               session stats event
267  * @wmi_handle: wmi handle
268  * @evt_buf: Pointer event buffer
269  * @params: Parameters to extract
270  * @session: Session struct to save one TWT session
271  * @idx: TWT session index
272  *
273  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
274  */
275 QDF_STATUS wmi_extract_twt_session_stats_data(
276 		wmi_unified_t wmi_handle,
277 		uint8_t *evt_buf,
278 		struct wmi_twt_session_stats_event_param *params,
279 		struct wmi_host_twt_session_stats_info *session,
280 		uint32_t idx);
281 
282 #ifdef WLAN_SUPPORT_TWT
283 void wmi_twt_attach_tlv(struct wmi_unified *wmi_handle);
284 #else
285 static void wmi_twt_attach_tlv(struct wmi_unified *wmi_handle)
286 {
287 	return;
288 }
289 #endif
290 
291 #endif /* _WMI_UNIFIED_TWT_API_H_ */
292