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