1 /*
2  * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. 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 #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
28 #include <wlan_twt_public_structs.h>
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 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 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 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 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 twt_pause_dialog_cmd_param *params);
83 
84 /**
85  * wmi_unified_twt_nudge_dialog_cmd() - Send WMI command to nudge 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
92 wmi_unified_twt_nudge_dialog_cmd(wmi_unified_t wmi_handle,
93 				 struct twt_nudge_dialog_cmd_param *params);
94 
95 /**
96  * wmi_unified_twt_resume_dialog_cmd() - Send WMI command to resume TWT dialog
97  * @wmi_handle: wmi handle
98  * @params: Parameters to be configured
99  *
100  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
101  */
102 QDF_STATUS wmi_unified_twt_resume_dialog_cmd(
103 			wmi_unified_t wmi_handle,
104 			struct twt_resume_dialog_cmd_param *params);
105 
106 #ifdef WLAN_SUPPORT_BCAST_TWT
107 /**
108  * wmi_unified_twt_btwt_invite_sta_cmd() - Send WMI command for bTWT sta
109  *                               invitation
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_invite_sta_cmd(
116 			wmi_unified_t wmi_handle,
117 			struct twt_btwt_invite_sta_cmd_param *params);
118 
119 /**
120  * wmi_unified_twt_btwt_remove_sta_cmd() - Send WMI command for bTWT sta kickoff
121  * @wmi_handle: wmi handle
122  * @params: Parameters to be configured
123  *
124  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
125  */
126 QDF_STATUS wmi_unified_twt_btwt_remove_sta_cmd(
127 			wmi_unified_t wmi_handle,
128 			struct twt_btwt_remove_sta_cmd_param *params);
129 #endif
130 
131 /**
132  * wmi_extract_twt_enable_comp_event() - Extract WMI event params for TWT enable
133  *                               completion event
134  * @wmi_handle: wmi handle
135  * @evt_buf: Pointer event buffer
136  * @params: Parameters to extract
137  *
138  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
139  */
140 QDF_STATUS wmi_extract_twt_enable_comp_event(
141 		wmi_unified_t wmi_handle,
142 		uint8_t *evt_buf,
143 		struct twt_enable_complete_event_param *params);
144 
145 /**
146  * wmi_extract_twt_disable_comp_event() - Extract WMI event params for TWT
147  *                               disable completion event
148  * @wmi_handle: wmi handle
149  * @evt_buf: Pointer event buffer
150  * @params: Parameters to extract
151  *
152  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
153  */
154 QDF_STATUS wmi_extract_twt_disable_comp_event(
155 		wmi_unified_t wmi_handle,
156 		uint8_t *evt_buf,
157 		struct twt_disable_complete_event_param *params);
158 
159 /**
160  * wmi_extract_twt_add_dialog_comp_event() - Extract WMI event params for TWT
161  *                               add dialog completion event
162  * @wmi_handle: wmi handle
163  * @evt_buf: Pointer event buffer
164  * @params: Parameters to extract
165  *
166  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
167  */
168 QDF_STATUS wmi_extract_twt_add_dialog_comp_event(
169 		wmi_unified_t wmi_handle,
170 		uint8_t *evt_buf,
171 		struct twt_add_dialog_complete_event_param *params);
172 
173 /**
174  * wmi_extract_twt_add_dialog_comp_additional_params() - Extracts additional
175  * twt parameters, as part of add dialog completion event
176  * @wmi_handle: wmi handle
177  * @evt_buf: Pointer event buffer
178  * @evt_buf_len: length of the add dialog event buffer
179  * @idx: index of num_twt_params to extract
180  * @additional_params: additional parameters to extract
181  *
182  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
183  */
184 QDF_STATUS wmi_extract_twt_add_dialog_comp_additional_params(
185 		wmi_unified_t wmi_handle, uint8_t *evt_buf,
186 		uint32_t evt_buf_len, uint32_t idx,
187 		struct twt_add_dialog_additional_params *additional_params);
188 
189 /**
190  * wmi_extract_twt_del_dialog_comp_event() - Extract WMI event params for TWT
191  *                               delete dialog completion event
192  * @wmi_handle: wmi handle
193  * @evt_buf: Pointer event buffer
194  * @params: Parameters to extract
195  *
196  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
197  */
198 QDF_STATUS wmi_extract_twt_del_dialog_comp_event(
199 		wmi_unified_t wmi_handle,
200 		uint8_t *evt_buf,
201 		struct twt_del_dialog_complete_event_param *params);
202 
203 /**
204  * wmi_extract_twt_pause_dialog_comp_event() - Extract WMI event params for TWT
205  *                               pause dialog completion event
206  * @wmi_handle: wmi handle
207  * @evt_buf: Pointer event buffer
208  * @params: Parameters to extract
209  *
210  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
211  */
212 QDF_STATUS wmi_extract_twt_pause_dialog_comp_event(
213 		wmi_unified_t wmi_handle,
214 		uint8_t *evt_buf,
215 		struct twt_pause_dialog_complete_event_param *params);
216 
217 /**
218  * wmi_extract_twt_nudge_dialog_comp_event() - Extract WMI event params for TWT
219  *                               nudge dialog completion event
220  * @wmi_handle: wmi handle
221  * @evt_buf: Pointer event buffer
222  * @params: Parameters to extract
223  *
224  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
225  */
226 QDF_STATUS wmi_extract_twt_nudge_dialog_comp_event(
227 		wmi_unified_t wmi_handle,
228 		uint8_t *evt_buf,
229 		struct twt_nudge_dialog_complete_event_param *params);
230 
231 /**
232  * wmi_extract_twt_resume_dialog_comp_event() - Extract WMI event params for TWT
233  *                               resume dialog completion event
234  * @wmi_handle: wmi handle
235  * @evt_buf: Pointer event buffer
236  * @params: Parameters to extract
237  *
238  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
239  */
240 QDF_STATUS wmi_extract_twt_resume_dialog_comp_event(
241 		wmi_unified_t wmi_handle,
242 		uint8_t *evt_buf,
243 		struct twt_resume_dialog_complete_event_param *params);
244 
245 /**
246  * wmi_extract_twt_notify_event() - Extract WMI event params for TWT
247  *                                  notify event
248  * @wmi_handle: wmi handle
249  * @evt_buf: Pointer event buffer
250  * @params: Parameters to extract
251  *
252  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
253  */
254 QDF_STATUS wmi_extract_twt_notify_event(
255 		wmi_unified_t wmi_handle,
256 		uint8_t *evt_buf,
257 		struct twt_notify_event_param *params);
258 
259 #ifdef WLAN_SUPPORT_BCAST_TWT
260 /**
261  * wmi_extract_twt_btwt_invite_sta_comp_event() - Extract WMI event params for
262  *                          BTWT sta invitation completion event
263  * @wmi_handle: wmi handle
264  * @evt_buf: Pointer event buffer
265  * @params: Parameters to extract
266  *
267  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
268  */
269 QDF_STATUS wmi_extract_twt_btwt_invite_sta_comp_event(
270 		wmi_unified_t wmi_handle,
271 		uint8_t *evt_buf,
272 		struct twt_btwt_invite_sta_complete_event_param *params);
273 
274 /**
275  * wmi_extract_twt_btwt_remove_sta_comp_event() - Extract WMI event params for
276  *                          BTWT sta kickoff completion event
277  * @wmi_handle: wmi handle
278  * @evt_buf: Pointer event buffer
279  * @params: Parameters to extract
280  *
281  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
282  */
283 QDF_STATUS wmi_extract_twt_btwt_remove_sta_comp_event(
284 		wmi_unified_t wmi_handle,
285 		uint8_t *evt_buf,
286 		struct twt_btwt_remove_sta_complete_event_param *params);
287 #endif
288 
289 /**
290  * wmi_extract_twt_session_stats_event() - Extract WMI event params for TWT
291  *                               session stats event
292  * @wmi_handle: wmi handle
293  * @evt_buf: Pointer event buffer
294  * @params: Parameters to extract
295  *
296  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
297  */
298 QDF_STATUS wmi_extract_twt_session_stats_event(
299 		wmi_unified_t wmi_handle,
300 		uint8_t *evt_buf,
301 		struct twt_session_stats_event_param *params);
302 
303 /**
304  * wmi_extract_twt_session_stats_data() - Extract one TWT session from TWT
305  *                               session stats event
306  * @wmi_handle: wmi handle
307  * @evt_buf: Pointer event buffer
308  * @params: Parameters to extract
309  * @session: Session struct to save one TWT session
310  * @idx: TWT session index
311  *
312  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
313  */
314 QDF_STATUS wmi_extract_twt_session_stats_data(
315 		wmi_unified_t wmi_handle,
316 		uint8_t *evt_buf,
317 		struct twt_session_stats_event_param *params,
318 		struct twt_session_stats_info *session,
319 		uint32_t idx);
320 
321 void wmi_twt_attach_tlv(struct wmi_unified *wmi_handle);
322 
323 /**
324  * wmi_extract_twt_cap_service_ready_ext2: Extract TWT bitmap value
325  *                                         received through extended
326  *                                         service ready2 event
327  * @wmi_handle: WMI handle
328  * @evt_buf: Event buffer
329  * @params: Pointer to TWT bitmap param
330  *
331  * Return: QDF_STATUS_SUCCESS for success or error code
332  */
333 QDF_STATUS wmi_extract_twt_cap_service_ready_ext2(
334 			wmi_unified_t wmi_handle,
335 			uint8_t *evt_buf,
336 			struct wmi_twt_cap_bitmap_params *params);
337 
338 /**
339  * wmi_extract_twt_ack_comp_event() - Extract WMI event params for TWT ack event
340  *
341  * @wmi_handle: wmi handle
342  * @evt_buf: Pointer event buffer
343  * @param: Parameters to extract
344  *
345  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
346  */
347 QDF_STATUS wmi_extract_twt_ack_comp_event(
348 			wmi_unified_t wmi_handle,
349 			uint8_t *evt_buf,
350 			struct twt_ack_complete_event_param *param);
351 #elif defined(WLAN_SUPPORT_TWT)
352 /**
353  * wmi_unified_twt_enable_cmd() - Send WMI command to Enable TWT
354  * @wmi_handle: wmi handle
355  * @params: Parameters to be configured
356  *
357  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
358  */
359 QDF_STATUS
360 wmi_unified_twt_enable_cmd(wmi_unified_t wmi_handle,
361 			   struct wmi_twt_enable_param *params);
362 
363 /**
364  * wmi_unified_twt_disable_cmd() - Send WMI command to disable TWT
365  * @wmi_handle: wmi handle
366  * @params: Parameters to be configured
367  *
368  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
369  */
370 QDF_STATUS
371 wmi_unified_twt_disable_cmd(wmi_unified_t wmi_handle,
372 			    struct wmi_twt_disable_param *params);
373 
374 /**
375  * wmi_unified_twt_add_dialog_cmd() - Send WMI command to add TWT dialog
376  * @wmi_handle: wmi handle
377  * @params: Parameters to be configured
378  *
379  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
380  */
381 QDF_STATUS
382 wmi_unified_twt_add_dialog_cmd(wmi_unified_t wmi_handle,
383 			       struct wmi_twt_add_dialog_param *params);
384 
385 /**
386  * wmi_unified_twt_del_dialog_cmd() - Send WMI command to delete TWT dialog
387  * @wmi_handle: wmi handle
388  * @params: Parameters to be configured
389  *
390  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
391  */
392 QDF_STATUS
393 wmi_unified_twt_del_dialog_cmd(wmi_unified_t wmi_handle,
394 			       struct wmi_twt_del_dialog_param *params);
395 
396 /**
397  * wmi_unified_twt_pause_dialog_cmd() - Send WMI command to pause TWT dialog
398  * @wmi_handle: wmi handle
399  * @params: Parameters to be configured
400  *
401  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
402  */
403 QDF_STATUS
404 wmi_unified_twt_pause_dialog_cmd(wmi_unified_t wmi_handle,
405 				 struct wmi_twt_pause_dialog_cmd_param *params);
406 
407 /**
408  * wmi_unified_twt_nudge_dialog_cmd() - Send WMI command to nudge TWT dialog
409  * @wmi_handle: wmi handle
410  * @params: Parameters to be configured
411  *
412  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
413  */
414 QDF_STATUS
415 wmi_unified_twt_nudge_dialog_cmd(wmi_unified_t wmi_handle,
416 				 struct wmi_twt_nudge_dialog_cmd_param *params);
417 
418 /**
419  * wmi_unified_twt_resume_dialog_cmd() - Send WMI command to resume TWT dialog
420  * @wmi_handle: wmi handle
421  * @params: Parameters to be configured
422  *
423  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
424  */
425 QDF_STATUS wmi_unified_twt_resume_dialog_cmd(
426 			wmi_unified_t wmi_handle,
427 			struct wmi_twt_resume_dialog_cmd_param *params);
428 
429 #ifdef WLAN_SUPPORT_BCAST_TWT
430 /**
431  * wmi_unified_twt_btwt_invite_sta_cmd() - Send WMI command for bTWT sta
432  *                               invitation
433  * @wmi_handle: wmi handle
434  * @params: Parameters to be configured
435  *
436  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
437  */
438 QDF_STATUS wmi_unified_twt_btwt_invite_sta_cmd(
439 			wmi_unified_t wmi_handle,
440 			struct wmi_twt_btwt_invite_sta_cmd_param *params);
441 
442 /**
443  * wmi_unified_twt_btwt_remove_sta_cmd() - Send WMI command for bTWT sta kickoff
444  * @wmi_handle: wmi handle
445  * @params: Parameters to be configured
446  *
447  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
448  */
449 QDF_STATUS wmi_unified_twt_btwt_remove_sta_cmd(
450 			wmi_unified_t wmi_handle,
451 			struct wmi_twt_btwt_remove_sta_cmd_param *params);
452 #endif
453 
454 /**
455  * wmi_extract_twt_enable_comp_event() - Extract WMI event params for TWT enable
456  *                               completion event
457  * @wmi_handle: wmi handle
458  * @evt_buf: Pointer event buffer
459  * @params: Parameters to extract
460  *
461  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
462  */
463 QDF_STATUS wmi_extract_twt_enable_comp_event(
464 		wmi_unified_t wmi_handle,
465 		uint8_t *evt_buf,
466 		struct wmi_twt_enable_complete_event_param *params);
467 
468 /**
469  * wmi_extract_twt_disable_comp_event() - Extract WMI event params for TWT
470  *                               disable completion event
471  * @wmi_handle: wmi handle
472  * @evt_buf: Pointer event buffer
473  * @params: Parameters to extract
474  *
475  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
476  */
477 QDF_STATUS wmi_extract_twt_disable_comp_event(
478 		wmi_unified_t wmi_handle,
479 		uint8_t *evt_buf,
480 		struct wmi_twt_disable_complete_event *params);
481 
482 /**
483  * wmi_extract_twt_add_dialog_comp_event() - Extract WMI event params for TWT
484  *                               add dialog completion event
485  * @wmi_handle: wmi handle
486  * @evt_buf: Pointer event buffer
487  * @params: Parameters to extract
488  *
489  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
490  */
491 QDF_STATUS wmi_extract_twt_add_dialog_comp_event(
492 		wmi_unified_t wmi_handle,
493 		uint8_t *evt_buf,
494 		struct wmi_twt_add_dialog_complete_event_param *params);
495 
496 /**
497  * wmi_extract_twt_add_dialog_comp_additional_params() - Extracts additional
498  * twt parameters, as part of add dialog completion event
499  * @wmi_handle: wmi handle
500  * @evt_buf: Pointer event buffer
501  * @evt_buf_len: length of the add dialog event buffer
502  * @idx: index of num_twt_params to extract
503  * @additional_params: additional parameters to extract
504  *
505  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
506  */
507 QDF_STATUS wmi_extract_twt_add_dialog_comp_additional_params(
508 		wmi_unified_t wmi_handle, uint8_t *evt_buf,
509 		uint32_t evt_buf_len, uint32_t idx,
510 		struct wmi_twt_add_dialog_additional_params *additional_params);
511 
512 /**
513  * wmi_extract_twt_del_dialog_comp_event() - Extract WMI event params for TWT
514  *                               delete dialog completion event
515  * @wmi_handle: wmi handle
516  * @evt_buf: Pointer event buffer
517  * @params: Parameters to extract
518  *
519  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
520  */
521 QDF_STATUS wmi_extract_twt_del_dialog_comp_event(
522 		wmi_unified_t wmi_handle,
523 		uint8_t *evt_buf,
524 		struct wmi_twt_del_dialog_complete_event_param *params);
525 
526 /**
527  * wmi_extract_twt_pause_dialog_comp_event() - Extract WMI event params for TWT
528  *                               pause dialog completion event
529  * @wmi_handle: wmi handle
530  * @evt_buf: Pointer event buffer
531  * @params: Parameters to extract
532  *
533  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
534  */
535 QDF_STATUS wmi_extract_twt_pause_dialog_comp_event(
536 		wmi_unified_t wmi_handle,
537 		uint8_t *evt_buf,
538 		struct wmi_twt_pause_dialog_complete_event_param *params);
539 
540 /**
541  * wmi_extract_twt_nudge_dialog_comp_event() - Extract WMI event params for TWT
542  *                               nudge dialog completion event
543  * @wmi_handle: wmi handle
544  * @evt_buf: Pointer event buffer
545  * @params: Parameters to extract
546  *
547  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
548  */
549 QDF_STATUS wmi_extract_twt_nudge_dialog_comp_event(
550 		wmi_unified_t wmi_handle,
551 		uint8_t *evt_buf,
552 		struct wmi_twt_nudge_dialog_complete_event_param *params);
553 
554 /**
555  * wmi_extract_twt_resume_dialog_comp_event() - Extract WMI event params for TWT
556  *                               resume dialog completion event
557  * @wmi_handle: wmi handle
558  * @evt_buf: Pointer event buffer
559  * @params: Parameters to extract
560  *
561  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
562  */
563 QDF_STATUS wmi_extract_twt_resume_dialog_comp_event(
564 		wmi_unified_t wmi_handle,
565 		uint8_t *evt_buf,
566 		struct wmi_twt_resume_dialog_complete_event_param *params);
567 
568 /**
569  * wmi_extract_twt_notify_event() - Extract WMI event params for TWT
570  *                                  notify event
571  * @wmi_handle: wmi handle
572  * @evt_buf: Pointer event buffer
573  * @params: Parameters to extract
574  *
575  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
576  */
577 QDF_STATUS wmi_extract_twt_notify_event(
578 		wmi_unified_t wmi_handle,
579 		uint8_t *evt_buf,
580 		struct wmi_twt_notify_event_param *params);
581 
582 #ifdef WLAN_SUPPORT_BCAST_TWT
583 /**
584  * wmi_extract_twt_btwt_invite_sta_comp_event() - Extract WMI event params for
585  *                          BTWT sta invitation completion event
586  * @wmi_handle: wmi handle
587  * @evt_buf: Pointer event buffer
588  * @params: Parameters to extract
589  *
590  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
591  */
592 QDF_STATUS wmi_extract_twt_btwt_invite_sta_comp_event(
593 		wmi_unified_t wmi_handle,
594 		uint8_t *evt_buf,
595 		struct wmi_twt_btwt_invite_sta_complete_event_param *params);
596 
597 /**
598  * wmi_extract_twt_btwt_remove_sta_comp_event() - Extract WMI event params for
599  *                          BTWT sta kickoff completion event
600  * @wmi_handle: wmi handle
601  * @evt_buf: Pointer event buffer
602  * @params: Parameters to extract
603  *
604  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
605  */
606 QDF_STATUS wmi_extract_twt_btwt_remove_sta_comp_event(
607 		wmi_unified_t wmi_handle,
608 		uint8_t *evt_buf,
609 		struct wmi_twt_btwt_remove_sta_complete_event_param *params);
610 #endif
611 
612 /**
613  * wmi_extract_twt_session_stats_event() - Extract WMI event params for TWT
614  *                               session stats event
615  * @wmi_handle: wmi handle
616  * @evt_buf: Pointer event buffer
617  * @params: Parameters to extract
618  *
619  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
620  */
621 QDF_STATUS wmi_extract_twt_session_stats_event(
622 		wmi_unified_t wmi_handle,
623 		uint8_t *evt_buf,
624 		struct wmi_twt_session_stats_event_param *params);
625 
626 /**
627  * wmi_extract_twt_session_stats_data() - Extract one TWT session from TWT
628  *                               session stats event
629  * @wmi_handle: wmi handle
630  * @evt_buf: Pointer event buffer
631  * @params: Parameters to extract
632  * @session: Session struct to save one TWT session
633  * @idx: TWT session index
634  *
635  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
636  */
637 QDF_STATUS wmi_extract_twt_session_stats_data(
638 		wmi_unified_t wmi_handle,
639 		uint8_t *evt_buf,
640 		struct wmi_twt_session_stats_event_param *params,
641 		struct wmi_host_twt_session_stats_info *session,
642 		uint32_t idx);
643 
644 void wmi_twt_attach_tlv(struct wmi_unified *wmi_handle);
645 
646 /**
647  * wmi_extract_twt_cap_service_ready_ext2: Extract TWT bitmap value
648  *                                         received through extended
649  *                                         service ready2 event
650  * @wmi_handle: WMI handle
651  * @evt_buf: Event buffer
652  * @params: Pointer to TWT bitmap param
653  *
654  * Return: QDF_STATUS_SUCCESS for success or error code
655  */
656 QDF_STATUS wmi_extract_twt_cap_service_ready_ext2(
657 			wmi_unified_t wmi_handle,
658 			uint8_t *evt_buf,
659 			struct wmi_twt_cap_bitmap_params *params);
660 
661 /**
662  * wmi_extract_twt_ack_comp_event() - Extract WMI event params for TWT ack event
663  *
664  * @wmi_handle: wmi handle
665  * @evt_buf: Pointer event buffer
666  * @param: Parameters to extract
667  *
668  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
669  */
670 QDF_STATUS wmi_extract_twt_ack_comp_event(
671 			wmi_unified_t wmi_handle,
672 			uint8_t *evt_buf,
673 			struct wmi_twt_ack_complete_event_param *param);
674 #else
wmi_twt_attach_tlv(struct wmi_unified * wmi_handle)675 static inline void wmi_twt_attach_tlv(struct wmi_unified *wmi_handle)
676 {
677 }
678 #endif
679 #endif /* _WMI_UNIFIED_TWT_API_H_ */
680