xref: /wlan-dirver/qca-wifi-host-cmn/wmi/inc/wmi_unified_api.h (revision 97f44cd39e4ff816eaa1710279d28cf6b9e65ad9)
1 /*
2  * Copyright (c) 2013-2020 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 /*
20  * This file contains the API definitions for the Unified Wireless Module
21  * Interface (WMI).
22  */
23 
24 #ifndef _WMI_UNIFIED_API_H_
25 #define _WMI_UNIFIED_API_H_
26 
27 #include <osdep.h>
28 #include "htc_api.h"
29 #include "wmi_unified_param.h"
30 #include "service_ready_param.h"
31 #include "wlan_objmgr_psoc_obj.h"
32 #include "wlan_mgmt_txrx_utils_api.h"
33 #include <wlan_dfs_public_struct.h>
34 #include <wlan_crypto_global_def.h>
35 #include "wlan_thermal_public_struct.h"
36 #ifdef WLAN_POWER_MANAGEMENT_OFFLOAD
37 #include "wmi_unified_pmo_api.h"
38 #endif
39 #ifdef WLAN_FEATURE_MIB_STATS
40 #include "wlan_cp_stats_mc_defs.h"
41 #endif
42 #include "wlan_scan_public_structs.h"
43 #ifdef WLAN_FEATURE_ACTION_OUI
44 #include "wlan_action_oui_public_struct.h"
45 #endif
46 #ifdef WLAN_SUPPORT_GREEN_AP
47 #include "wlan_green_ap_api.h"
48 #endif
49 #ifdef WLAN_FEATURE_DSRC
50 #include "wlan_ocb_public_structs.h"
51 #endif
52 #ifdef WLAN_SUPPORT_TWT
53 #include "wmi_unified_twt_param.h"
54 #include "wmi_unified_twt_api.h"
55 #endif
56 
57 #ifdef FEATURE_WLAN_EXTSCAN
58 #include "wmi_unified_extscan_api.h"
59 #endif
60 
61 #ifdef IPA_OFFLOAD
62 #include "wlan_ipa_public_struct.h"
63 #endif
64 
65 #ifdef WMI_SMART_ANT_SUPPORT
66 #include "wmi_unified_smart_ant_api.h"
67 #endif
68 
69 #ifdef WMI_DBR_SUPPORT
70 #include "wmi_unified_dbr_api.h"
71 #endif
72 
73 #ifdef WMI_ATF_SUPPORT
74 #include "wmi_unified_atf_api.h"
75 #endif
76 
77 #ifdef WMI_AP_SUPPORT
78 #include "wmi_unified_ap_api.h"
79 #endif
80 
81 #ifdef WLAN_FEATURE_DSRC
82 #include "wmi_unified_ocb_api.h"
83 #endif
84 
85 #ifdef WLAN_FEATURE_NAN
86 #include "wmi_unified_nan_api.h"
87 #endif
88 
89 #ifdef CONVERGED_P2P_ENABLE
90 #include <wmi_unified_p2p_api.h>
91 #endif
92 
93 #ifdef WMI_ROAM_SUPPORT
94 #include "wmi_unified_roam_api.h"
95 #endif
96 
97 #ifdef WMI_CONCURRENCY_SUPPORT
98 #include "wmi_unified_concurrency_api.h"
99 #endif
100 
101 #ifdef WMI_STA_SUPPORT
102 #include "wmi_unified_sta_api.h"
103 #endif
104 
105 #ifdef WLAN_FW_OFFLOAD
106 #include "wmi_unified_fwol_api.h"
107 #endif
108 
109 #ifdef WLAN_FEATURE_PKT_CAPTURE
110 #include "wlan_pkt_capture_public_structs.h"
111 #endif
112 
113 #ifdef WLAN_IOT_SIM_SUPPORT
114 #include "wlan_iot_sim_public_structs.h"
115 #endif
116 
117 #include "wmi_unified_cp_stats_api.h"
118 
119 typedef qdf_nbuf_t wmi_buf_t;
120 #define wmi_buf_data(_buf) qdf_nbuf_data(_buf)
121 
122 /* Number of bits to shift to combine 32 bit integer to 64 bit */
123 #define WMI_LOWER_BITS_SHIFT_32	0x20
124 
125 #define PHYERROR_MAX_BUFFER_LENGTH 0x7F000000
126 
127 struct wmi_soc;
128 struct policy_mgr_dual_mac_config;
129 
130 /**
131  * enum wmi_target_type - type of supported wmi command
132  * @WMI_TLV_TARGET: tlv based target
133  * @WMI_NON_TLV_TARGET: non-tlv based target
134  *
135  */
136 enum wmi_target_type {
137 	WMI_TLV_TARGET,
138 	WMI_NON_TLV_TARGET,
139 	WMI_MAX_TARGET_TYPE
140 };
141 
142 /**
143  * enum wmi_rx_exec_ctx - wmi rx execution context
144  * @WMI_RX_WORK_CTX: work queue context execution provided by WMI layer
145  * @WMI_RX_UMAC_CTX: execution context provided by umac layer
146  * @WMI_RX_SERIALIZER_CTX: Execution context is serialized thread context
147  * @WMI_RX_DIAG_WORK_CTX: work queue execution context for FW diag events
148  *
149  */
150 enum wmi_rx_exec_ctx {
151 	WMI_RX_WORK_CTX,
152 	WMI_RX_UMAC_CTX,
153 	WMI_RX_TASKLET_CTX = WMI_RX_UMAC_CTX,
154 	WMI_RX_SERIALIZER_CTX = 2,
155 	WMI_RX_DIAG_WORK_CTX
156 };
157 
158 /**
159  * enum wmi_rx_buff_type - wmi rx event buffer type
160  * @WMI_RX_PROCESSED_BUFF: processed event buffer provided by WMI layer
161  * @WMI_RX_RAW_BUFF:       raw event buffer provided by WMI layer
162  *
163  */
164 enum wmi_rx_buff_type {
165 	WMI_RX_PROCESSED_BUFF,
166 	WMI_RX_RAW_BUFF
167 };
168 
169 /**
170  * enum wmi_fw_mem_prio - defines FW Memory requirement type
171  * @WMI_FW_MEM_HIGH_PRIORITY:   Memory requires contiguous memory allocation
172  * @WMI_FW_MEM_LOW_PRIORITY:    Memory can be fragmented
173  * @WMI_FW_PRIORITY_MAX:        Invalid type
174  */
175 enum wmi_fw_mem_prio {
176 	WMI_FW_MEM_HIGH_PRIORITY = 0,
177 	WMI_FW_MEM_LOW_PRIORITY,
178 	WMI_FW_PRIORITY_MAX
179 };
180 
181 /**
182  * struct wmi_unified_attach_params - wmi init parameters
183  *  @osdev: NIC device
184  *  @target_type: type of supported wmi command
185  *  @use_cookie: flag to indicate cookie based allocation
186  *  @is_async_ep: queueing interrupt or non-interrupt endpoint
187  *  @rx_ops: handle to wmi ops
188  *  @psoc: objmgr psoc
189  *  @max_commands: max commands
190  *  @soc_id: SoC device instance id
191  */
192 struct wmi_unified_attach_params {
193 	osdev_t osdev;
194 	enum wmi_target_type target_type;
195 	bool use_cookie;
196 	bool is_async_ep;
197 	struct wlan_objmgr_psoc *psoc;
198 	uint16_t max_commands;
199 	uint32_t soc_id;
200 };
201 
202 /**
203  *  struct wmi_unified_exec_ctx - wmi execution ctx and handler buff
204  *  @exec_ctx:  execution context of event
205  *  @buff_type: buffer type for event handler
206  */
207 struct wmi_unified_exec_ctx {
208 	enum wmi_rx_exec_ctx exec_ctx;
209 	enum wmi_rx_buff_type buff_type;
210 };
211 
212 /**
213  * attach for unified WMI
214  *
215  *  @param scn_handle      : handle to SCN.
216  *  @param params          : attach params for WMI
217  *
218  */
219 void *wmi_unified_attach(void *scn_handle,
220 			 struct wmi_unified_attach_params *params);
221 
222 
223 
224 /**
225  * wmi_mgmt_cmd_record() - Wrapper function for mgmt command logging macro
226  *
227  * @wmi_handle: wmi handle
228  * @cmd: mgmt command
229  * @header: pointer to 802.11 header
230  * @vdev_id: vdev id
231  * @chanfreq: channel frequency
232  *
233  * Return: none
234  */
235 void wmi_mgmt_cmd_record(wmi_unified_t wmi_handle, uint32_t cmd,
236 			void *header, uint32_t vdev_id, uint32_t chanfreq);
237 
238 /**
239  * detach for unified WMI
240  *
241  *  @param wmi_handle      : handle to WMI.
242  *  @return void.
243  */
244 void wmi_unified_detach(struct wmi_unified *wmi_handle);
245 
246 /**
247  * API to sync time between host and firmware
248  *
249  * @wmi_handle: handle to WMI.
250  *
251  * Return: none
252  */
253 void wmi_send_time_stamp_sync_cmd_tlv(wmi_unified_t wmi_handle);
254 
255 void
256 wmi_unified_remove_work(struct wmi_unified *wmi_handle);
257 
258 /**
259  * generic function to allocate WMI buffer
260  *
261  *  @param wmi_handle      : handle to WMI.
262  *  @param len             : length of the buffer
263  *  @return wmi_buf_t.
264  */
265 #ifdef NBUF_MEMORY_DEBUG
266 #define wmi_buf_alloc(h, l) wmi_buf_alloc_debug(h, l, __func__, __LINE__)
267 wmi_buf_t
268 wmi_buf_alloc_debug(wmi_unified_t wmi_handle, uint32_t len,
269 		    const char *func_name, uint32_t line_num);
270 #else
271 /**
272  * wmi_buf_alloc() - generic function to allocate WMI buffer
273  * @wmi_handle: handle to WMI.
274  * @len: length of the buffer
275  *
276  * Return: return wmi_buf_t or null if memory alloc fails
277  */
278 #define wmi_buf_alloc(wmi_handle, len) \
279 	wmi_buf_alloc_fl(wmi_handle, len, __func__, __LINE__)
280 
281 wmi_buf_t wmi_buf_alloc_fl(wmi_unified_t wmi_handle, uint32_t len,
282 			   const char *func, uint32_t line);
283 #endif
284 
285 /**
286  * generic function frees WMI net buffer
287  *
288  *  @param net_buf : Pointer ot net_buf to be freed
289  */
290 void wmi_buf_free(wmi_buf_t net_buf);
291 
292 /**
293  * wmi_unified_cmd_send() -  generic function to send unified WMI command
294  * @wmi_handle: handle to WMI.
295  * @buf: wmi command buffer
296  * @buflen: wmi command buffer length
297  * @cmd_id: WMI cmd id
298  *
299  * Note, it is NOT safe to access buf after calling this function!
300  *
301  * Return: QDF_STATUS
302  */
303 #define wmi_unified_cmd_send(wmi_handle, buf, buflen, cmd_id) \
304 	wmi_unified_cmd_send_fl(wmi_handle, buf, buflen, \
305 				cmd_id, __func__, __LINE__)
306 
307 QDF_STATUS
308 wmi_unified_cmd_send_fl(wmi_unified_t wmi_handle, wmi_buf_t buf,
309 			uint32_t buflen, uint32_t cmd_id,
310 			const char *func, uint32_t line);
311 
312 #ifdef WLAN_FEATURE_WMI_SEND_RECV_QMI
313 /**
314  * wmi_unified_cmd_send_over_qmi() -  generic function to send unified WMI command
315  *                               over QMI
316  * @wmi_handle: handle to WMI.
317  * @buf: wmi command buffer
318  * @buflen: wmi command buffer length
319  * @cmd_id: WMI cmd id
320  *
321  * Return: QDF_STATUS
322  */
323 QDF_STATUS wmi_unified_cmd_send_over_qmi(struct wmi_unified *wmi_handle,
324 				    wmi_buf_t buf, uint32_t buflen,
325 				    uint32_t cmd_id);
326 
327 /**
328  * wmi_process_qmi_fw_event() - Process WMI event received over QMI
329  * @wmi_cb_ctx: WMI handle received as call back context
330  * @buf: Pointer to WMI event buffer
331  * @len: Len of WMI buffer received
332  *
333  * Return: None
334  */
335 int wmi_process_qmi_fw_event(void *wmi_cb_ctx, void *buf, int len);
336 #else
337 static inline
338 QDF_STATUS wmi_unified_cmd_send_over_qmi(struct wmi_unified *wmi_handle,
339 				    wmi_buf_t buf, uint32_t buflen,
340 				    uint32_t cmd_id)
341 {
342 	return QDF_STATUS_E_NOSUPPORT;
343 }
344 
345 static inline int wmi_process_qmi_fw_event(void *wmi_cb_ctx, void *buf, int len)
346 {
347 	return -EINVAL;
348 }
349 #endif
350 
351 /**
352  * wmi_unified_cmd_send_pm_chk() - send unified WMI command with PM check,
353  * if target is in suspended state, WMI command will be sent over QMI.
354  * @wmi_handle: handle to WMI.
355  * @buf: wmi command buffer
356  * @buflen: wmi command buffer length
357  * @cmd_id: WMI cmd id
358  *
359  * Note, it is NOT safe to access buf after calling this function!
360  *
361  * Return: QDF_STATUS
362  */
363 QDF_STATUS wmi_unified_cmd_send_pm_chk(struct wmi_unified *wmi_handle,
364 				       wmi_buf_t buf, uint32_t buflen,
365 				       uint32_t cmd_id);
366 
367 /**
368  * wmi_unified_register_event() - WMI event handler
369  * registration function for converged components
370  * @wmi_handle:   handle to WMI.
371  * @event_id:     WMI event ID
372  * @handler_func: Event handler call back function
373  *
374  * Return: QDF_STATUS
375  */
376 QDF_STATUS
377 wmi_unified_register_event(wmi_unified_t wmi_handle,
378 				   uint32_t event_id,
379 				   wmi_unified_event_handler handler_func);
380 
381 /**
382  * wmi_unified_register_event_handler() - WMI event handler
383  * registration function
384  * @wmi_handle:   handle to WMI.
385  * @event_id:     WMI event ID
386  * @handler_func: Event handler call back function
387  * @rx_ctx: rx event processing context
388  *
389  * Return: QDF_STATUS
390  */
391 QDF_STATUS
392 wmi_unified_register_event_handler(wmi_unified_t wmi_handle,
393 				   wmi_conv_event_id event_id,
394 				   wmi_unified_event_handler handler_func,
395 				   uint8_t rx_ctx);
396 
397 /**
398  * wmi_unified_unregister_event() - WMI event handler unregister function
399  * for converged componets
400  * @wmi_handle:    handle to WMI.
401  * @event_id:      WMI event ID
402  *
403  * Return: QDF_STATUS
404  */
405 QDF_STATUS
406 wmi_unified_unregister_event(wmi_unified_t wmi_handle,
407 			     uint32_t event_id);
408 
409 /**
410  * wmi_unified_register_raw_event_handler() - WMI event handler
411  * registration function.
412  * @wmi_handle:   handle to WMI.
413  * @event_id:     WMI event ID
414  * @handler_func: Event handler call back function
415  * @rx_ctx:       rx event processing context
416  *
417  * Register event handler to get struct wmi_raw_event_buffer as arg
418  *
419  * Return: QDF_STATUS
420  */
421 QDF_STATUS
422 wmi_unified_register_raw_event_handler(wmi_unified_t wmi_handle,
423 				       wmi_conv_event_id event_id,
424 				       wmi_unified_event_handler handler_func,
425 				       enum wmi_rx_exec_ctx rx_ctx);
426 
427 /**
428  * wmi_unified_unregister_event_handler() - WMI event handler unregister
429  * function
430  * wmi_handle:  handle to WMI.
431  * event_id:    WMI event ID
432  *
433  * Return: QDF_STATUS
434  */
435 QDF_STATUS
436 wmi_unified_unregister_event_handler(wmi_unified_t wmi_handle,
437 				     wmi_conv_event_id event_id);
438 
439 /**
440  * wmi_unified_connect_htc_service() -  WMI API to get connect to HTC service
441  * @wmi_handle: handle to WMI.
442  * @htc_handle: handle to HTC.
443  *
444  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAULT for failure
445  */
446 QDF_STATUS
447 wmi_unified_connect_htc_service(struct wmi_unified *wmi_handle,
448 				HTC_HANDLE htc_handle);
449 
450 #ifdef WLAN_FEATURE_WMI_DIAG_OVER_CE7
451 /**
452  * wmi_diag_connect_pdev_htc_service()
453  * WMI DIAG API to get connect to HTC service
454  * @wmi_handle: handle to WMI.
455  * @htc_handle: handle to HTC.
456  *
457  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAULT for failure
458  */
459 QDF_STATUS
460 wmi_diag_connect_pdev_htc_service(struct wmi_unified *wmi_handle,
461 				  HTC_HANDLE htc_handle);
462 #else
463 static inline QDF_STATUS
464 wmi_diag_connect_pdev_htc_service(struct wmi_unified *wmi_handle,
465 				  HTC_HANDLE htc_handle)
466 {
467 	return QDF_STATUS_SUCCESS;
468 }
469 #endif
470 
471 /*
472  * WMI API to verify the host has enough credits to suspend
473  *  @param wmi_handle      : handle to WMI.
474  */
475 
476 int wmi_is_suspend_ready(wmi_unified_t wmi_handle);
477 
478 /**
479  *  WMI API to get updated host_credits
480  *  @param wmi_handle      : handle to WMI.
481  */
482 
483 int wmi_get_host_credits(wmi_unified_t wmi_handle);
484 
485 /**
486  *  WMI API to get WMI Pending Commands in the HTC queue
487  *  @param wmi_handle      : handle to WMI.
488  */
489 
490 int wmi_get_pending_cmds(wmi_unified_t wmi_handle);
491 
492 /**
493  *  WMI API to set target suspend state
494  *  @param wmi_handle      : handle to WMI.
495  *  @param val             : suspend state boolean
496  */
497 void wmi_set_target_suspend(wmi_unified_t wmi_handle, bool val);
498 
499 /**
500  * wmi_is_target_suspended() - WMI API to check target suspend state
501  * @wmi_handle: handle to WMI.
502  *
503  * WMI API to check target suspend state
504  *
505  * Return: true if target is suspended, else false.
506  */
507 bool wmi_is_target_suspended(struct wmi_unified *wmi_handle);
508 
509 #ifdef WLAN_FEATURE_WMI_SEND_RECV_QMI
510 /**
511  *  wmi_set_qmi_stats() - WMI API to set qmi stats enabled/disabled
512  *  @wmi_handle: handle to WMI.
513  *  @val: suspend state boolean
514  */
515 void wmi_set_qmi_stats(wmi_unified_t wmi_handle, bool val);
516 
517 /**
518  * wmi_is_qmi_stats_enabled() - WMI API to check if periodic stats
519  * over qmi is enableid
520  * @wmi_handle: handle to WMI.
521  *
522  * WMI API to check if periodic stats over qmi is enabled
523  *
524  * Return: true if qmi stats is enabled, else false.
525  */
526 bool wmi_is_qmi_stats_enabled(struct wmi_unified *wmi_handle);
527 #else
528 static inline
529 void wmi_set_qmi_stats(wmi_unified_t wmi_handle, bool val)
530 {}
531 
532 static inline
533 bool wmi_is_qmi_stats_enabled(struct wmi_unified *wmi_handle)
534 {
535 	return false;
536 }
537 #endif /* end if of WLAN_FEATURE_WMI_SEND_RECV_QMI */
538 
539 /**
540  * WMI API to set bus suspend state
541  * @param wmi_handle:	handle to WMI.
542  * @param val:		suspend state boolean
543  */
544 void wmi_set_is_wow_bus_suspended(wmi_unified_t wmi_handle, A_BOOL val);
545 
546 /**
547  * WMI API to set crash injection state
548  * @param wmi_handle:	handle to WMI.
549  * @param val:		crash injection state boolean
550  */
551 void wmi_tag_crash_inject(wmi_unified_t wmi_handle, A_BOOL flag);
552 
553 /**
554  * WMI API to set target assert
555  * @param wmi_handle: 	handle to WMI.
556  * @param val:		target assert config value.
557  *
558  * Return: 		none.
559  */
560 void wmi_set_tgt_assert(wmi_unified_t wmi_handle, bool val);
561 
562 /**
563  * generic function to block unified WMI command
564  * @param wmi_handle      : handle to WMI.
565  * @return 0  on success and -ve on failure.
566  */
567 int
568 wmi_stop(wmi_unified_t wmi_handle);
569 
570 /**
571  * generic function to start unified WMI command
572  * @param wmi_handle      : handle to WMI.
573  * @return 0  on success and -ve on failure.
574  */
575 int
576 wmi_start(wmi_unified_t wmi_handle);
577 
578 /**
579  * wmi_is_blocked() - generic function to check if WMI is blocked
580  * @wmi_handle: handle to WMI.
581  *
582  * @Return: true, if blocked, false if not blocked
583  */
584 bool
585 wmi_is_blocked(wmi_unified_t wmi_handle);
586 
587 /**
588  * API to flush all the previous packets  associated with the wmi endpoint
589  *
590  * @param wmi_handle      : handle to WMI.
591  */
592 void
593 wmi_flush_endpoint(wmi_unified_t wmi_handle);
594 
595 /**
596  * API to stop wmi sequence check
597  *
598  * @param wmi_handle      : handle to WMI.
599  */
600 void
601 wmi_interface_sequence_stop(wmi_unified_t wmi_handle);
602 
603 /**
604  * wmi_pdev_id_conversion_enable() - API to enable pdev_id and phy_id
605  *                     conversion in WMI. By default pdev_id and
606  *                     phyid conversion is not done in WMI.
607  *                     This API can be used enable conversion in WMI.
608  * @param wmi_handle   : handle to WMI
609  * @param *pdev_id_map : pdev conversion map
610  * @param size         : size of pdev_id_map
611  * Return none
612  */
613 void wmi_pdev_id_conversion_enable(wmi_unified_t wmi_handle,
614 				   uint32_t *pdev_id_map,
615 				   uint8_t size);
616 
617 /**
618  * API to handle wmi rx event after UMAC has taken care of execution
619  * context
620  *
621  * @param wmi_handle      : handle to WMI.
622  * @param evt_buf         : wmi event buffer
623  */
624 void __wmi_control_rx(struct wmi_unified *wmi_handle, wmi_buf_t evt_buf);
625 #ifdef FEATURE_RUNTIME_PM
626 void
627 wmi_set_runtime_pm_inprogress(wmi_unified_t wmi_handle, bool val);
628 bool wmi_get_runtime_pm_inprogress(wmi_unified_t wmi_handle);
629 #else
630 static inline void
631 wmi_set_runtime_pm_inprogress(wmi_unified_t wmi_handle, bool val)
632 {
633 	return;
634 }
635 static inline bool wmi_get_runtime_pm_inprogress(wmi_unified_t wmi_handle)
636 {
637 	return false;
638 }
639 #endif
640 
641 void *wmi_unified_get_soc_handle(struct wmi_unified *wmi_handle);
642 
643 void *wmi_unified_get_pdev_handle(struct wmi_soc *soc, uint32_t pdev_idx);
644 
645 /**
646  * UMAC Callback to process fw event.
647  * @param wmi_handle      : handle to WMI.
648  * @param evt_buf         : wmi event buffer
649  */
650 void wmi_process_fw_event(struct wmi_unified *wmi_handle, wmi_buf_t evt_buf);
651 uint16_t wmi_get_max_msg_len(wmi_unified_t wmi_handle);
652 
653 /**
654  * wmi_unified_soc_set_hw_mode_cmd() - Send WMI_SOC_SET_HW_MODE_CMDID to FW
655  * @wmi_handle: wmi handle
656  * @hw_mode_index: The HW_Mode field is a enumerated type that is selected
657  * from the HW_Mode table, which is returned in the WMI_SERVICE_READY_EVENTID.
658  *
659  * Request HardWare (HW) Mode change to WLAN firmware
660  *
661  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
662  */
663 QDF_STATUS wmi_unified_soc_set_hw_mode_cmd(wmi_unified_t wmi_handle,
664 					   uint32_t hw_mode_index);
665 
666 /**
667  * wmi_extract_hw_mode_resp() - function to extract HW mode change response
668  * @wmi_hdl: WMI handle
669  * @evt_buf: Buffer holding event data
670  * @cmd_status: command status
671  *
672  * Return: QDF_STATUS_SUCCESS if success, else returns proper error code.
673  */
674 QDF_STATUS
675 wmi_unified_extract_hw_mode_resp(wmi_unified_t wmi,
676 				 void *evt_buf,
677 				 uint32_t *cmd_status);
678 
679 /**
680  * wmi_unified_extract_roam_trigger_stats() - Extract roam trigger related
681  * stats
682  * @wmi:        wmi handle
683  * @evt_buf:    Pointer to the event buffer
684  * @trig:       Pointer to destination structure to fill data
685  * @idx:        TLV id
686  *
687  * Return: QDF_STATUS
688  */
689 QDF_STATUS
690 wmi_unified_extract_roam_trigger_stats(wmi_unified_t wmi, void *evt_buf,
691 				       struct wmi_roam_trigger_info *trig,
692 				       uint8_t idx);
693 
694 /**
695  * wmi_unified_extract_roam_scan_stats() - Extract roam scan stats from
696  * firmware
697  * @wmi:        wmi handle
698  * @evt_buf:    Pointer to the event buffer
699  * @dst:        Pointer to destination structure to fill data
700  * @idx:        TLV id
701  * @chan_idx:   Index of the channel frequency for this roam trigger
702  * @ap_idx:     Index of the candidate AP for this roam trigger
703  *
704  * Return: QDF_STATUS
705  */
706 QDF_STATUS
707 wmi_unified_extract_roam_scan_stats(wmi_unified_t wmi, void *evt_buf,
708 				    struct wmi_roam_scan_data *dst, uint8_t idx,
709 				    uint8_t chan_idx, uint8_t ap_idx);
710 
711 /**
712  * wmi_unified_extract_roam_result_stats() - Extract roam result related stats
713  * @wmi:        wmi handle
714  * @evt_buf:    Pointer to the event buffer
715  * @dst:        Pointer to destination structure to fill data
716  * @idx:        TLV id
717  *
718  * Return: QDF_STATUS
719  */
720 QDF_STATUS
721 wmi_unified_extract_roam_result_stats(wmi_unified_t wmi, void *evt_buf,
722 				      struct wmi_roam_result *dst,
723 				      uint8_t idx);
724 
725 /**
726  * wmi_unified_extract_roam_11kv_stats() - Extract BTM/Neigh report stats
727  * @wmi:       wmi handle
728  * @evt_buf:   Pointer to the event buffer
729  * @dst:       Pointer to destination structure to fill data
730  * @idx:       TLV id
731  * @rpt_idx:   index of the current channel
732  *
733  * Return: QDF_STATUS
734  */
735 QDF_STATUS
736 wmi_unified_extract_roam_11kv_stats(wmi_unified_t wmi, void *evt_buf,
737 				    struct wmi_neighbor_report_data *dst,
738 				    uint8_t idx, uint8_t rpt_idx);
739 
740 /**
741  * wmi_unified_vdev_create_send() - send VDEV create command to fw
742  * @wmi_handle: wmi handle
743  * @param: pointer to hold vdev create parameter
744  * @macaddr: vdev mac address
745  *
746  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
747  */
748 QDF_STATUS wmi_unified_vdev_create_send(wmi_unified_t wmi_handle,
749 					uint8_t macaddr[QDF_MAC_ADDR_SIZE],
750 					struct vdev_create_params *param);
751 
752 /**
753  * wmi_unified_vdev_delete_send() - send VDEV delete command to fw
754  * @wmi_handle: wmi handle
755  * @if_id: vdev id
756  *
757  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
758  */
759 QDF_STATUS wmi_unified_vdev_delete_send(wmi_unified_t wmi_handle,
760 					uint8_t if_id);
761 
762 /**
763  * wmi_unified_vdev_nss_chain_params_send() - send VDEV nss chain params to fw
764  * @wmi_handle: wmi handle
765  * @vdev_id: vdev id
766  * @nss_chains_user_cfg: user configured params to send
767  *
768  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
769  */
770 QDF_STATUS
771 wmi_unified_vdev_nss_chain_params_send(
772 		wmi_unified_t wmi_handle,
773 		uint8_t vdev_id,
774 		struct vdev_nss_chains *nss_chains_user_cfg);
775 
776 /**
777  * wmi_unified_vdev_stop_send() - send vdev stop command to fw
778  * @wmi_handle: wmi handle
779  * @vdev_id: vdev id
780  *
781  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
782  */
783 QDF_STATUS wmi_unified_vdev_stop_send(wmi_unified_t wmi_handle,
784 				      uint8_t vdev_id);
785 
786 /**
787  * wmi_unified_vdev_up_send() - send vdev up command in fw
788  * @wmi_handle: wmi handle
789  * @bssid: bssid
790  * @params: pointer to hold vdev up parameter
791  *
792  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
793  */
794 QDF_STATUS wmi_unified_vdev_up_send(wmi_unified_t wmi_handle,
795 				    uint8_t bssid[QDF_MAC_ADDR_SIZE],
796 				    struct vdev_up_params *params);
797 
798 /**
799  * wmi_unified_vdev_down_send() - send vdev down command to fw
800  * @wmi_handle: wmi handle
801  * @vdev_id: vdev id
802  *
803  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
804  */
805 QDF_STATUS wmi_unified_vdev_down_send(wmi_unified_t wmi_handle,
806 				      uint8_t vdev_id);
807 
808 /**
809  * wmi_unified_vdev_start_send() - send vdev start command to fw
810  * @wmi_handle: wmi handle
811  * @vdev_id: vdev id
812  *
813  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
814  */
815 QDF_STATUS wmi_unified_vdev_start_send(wmi_unified_t wmi_handle,
816 				       struct vdev_start_params *req);
817 
818 /**
819  * wmi_unified_vdev_set_nac_rssi_send() - send NAC_RSSI command to fw
820  * @wmi_handle: handle to WMI
821  * @req: pointer to hold nac rssi request data
822  *
823  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
824  */
825 QDF_STATUS
826 wmi_unified_vdev_set_nac_rssi_send(wmi_unified_t wmi_handle,
827 				   struct vdev_scan_nac_rssi_params *req);
828 
829 /**
830  * wmi_unified_vdev_set_param_send() - WMI vdev set parameter function
831  * @wmi_handle: handle to WMI.
832  * @macaddr: MAC address
833  * @param: pointer to hold vdev set parameter
834  *
835  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
836  */
837 QDF_STATUS
838 wmi_unified_vdev_set_param_send(wmi_unified_t wmi_handle,
839 				struct vdev_set_params *param);
840 
841 /**
842  * wmi_unified_sifs_trigger_send() - WMI vdev sifs trigger parameter function
843  * @wmi_handle: handle to WMI.
844  * @param: pointer to hold sifs trigger parameter
845  *
846  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
847  */
848 QDF_STATUS wmi_unified_sifs_trigger_send(wmi_unified_t wmi_handle,
849 					 struct sifs_trigger_param *param);
850 
851 /**
852  * wmi_unified_peer_delete_send() - send PEER delete command to fw
853  * @wmi_handle: wmi handle
854  * @peer_addr: peer mac addr
855  * @vdev_id: vdev id
856  *
857  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
858  */
859 QDF_STATUS
860 wmi_unified_peer_delete_send(wmi_unified_t wmi_handle,
861 			     uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
862 			     uint8_t vdev_id);
863 
864 /**
865  * wmi_unified_peer_flush_tids_send() - flush peer tids packets in fw
866  * @wmi_handle: wmi handle
867  * @peer_addr: peer mac address
868  * @param: pointer to hold peer flush tid parameter
869  *
870  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
871  */
872 QDF_STATUS
873 wmi_unified_peer_flush_tids_send(wmi_unified_t wmi_handle,
874 				 uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
875 				 struct peer_flush_params *param);
876 
877 /**
878  * wmi_unified_peer_delete_all_send() - send PEER delete all command to fw
879  * @wmi_hdl: wmi handle
880  * @param: pointer to hold peer delete all parameters
881  *
882  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
883  */
884 QDF_STATUS wmi_unified_peer_delete_all_send(
885 					wmi_unified_t wmi_hdl,
886 					struct peer_delete_all_params *param);
887 
888 /**
889  * wmi_set_peer_param() - set peer parameter in fw
890  * @wmi_handle: wmi handle
891  * @peer_addr: peer mac address
892  * @param: pointer to hold peer set parameter
893  *
894  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
895  */
896 QDF_STATUS
897 wmi_set_peer_param_send(wmi_unified_t wmi_handle,
898 			uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
899 			struct peer_set_params *param);
900 
901 /**
902  * wmi_unified_peer_create_send() - send peer create command to fw
903  * @wmi_handle: wmi handle
904  * @peer_addr: peer mac address
905  * @peer_type: peer type
906  * @vdev_id: vdev id
907  *
908  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
909  */
910 QDF_STATUS wmi_unified_peer_create_send(wmi_unified_t wmi_handle,
911 					struct peer_create_params *param);
912 
913 /**
914  * wmi_unified_green_ap_ps_send() - enable green ap powersave command
915  * @wmi_handle: wmi handle
916  * @value: value
917  * @pdev_id: pdev id to have radio context
918  *
919  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
920  */
921 QDF_STATUS wmi_unified_green_ap_ps_send(wmi_unified_t wmi_handle,
922 					uint32_t value, uint8_t pdev_id);
923 
924 /**
925  * wmi_unified_wow_enable_send() - WMI wow enable function
926  * @wmi_handle: handle to WMI.
927  * @param: pointer to hold wow enable parameter
928  * @mac_id: radio context
929  *
930  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
931  */
932 QDF_STATUS wmi_unified_wow_enable_send(wmi_unified_t wmi_handle,
933 				       struct wow_cmd_params *param,
934 				       uint8_t mac_id);
935 
936 /**
937  * wmi_unified_wow_wakeup_send() - WMI wow wakeup function
938  * @wmi_handle: handle to WMI.
939  *
940  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
941  */
942 QDF_STATUS wmi_unified_wow_wakeup_send(wmi_unified_t wmi_handle);
943 
944 /**
945  * wmi_unified_wow_add_wakeup_event_send() - WMI wow wakeup function
946  * @wmi_handle: handle to WMI.
947  * @param: pointer to wow wakeup event parameter structure
948  *
949  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
950  */
951 QDF_STATUS
952 wmi_unified_wow_add_wakeup_event_send(wmi_unified_t wmi_handle,
953 				      struct wow_add_wakeup_params *param);
954 
955 /**
956  * wmi_unified_wow_add_wakeup_pattern_send() - WMI wow wakeup pattern function
957  * @wmi_handle: handle to WMI.
958  * @param: pointer to wow wakeup pattern parameter structure
959  *
960  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
961  */
962 QDF_STATUS
963 wmi_unified_wow_add_wakeup_pattern_send(
964 		wmi_unified_t wmi_handle,
965 		struct wow_add_wakeup_pattern_params *param);
966 
967 /**
968  * wmi_unified_wow_remove_wakeup_pattern_send() - wow wakeup pattern function
969  * @wmi_handle: handle to WMI.
970  * @param: pointer to wow wakeup pattern parameter structure
971  *
972  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
973  */
974 QDF_STATUS
975 wmi_unified_wow_remove_wakeup_pattern_send(
976 		wmi_unified_t wmi_handle,
977 		struct wow_remove_wakeup_pattern_params *param);
978 
979 /**
980  * wmi_unified_packet_log_enable_send() - WMI request stats function
981  * @wmi_handle : handle to WMI.
982  * @PKTLOG_EVENT : PKTLOG Event
983  * @mac_id : MAC id corresponds to pdev id
984  *
985  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
986  */
987 QDF_STATUS
988 wmi_unified_packet_log_enable_send(wmi_unified_t wmi_handle,
989 				   WMI_HOST_PKTLOG_EVENT PKTLOG_EVENT,
990 				   uint8_t mac_id);
991 
992 /**
993  * wmi_unified_peer_based_pktlog_send() - WMI request enable peer
994  * based filtering
995  * @wmi_handle: handle to WMI.
996  * @macaddr: PEER mac address to be filtered
997  * @mac_id: Mac id
998  * @enb_dsb: Enable or Disable peer based pktlog
999  *           filtering
1000  *
1001  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1002  */
1003 QDF_STATUS wmi_unified_peer_based_pktlog_send(wmi_unified_t wmi_handle,
1004 					      uint8_t *macaddr,
1005 					      uint8_t mac_id,
1006 					      uint8_t enb_dsb);
1007 
1008 /**
1009  * wmi_unified_packet_log_disable__send() - WMI pktlog disable function
1010  * @wmi_handle: handle to WMI.
1011  * @PKTLOG_EVENT: packet log event
1012  *
1013  * @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1014  */
1015 QDF_STATUS wmi_unified_packet_log_disable_send(wmi_unified_t wmi_handle,
1016 					       uint8_t mac_id);
1017 
1018 /**
1019  * wmi_unified_suspend_send() - WMI suspend function
1020  * @wmi_handle: handle to WMI.
1021  * @param: pointer to hold suspend parameter
1022  * @mac_id: radio context
1023  *
1024  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1025  */
1026 QDF_STATUS wmi_unified_suspend_send(wmi_unified_t wmi_handle,
1027 				    struct suspend_params *param,
1028 				    uint8_t mac_id);
1029 
1030 /**
1031  * wmi_unified_resume_send - WMI resume function
1032  * @wmi_handle      : handle to WMI.
1033  * @mac_id: radio context
1034  *
1035  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1036  */
1037 QDF_STATUS wmi_unified_resume_send(wmi_unified_t wmi_handle,
1038 				   uint8_t mac_id);
1039 
1040 /**
1041  * wmi_unified_pdev_param_send() - set pdev parameters
1042  * @wmi_handle: wmi handle
1043  * @param: pointer to pdev parameter
1044  * @mac_id: radio context
1045  *
1046  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failures,
1047  *         errno on failure
1048  */
1049 QDF_STATUS
1050 wmi_unified_pdev_param_send(wmi_unified_t wmi_handle,
1051 			    struct pdev_params *param,
1052 			    uint8_t mac_id);
1053 
1054 /**
1055  * wmi_unified_fd_tmpl_send_cmd() - WMI FILS Discovery send function
1056  * @wmi_handle: handle to WMI.
1057  * @param: pointer to hold FILS Discovery send cmd parameter
1058  *
1059  * @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1060  */
1061 QDF_STATUS
1062 wmi_unified_fd_tmpl_send_cmd(wmi_unified_t wmi_handle,
1063 			     struct fils_discovery_tmpl_params *param);
1064 
1065 /**
1066  * wmi_unified_beacon_tmpl_send_cmd() - WMI beacon send function
1067  * @wmi_handle: handle to WMI.
1068  * @macaddr: MAC address
1069  * @param: pointer to hold beacon send cmd parameter
1070  *
1071  * @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1072  */
1073 QDF_STATUS
1074 wmi_unified_beacon_tmpl_send_cmd(wmi_unified_t wmi_handle,
1075 				 struct beacon_tmpl_params *param);
1076 
1077 /**
1078  * wmi_unified_peer_assoc_send() - WMI peer assoc function
1079  * @wmi_handle: handle to WMI.
1080  * @macaddr: MAC address
1081  * @param: pointer to peer assoc parameter
1082  *
1083  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1084  */
1085 QDF_STATUS wmi_unified_peer_assoc_send(wmi_unified_t wmi_handle,
1086 				       struct peer_assoc_params *param);
1087 
1088 /**
1089  * wmi_unified_sta_ps_cmd_send() - set sta powersave parameters
1090  * @wmi_handle: wmi handle
1091  * @peer_addr: peer mac address
1092  * @param: pointer to sta_ps parameter structure
1093  *
1094  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1095  */
1096 QDF_STATUS wmi_unified_sta_ps_cmd_send(wmi_unified_t wmi_handle,
1097 				       struct sta_ps_params *param);
1098 
1099 /**
1100  * wmi_unified_ap_ps_cmd_send() - set ap powersave parameters
1101  * @wmi_handle: wmi handle
1102  * @peer_addr: peer mac address
1103  * @param: pointer to ap_ps parameter structure
1104  *
1105  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1106  */
1107 QDF_STATUS wmi_unified_ap_ps_cmd_send(wmi_unified_t wmi_handle,
1108 				      uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1109 				      struct ap_ps_params *param);
1110 
1111 /**
1112  * wmi_unified_scan_start_cmd_send() - WMI scan start function
1113  * @wmi_handle: handle to WMI.
1114  * @macaddr: MAC address
1115  * @param: pointer to hold scan start cmd parameter
1116  *
1117  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1118  */
1119 QDF_STATUS
1120 wmi_unified_scan_start_cmd_send(wmi_unified_t wmi_handle,
1121 				struct scan_req_params *param);
1122 
1123 /**
1124  * wmi_unified_scan_stop_cmd_send() - WMI scan start function
1125  * @wmi_handle: handle to WMI.
1126  * @macaddr: MAC address
1127  * @param: pointer to hold scan start cmd parameter
1128  *
1129  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1130  */
1131 QDF_STATUS
1132 wmi_unified_scan_stop_cmd_send(wmi_unified_t wmi_handle,
1133 			       struct scan_cancel_param *param);
1134 
1135 /**
1136  * wmi_unified_scan_chan_list_cmd_send() - WMI scan channel list function
1137  * @wmi_handle: handle to WMI.
1138  * @macaddr: MAC address
1139  * @param: pointer to hold scan channel list parameter
1140  *
1141  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1142  */
1143 QDF_STATUS
1144 wmi_unified_scan_chan_list_cmd_send(wmi_unified_t wmi_handle,
1145 				    struct scan_chan_list_params *param);
1146 
1147 
1148 /**
1149  * wmi_crash_inject() - inject fw crash
1150  * @wmi_handle: wmi handle
1151  * @param: ponirt to crash inject parameter structure
1152  *
1153  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1154  */
1155 QDF_STATUS wmi_crash_inject(wmi_unified_t wmi_handle,
1156 			    struct crash_inject *param);
1157 
1158 /**
1159  * wmi_unified_pdev_utf_cmd() - send utf command to fw
1160  * @wmi_handle: wmi handle
1161  * @param: pointer to pdev_utf_params
1162  * @mac_id: mac id to have radio context
1163  *
1164  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1165  */
1166 QDF_STATUS wmi_unified_pdev_utf_cmd_send(wmi_unified_t wmi_handle,
1167 					 struct pdev_utf_params *param,
1168 					 uint8_t mac_id);
1169 
1170 /**
1171  * wmi_unified_dbglog_cmd_send() - set debug log level
1172  * @wmi_handle: handle to WMI.
1173  * @param: pointer to hold dbglog level parameter
1174  *
1175  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1176  */
1177 QDF_STATUS wmi_unified_dbglog_cmd_send(wmi_unified_t wmi_handle,
1178 				       struct dbglog_params *param);
1179 
1180 /**
1181  *  wmi_mgmt_unified_cmd_send() - management cmd over wmi layer
1182  *  @wmi_handle: handle to WMI.
1183  *  @param: pointer to hold mgmt cmd parameter
1184  *
1185  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1186  */
1187 QDF_STATUS wmi_mgmt_unified_cmd_send(wmi_unified_t wmi_handle,
1188 				     struct wmi_mgmt_params *param);
1189 
1190 /**
1191  *  wmi_offchan_data_tx_cmd_send() - Send offchan data tx cmd over wmi layer
1192  *  @wmi_handle: handle to WMI.
1193  *  @param: pointer to hold offchan data cmd parameter
1194  *
1195  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1196  */
1197 QDF_STATUS wmi_offchan_data_tx_cmd_send(
1198 		wmi_unified_t wmi_handle,
1199 		struct wmi_offchan_data_tx_params *param);
1200 
1201 /**
1202  * wmi_unified_modem_power_state() - set modem power state to fw
1203  * @wmi_handle: wmi handle
1204  * @param_value: parameter value
1205  *
1206  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1207  */
1208 QDF_STATUS wmi_unified_modem_power_state(wmi_unified_t wmi_handle,
1209 					 uint32_t param_value);
1210 
1211 /**
1212  * wmi_unified_set_sta_ps_mode() - set sta powersave params in fw
1213  * @wmi_handle: wmi handle
1214  * @vdev_id: vdev id
1215  * @val: value
1216  *
1217  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure.
1218  */
1219 QDF_STATUS wmi_unified_set_sta_ps_mode(wmi_unified_t wmi_handle,
1220 				       uint32_t vdev_id,
1221 				       uint8_t val);
1222 
1223 /**
1224  * wmi_unified_set_sta_uapsd_auto_trig_cmd() - set uapsd auto trigger command
1225  * @wmi_handle: wmi handle
1226  * @param: uapsd cmd parameter strcture
1227  *
1228  * This function sets the trigger
1229  * uapsd params such as service interval, delay interval
1230  * and suspend interval which will be used by the firmware
1231  * to send trigger frames periodically when there is no
1232  * traffic on the transmit side.
1233  *
1234  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure.
1235  */
1236 QDF_STATUS
1237 wmi_unified_set_sta_uapsd_auto_trig_cmd(wmi_unified_t wmi_handle,
1238 					struct sta_uapsd_trig_params *param);
1239 
1240 /**
1241  * wmi_get_temperature() - get pdev temperature req
1242  * @wmi_handle: wmi handle
1243  *
1244  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure.
1245  */
1246 QDF_STATUS wmi_unified_get_temperature(wmi_unified_t wmi_handle);
1247 
1248 /**
1249  * wmi_set_smps_params() - set smps params
1250  * @wmi_handle: wmi handle
1251  * @vdev_id: vdev id
1252  * @value: value
1253  *
1254  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure.
1255  */
1256 QDF_STATUS wmi_unified_set_smps_params(wmi_unified_t wmi_handle,
1257 				       uint8_t vdev_id,
1258 				       int value);
1259 
1260 /**
1261  * wmi_set_mimops() - set MIMO powersave
1262  * @wmi_handle: wmi handle
1263  * @vdev_id: vdev id
1264  * @value: value
1265  *
1266  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure.
1267  */
1268 QDF_STATUS wmi_unified_set_mimops(wmi_unified_t wmi_handle,
1269 				  uint8_t vdev_id, int value);
1270 
1271 /**
1272  * wmi_unified_lro_config_cmd() - process the LRO config command
1273  * @wmi_handle: Pointer to wmi handle
1274  * @wmi_lro_cmd: Pointer to LRO configuration parameters
1275  *
1276  * This function sends down the LRO configuration parameters to
1277  * the firmware to enable LRO, sets the TCP flags and sets the
1278  * seed values for the toeplitz hash generation
1279  *
1280  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1281  */
1282 QDF_STATUS
1283 wmi_unified_lro_config_cmd(wmi_unified_t wmi_handle,
1284 			   struct wmi_lro_config_cmd_t *wmi_lro_cmd);
1285 
1286 /**
1287  * wmi_unified_set_thermal_mgmt_cmd() - set thermal mgmt command to fw
1288  * @wmi_handle: Pointer to wmi handle
1289  * @thermal_info: Thermal command information
1290  *
1291  * This function sends the thermal management command
1292  * to the firmware
1293  *
1294  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1295  */
1296 QDF_STATUS
1297 wmi_unified_set_thermal_mgmt_cmd(wmi_unified_t wmi_handle,
1298 				 struct thermal_cmd_params *thermal_info);
1299 
1300 /**
1301  * wmi_unified_peer_rate_report_cmd() - process the peer rate report command
1302  * @wmi_handle: Pointer to wmi handle
1303  * @rate_report_params: Pointer to peer rate report parameters
1304  *
1305  *
1306  * Return: QDF_STATUS_SUCCESS for success otherwise failure
1307  */
1308 QDF_STATUS
1309 wmi_unified_peer_rate_report_cmd(
1310 		wmi_unified_t wmi_handle,
1311 		struct wmi_peer_rate_report_params *rate_report_params);
1312 
1313 /**
1314  * wmi_unified_process_update_edca_param() - update EDCA params
1315  * @wmi_handle: wmi handle
1316  * @vdev_id: vdev id.
1317  * @mu_edca_param: mu_edca_param.
1318  * @wmm_vparams: edca parameters
1319  *
1320  * This function updates EDCA parameters to the target
1321  *
1322  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1323  */
1324 QDF_STATUS
1325 wmi_unified_process_update_edca_param(
1326 		wmi_unified_t wmi_handle,
1327 		uint8_t vdev_id,
1328 		bool mu_edca_param,
1329 		struct wmi_host_wme_vparams wmm_vparams[WMI_MAX_NUM_AC]);
1330 
1331 /**
1332  * wmi_unified_probe_rsp_tmpl_send_cmd() - send probe response template to fw
1333  * @wmi_handle: wmi handle
1334  * @vdev_id: vdev id
1335  * @probe_rsp_info: probe response info
1336  *
1337  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1338  */
1339 QDF_STATUS
1340 wmi_unified_probe_rsp_tmpl_send_cmd(
1341 		wmi_unified_t wmi_handle,
1342 		uint8_t vdev_id,
1343 		struct wmi_probe_resp_params *probe_rsp_info);
1344 
1345 /**
1346  * wmi_unified_setup_install_key_cmd - send key to install to fw
1347  * @wmi_handle: wmi handle
1348  * @key_params: key parameters
1349  *
1350  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1351  */
1352 QDF_STATUS
1353 wmi_unified_setup_install_key_cmd(wmi_unified_t wmi_handle,
1354 				  struct set_key_params *key_params);
1355 
1356 /**
1357  * wmi_unified_get_pn_send_cmd() - send command to fw get PN for peer
1358  * @wmi_handle: wmi handle
1359  * @pn_params: PN parameters
1360  *
1361  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1362  */
1363 QDF_STATUS
1364 wmi_unified_get_pn_send_cmd(wmi_unified_t wmi_hdl,
1365 			    struct peer_request_pn_param *pn_params);
1366 
1367 /**
1368  * wmi_unified_p2p_go_set_beacon_ie_cmd() - set beacon IE for p2p go
1369  * @wmi_handle: wmi handle
1370  * @vdev_id: vdev id
1371  * @p2p_ie: p2p IE
1372  *
1373  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1374  */
1375 QDF_STATUS wmi_unified_p2p_go_set_beacon_ie_cmd(wmi_unified_t wmi_hdl,
1376 						uint32_t vdev_id,
1377 						uint8_t *p2p_ie);
1378 
1379 /**
1380  * wmi_unified_scan_probe_setoui_cmd() - set scan probe OUI
1381  * @wmi_handle: wmi handle
1382  * @psetoui: OUI parameters
1383  *
1384  * set scan probe OUI parameters in firmware
1385  *
1386  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1387  */
1388 QDF_STATUS wmi_unified_scan_probe_setoui_cmd(wmi_unified_t wmi_handle,
1389 					     struct scan_mac_oui *psetoui);
1390 
1391 #ifdef IPA_OFFLOAD
1392 /** wmi_unified_ipa_offload_control_cmd() - ipa offload control parameter
1393  * @wmi_handle: wmi handle
1394  * @ipa_offload: ipa offload control parameter
1395  *
1396  * Returns: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failures,
1397  *          error number otherwise
1398  */
1399 QDF_STATUS
1400 wmi_unified_ipa_offload_control_cmd(
1401 		wmi_unified_t wmi_handle,
1402 		struct ipa_uc_offload_control_params *ipa_offload);
1403 #endif
1404 
1405 /**
1406  * wmi_unified_pno_stop_cmd() - PNO stop request
1407  * @wmi_handle: wmi handle
1408  * @vdev_id: vdev id
1409  *
1410  * This function request FW to stop ongoing PNO operation.
1411  *
1412  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1413  */
1414 QDF_STATUS wmi_unified_pno_stop_cmd(wmi_unified_t wmi_handle, uint8_t vdev_id);
1415 
1416 #ifdef FEATURE_WLAN_SCAN_PNO
1417 /**
1418  * wmi_unified_pno_start_cmd() - PNO start request
1419  * @wmi_handle: wmi handle
1420  * @pno: PNO request
1421  *
1422  * This function request FW to start PNO request.
1423  * Request: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1424  */
1425 QDF_STATUS wmi_unified_pno_start_cmd(wmi_unified_t wmi_handle,
1426 				     struct pno_scan_req_params *pno);
1427 #endif
1428 
1429 /**
1430  * wmi_unified_nlo_mawc_cmd() - NLO MAWC cmd configuration
1431  * @wmi_handle: wmi handle
1432  * @params: Configuration parameters
1433  *
1434  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1435  */
1436 QDF_STATUS wmi_unified_nlo_mawc_cmd(wmi_unified_t wmi_handle,
1437 				    struct nlo_mawc_params *params);
1438 
1439 #ifdef WLAN_FEATURE_LINK_LAYER_STATS
1440 /**
1441  * wmi_unified_process_ll_stats_clear_cmd() - clear link layer stats
1442  * @wmi_handle: wmi handle
1443  * @clear_req: ll stats clear request command params
1444  *
1445  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1446  */
1447 QDF_STATUS wmi_unified_process_ll_stats_clear_cmd(wmi_unified_t wmi_handle,
1448 				 const struct ll_stats_clear_params *clear_req);
1449 
1450 /**
1451  * wmi_unified_process_ll_stats_set_cmd() - link layer stats set request
1452  * @wmi_handle: wmi handle
1453  * @set_req: ll stats set request command params
1454  *
1455  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1456  */
1457 QDF_STATUS wmi_unified_process_ll_stats_set_cmd(wmi_unified_t wmi_handle,
1458 				 const struct ll_stats_set_params *set_req);
1459 
1460 /**
1461  * wmi_unified_process_ll_stats_get_cmd() - link layer stats get request
1462  * @wmi_handle: wmi handle
1463  * @get_req: ll stats get request command params
1464  *
1465  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1466  */
1467 QDF_STATUS wmi_unified_process_ll_stats_get_cmd(wmi_unified_t wmi_handle,
1468 				 const struct ll_stats_get_params *get_req);
1469 
1470 #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION
1471 /**
1472  * wmi_process_unified_ll_stats_get_sta_cmd() - unified link layer stats and
1473  *                                              get station request
1474  * @wmi_handle: wmi handle
1475  * @get_req: unified ll stats and get station request command params
1476  * @is_always_over_qmi: flag to send stats request always over qmi
1477  *
1478  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1479  */
1480 QDF_STATUS wmi_process_unified_ll_stats_get_sta_cmd(
1481 				wmi_unified_t wmi_handle,
1482 				const struct ll_stats_get_params *get_req,
1483 				bool is_always_over_qmi);
1484 #endif /* FEATURE_CLUB_LL_STATS_AND_GET_STATION */
1485 #endif /* WLAN_FEATURE_LINK_LAYER_STATS */
1486 
1487 /**
1488  * wmi_unified_congestion_request_cmd() - send request to fw to get CCA
1489  * @wmi_handle: wma handle
1490  * @vdev_id: vdev id
1491  *
1492  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1493  */
1494 QDF_STATUS wmi_unified_congestion_request_cmd(wmi_unified_t wmi_handle,
1495 					      uint8_t vdev_id);
1496 
1497 /**
1498  * wmi_unified_snr_request_cmd() - send request to fw to get RSSI stats
1499  * @wmi_handle: wmi handle
1500  * @rssi_req: get RSSI request
1501  *
1502  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1503  */
1504 QDF_STATUS wmi_unified_snr_request_cmd(wmi_unified_t wmi_handle);
1505 
1506 /**
1507  * wmi_unified_snr_cmd() - get RSSI from fw
1508  * @wmi_handle: wmi handle
1509  * @vdev_id: vdev id
1510  *
1511  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1512  */
1513 QDF_STATUS wmi_unified_snr_cmd(wmi_unified_t wmi_handle, uint8_t vdev_id);
1514 
1515 /**
1516  * wmi_unified_link_status_req_cmd() - process link status request from UMAC
1517  * @wmi_handle: wmi handle
1518  * @params: get link status params
1519  *
1520  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1521  */
1522 QDF_STATUS wmi_unified_link_status_req_cmd(wmi_unified_t wmi_handle,
1523 					   struct link_status_params *params);
1524 
1525 #ifdef WLAN_SUPPORT_GREEN_AP
1526 /**
1527  * wmi_unified_egap_conf_params_cmd() - send wmi cmd of egap config params
1528  * @wmi_handle: wmi handler
1529  * @egap_params: pointer to egap_params
1530  *
1531  * Return:	 0 for success, otherwise appropriate error code
1532  */
1533 QDF_STATUS
1534 wmi_unified_egap_conf_params_cmd(
1535 		wmi_unified_t wmi_handle,
1536 		struct wlan_green_ap_egap_params *egap_params);
1537 #endif
1538 
1539 /**
1540  * wmi_unified_csa_offload_enable() - send CSA offload enable command
1541  * @wmi_handle: wmi handle
1542  * @vdev_id: vdev id
1543  *
1544  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1545  */
1546 QDF_STATUS wmi_unified_csa_offload_enable(wmi_unified_t wmi_handle,
1547 					  uint8_t vdev_id);
1548 
1549 #ifdef WLAN_FEATURE_CIF_CFR
1550 /**
1551  * wmi_unified_oem_dma_ring_cfg() - configure OEM DMA rings
1552  * @wmi_handle: wmi handle
1553  * @data_len: len of dma cfg req
1554  * @data: dma cfg req
1555  *
1556  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1557  */
1558 QDF_STATUS
1559 wmi_unified_oem_dma_ring_cfg(wmi_unified_t wmi_handle,
1560 			     wmi_oem_dma_ring_cfg_req_fixed_param *cfg);
1561 #endif
1562 
1563 /**
1564  * wmi_unified_start_oem_data_cmd() - start oem data request to target
1565  * @wmi_handle: wmi handle
1566  * @data_len: the length of @data
1567  * @data: the pointer to data buf
1568  *
1569  * This is legacy api for oem data request, using wmi command
1570  * WMI_OEM_REQ_CMDID.
1571  *
1572  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1573  */
1574 QDF_STATUS wmi_unified_start_oem_data_cmd(wmi_unified_t wmi_handle,
1575 					  uint32_t data_len,
1576 					  uint8_t *data);
1577 
1578 #ifdef FEATURE_OEM_DATA
1579 /**
1580  * wmi_unified_start_oemv2_data_cmd() - start oem data cmd to target
1581  * @wmi_handle: wmi handle
1582  * @params: oem data params
1583  *
1584  * This is common api for oem data, using wmi command WMI_OEM_DATA_CMDID.
1585  *
1586  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1587  */
1588 QDF_STATUS wmi_unified_start_oemv2_data_cmd(wmi_unified_t wmi_handle,
1589 					    struct oem_data *params);
1590 #endif
1591 
1592 /**
1593  * wmi_unified_dfs_phyerr_filter_offload_en_cmd() - enable dfs phyerr filter
1594  * @wmi_handle: wmi handle
1595  * @dfs_phyerr_filter_offload: is dfs phyerr filter offload
1596  *
1597  * Send WMI_DFS_PHYERR_FILTER_ENA_CMDID or
1598  * WMI_DFS_PHYERR_FILTER_DIS_CMDID command
1599  * to firmware based on phyerr filtering
1600  * offload status.
1601  *
1602  * Return: 1 success, 0 failure
1603  */
1604 QDF_STATUS
1605 wmi_unified_dfs_phyerr_filter_offload_en_cmd(wmi_unified_t wmi_handle,
1606 					     bool dfs_phyerr_filter_offload);
1607 
1608 #if !defined(REMOVE_PKT_LOG) && defined(FEATURE_PKTLOG)
1609 /**
1610  * wmi_unified_pktlog_wmi_send_cmd() - send pktlog event command to target
1611  * @wmi_handle: wmi handle
1612  * @pktlog_event: pktlog event
1613  * @cmd_id: pktlog cmd id
1614  * @user_triggered: user triggered input for PKTLOG enable mode
1615  *
1616  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1617  */
1618 QDF_STATUS wmi_unified_pktlog_wmi_send_cmd(wmi_unified_t wmi_handle,
1619 					   WMI_PKTLOG_EVENT pktlog_event,
1620 					   uint32_t cmd_id,
1621 					   uint8_t user_triggered);
1622 #endif
1623 
1624 /**
1625  * wmi_unified_stats_ext_req_cmd() - request ext stats from fw
1626  * @wmi_handle: wmi handle
1627  * @preq: stats ext params
1628  *
1629  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1630  */
1631 QDF_STATUS wmi_unified_stats_ext_req_cmd(wmi_unified_t wmi_handle,
1632 					 struct stats_ext_params *preq);
1633 
1634 /**
1635  * wmi_unified_process_dhcpserver_offload_cmd() - enable DHCP server offload
1636  * @wmi_handle: wmi handle
1637  * @pDhcpSrvOffloadInfo: DHCP server offload info
1638  *
1639  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1640  */
1641 QDF_STATUS wmi_unified_process_dhcpserver_offload_cmd(
1642 		wmi_unified_t wmi_handle,
1643 		struct dhcp_offload_info_params *params);
1644 
1645 /**
1646  * wmi_unified_send_regdomain_info_to_fw_cmd() - send regdomain info to fw
1647  * @wmi_handle: wmi handle
1648  * @reg_dmn: reg domain
1649  * @regdmn2G: 2G reg domain
1650  * @regdmn5G: 5G reg domain
1651  * @ctl2G: 2G test limit
1652  * @ctl5G: 5G test limit
1653  *
1654  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1655  */
1656 QDF_STATUS wmi_unified_send_regdomain_info_to_fw_cmd(wmi_unified_t wmi_handle,
1657 						     uint32_t reg_dmn,
1658 						     uint16_t regdmn2G,
1659 						     uint16_t regdmn5G,
1660 						     uint8_t ctl2G,
1661 						     uint8_t ctl5G);
1662 
1663 QDF_STATUS
1664 wmi_unified_process_fw_mem_dump_cmd(wmi_unified_t wmi_hdl,
1665 				    struct fw_dump_req_param *mem_dump_req);
1666 
1667 /**
1668  * wmi_unified_cfg_action_frm_tb_ppdu_cmd()-send action frame TB PPDU cfg to FW
1669  * @wmi_handle: Pointer to WMi handle
1670  * @cfg_info: Pointer to cfg msg
1671  *
1672  * This function sends action frame TB PPDU cfg to firmware
1673  *
1674  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1675  *
1676  */
1677 QDF_STATUS
1678 wmi_unified_cfg_action_frm_tb_ppdu_cmd(
1679 		wmi_unified_t wmi_handle,
1680 		struct cfg_action_frm_tb_ppdu_param *cfg_info);
1681 
1682 /**
1683  * wmi_unified_save_fw_version_cmd() - save fw version
1684  * @wmi_handle: pointer to wmi handle
1685  * @evt_buf: Event buffer
1686  *
1687  *
1688  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1689  *
1690  */
1691 QDF_STATUS wmi_unified_save_fw_version_cmd(wmi_unified_t wmi_handle,
1692 					   void *evt_buf);
1693 
1694 /**
1695  * wmi_unified_log_supported_evt_cmd() - Enable/Disable FW diag/log events
1696  * @wmi_handle: wmi handle
1697  * @event: Event received from FW
1698  * @len: Length of the event
1699  *
1700  * Enables the low frequency events and disables the high frequency
1701  * events. Bit 17 indicates if the event if low/high frequency.
1702  * 1 - high frequency, 0 - low frequency
1703  *
1704  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failures
1705  */
1706 QDF_STATUS wmi_unified_log_supported_evt_cmd(wmi_unified_t wmi_handle,
1707 					     uint8_t *event,
1708 					     uint32_t len);
1709 
1710 /**
1711  * wmi_unified_enable_specific_fw_logs_cmd() - Start/Stop logging of diag log id
1712  * @wmi_handle: wmi handle
1713  * @start_log: Start logging related parameters
1714  *
1715  * Send the command to the FW based on which specific logging of diag
1716  * event/log id can be started/stopped
1717  *
1718  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1719  */
1720 QDF_STATUS
1721 wmi_unified_enable_specific_fw_logs_cmd(wmi_unified_t wmi_handle,
1722 					struct wmi_wifi_start_log *start_log);
1723 
1724 /**
1725  * wmi_unified_flush_logs_to_fw_cmd() - Send log flush command to FW
1726  * @wmi_handle: WMI handle
1727  *
1728  * This function is used to send the flush command to the FW,
1729  * that will flush the fw logs that are residue in the FW
1730  *
1731  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1732  */
1733 QDF_STATUS wmi_unified_flush_logs_to_fw_cmd(wmi_unified_t wmi_handle);
1734 
1735 /**
1736  * wmi_unified_unit_test_cmd() - send unit test command to fw.
1737  * @wmi_handle: wmi handle
1738  * @wmi_utest: unit test command
1739  *
1740  * This function send unit test command to fw.
1741  *
1742  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1743  */
1744 QDF_STATUS wmi_unified_unit_test_cmd(wmi_unified_t wmi_handle,
1745 				     struct wmi_unit_test_cmd *wmi_utest);
1746 
1747 #ifdef FEATURE_WLAN_APF
1748 /**
1749  * wmi_unified_set_active_apf_mode_cmd() - config active APF mode in FW
1750  * @wmi: the WMI handle
1751  * @vdev_id: the Id of the vdev to apply the configuration to
1752  * @ucast_mode: the active APF mode to configure for unicast packets
1753  * @mcast_bcast_mode: the active APF mode to configure for multicast/broadcast
1754  *	packets
1755  */
1756 QDF_STATUS
1757 wmi_unified_set_active_apf_mode_cmd(wmi_unified_t wmi, uint8_t vdev_id,
1758 				    enum wmi_host_active_apf_mode ucast_mode,
1759 				    enum wmi_host_active_apf_mode
1760 							      mcast_bcast_mode);
1761 
1762 /**
1763  * wmi_unified_send_apf_enable_cmd() - send apf enable/disable cmd
1764  * @wmi: wmi handle
1765  * @vdev_id: VDEV id
1766  * @enable: true: enable, false: disable
1767  *
1768  * This function passes the apf enable command to fw
1769  *
1770  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1771  */
1772 QDF_STATUS wmi_unified_send_apf_enable_cmd(wmi_unified_t wmi,
1773 					   uint32_t vdev_id, bool enable);
1774 
1775 /**
1776  * wmi_unified_send_apf_write_work_memory_cmd() - send cmd to write into the APF
1777  *	work memory.
1778  * @wmi: wmi handle
1779  * @write_params: parameters and buffer pointer for the write
1780  *
1781  * This function passes the write apf work mem command to fw
1782  *
1783  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1784  */
1785 QDF_STATUS wmi_unified_send_apf_write_work_memory_cmd(wmi_unified_t wmi,
1786 			struct wmi_apf_write_memory_params *write_params);
1787 
1788 /**
1789  * wmi_unified_send_apf_read_work_memory_cmd() - send cmd to read part of APF
1790  *	work memory
1791  * @wmi: wmi handle
1792  * @read_params: contains relative address and length to read from
1793  *
1794  * This function passes the read apf work mem command to fw
1795  *
1796  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1797  */
1798 QDF_STATUS wmi_unified_send_apf_read_work_memory_cmd(wmi_unified_t wmi,
1799 				struct wmi_apf_read_memory_params *read_params);
1800 
1801 /**
1802  * wmi_extract_apf_read_memory_resp_event() - exctract read mem resp event
1803  * @wmi: wmi handle
1804  * @evt_buf: Pointer to the event buffer
1805  * @resp: pointer to memory to extract event parameters into
1806  *
1807  * This function exctracts read mem response event into the given structure ptr
1808  *
1809  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1810  */
1811 QDF_STATUS
1812 wmi_extract_apf_read_memory_resp_event(wmi_unified_t wmi, void *evt_buf,
1813 				struct wmi_apf_read_memory_resp_event_params
1814 								*read_mem_evt);
1815 #endif /* FEATURE_WLAN_APF */
1816 
1817 /**
1818  * wmi_send_get_user_position_cmd() - send get user position command to fw
1819  * @wmi_handle: wmi handle
1820  * @value: user pos value
1821  *
1822  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1823  */
1824 QDF_STATUS
1825 wmi_send_get_user_position_cmd(wmi_unified_t wmi_handle, uint32_t value);
1826 
1827 /**
1828  * wmi_send_get_peer_mumimo_tx_count_cmd() - send get mumio tx count
1829  *                                           command to fw
1830  * @wmi_handle: wmi handle
1831  * @value: user pos value
1832  *
1833  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1834  */
1835 QDF_STATUS
1836 wmi_send_get_peer_mumimo_tx_count_cmd(wmi_unified_t wmi_handle,
1837 				      uint32_t value);
1838 
1839 /**
1840  * wmi_send_reset_peer_mumimo_tx_count_cmd() - send reset peer mumimo
1841  *                                             tx count to fw
1842  * @wmi_handle: wmi handle
1843  * @value: reset tx count value
1844  *
1845  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1846  */
1847 QDF_STATUS
1848 wmi_send_reset_peer_mumimo_tx_count_cmd(wmi_unified_t wmi_handle,
1849 					uint32_t value);
1850 
1851 /*
1852  * wmi_unified_send_btcoex_wlan_priority_cmd() - send btcoex priority commands
1853  * @wmi_handle: wmi handle
1854  * @param: wmi btcoex cfg params
1855  *
1856  * Send WMI_BTCOEX_CFG_CMDID parameters to fw.
1857  *
1858  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
1859  */
1860 QDF_STATUS
1861 wmi_unified_send_btcoex_wlan_priority_cmd(wmi_unified_t wmi_handle,
1862 					  struct btcoex_cfg_params *param);
1863 
1864 /**
1865  *  wmi_unified_send_btcoex_duty_cycle_cmd() - send btcoex duty cycle commands
1866  * @wmi_handle: wmi handle
1867  * @param: wmi btcoex cfg params
1868  *
1869  * Send WMI_BTCOEX_CFG_CMDID parameters to fw.
1870  *
1871  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
1872  */
1873 QDF_STATUS
1874 wmi_unified_send_btcoex_duty_cycle_cmd(wmi_unified_t wmi_handle,
1875 				       struct btcoex_cfg_params *param);
1876 
1877 /**
1878  * wmi_unified_send_coex_ver_cfg_cmd() - send coex ver cfg command
1879  * @wmi_handle: wmi handle
1880  * @param: wmi coex ver cfg params
1881  *
1882  * Send WMI_COEX_VERSION_CFG_CMID parameters to fw.
1883  *
1884  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
1885  */
1886 QDF_STATUS
1887 wmi_unified_send_coex_ver_cfg_cmd(wmi_unified_t wmi_handle,
1888 				  coex_ver_cfg_t *param);
1889 
1890 /**
1891  * wmi_unified_send_coex_config_cmd() - send coex ver cfg command
1892  * @wmi_handle: wmi handle
1893  * @param: wmi coex cfg cmd params
1894  *
1895  * Send WMI_COEX_CFG_CMD parameters to fw.
1896  *
1897  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
1898  */
1899 QDF_STATUS
1900 wmi_unified_send_coex_config_cmd(wmi_unified_t wmi_handle,
1901 				 struct coex_config_params *param);
1902 
1903 /**
1904  *  wmi_unified_pdev_fips_cmd_send() - WMI pdev fips cmd function
1905  *  @wmi_handle: handle to WMI.
1906  *  @param: pointer to hold pdev fips param
1907  *
1908  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1909  */
1910 QDF_STATUS
1911 wmi_unified_pdev_fips_cmd_send(wmi_unified_t wmi_handle,
1912 			       struct fips_params *param);
1913 
1914 #ifdef WLAN_FEATURE_DISA
1915 /**
1916  * wmi_unified_encrypt_decrypt_send_cmd() - send encryptdecrypt cmd to fw
1917  * @wmi_handle: wmi handle
1918  * @params: encrypt/decrypt params
1919  *
1920  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1921  */
1922 QDF_STATUS
1923 wmi_unified_encrypt_decrypt_send_cmd(void *wmi_hdl,
1924 				     struct disa_encrypt_decrypt_req_params
1925 				     *params);
1926 #endif /* WLAN_FEATURE_DISA */
1927 
1928 /**
1929  *  wmi_unified_wlan_profile_enable_cmd_send() - WMI wlan profile enable
1930  *						 cmd function
1931  *  @wmi_handle: handle to WMI.
1932  *  @param: pointer to hold wlan profile param
1933  *
1934  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1935  */
1936 QDF_STATUS
1937 wmi_unified_wlan_profile_enable_cmd_send(wmi_unified_t wmi_handle,
1938 					 struct wlan_profile_params *param);
1939 
1940 /**
1941  *  wmi_unified_wlan_profile_trigger_cmd_send() - WMI wlan profile trigger
1942  *						  cmd function
1943  *  @wmi_handle: handle to WMI.
1944  *  @param: pointer to hold wlan profile param
1945  *
1946  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1947  */
1948 QDF_STATUS
1949 wmi_unified_wlan_profile_trigger_cmd_send(wmi_unified_t wmi_handle,
1950 					  struct wlan_profile_params *param);
1951 
1952 /**
1953  *  wmi_unified_wlan_profile_hist_intvl_cmd_send() - WMI wlan profile history
1954  *						  cmd function
1955  *  @wmi_handle: handle to WMI.
1956  *  @param: pointer to hold wlan profile param
1957  *
1958  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1959  */
1960 QDF_STATUS
1961 wmi_unified_wlan_profile_hist_intvl_cmd_send(wmi_unified_t wmi_handle,
1962 					     struct wlan_profile_params *param);
1963 
1964 /**
1965  *  wmi_unified_set_chan_cmd_send() - WMI set channel cmd function
1966  *  @wmi_handle: handle to WMI.
1967  *  @param: pointer to hold channel param
1968  *
1969  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1970  */
1971 QDF_STATUS
1972 wmi_unified_set_chan_cmd_send(wmi_unified_t wmi_handle,
1973 			      struct channel_param *param);
1974 
1975 /**
1976  *  wmi_unified_set_ratepwr_table_cmd_send() - WMI ratepwr table cmd function
1977  *  @wmi_handle: handle to WMI.
1978  *  @param: pointer to hold ratepwr table param
1979  *
1980  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1981  */
1982 QDF_STATUS
1983 wmi_unified_set_ratepwr_table_cmd_send(wmi_unified_t wmi_handle,
1984 				       struct ratepwr_table_params *param);
1985 
1986 /**
1987  *  wmi_unified_get_ratepwr_table_cmd_send() - WMI ratepwr table cmd function
1988  *  @wmi_handle: handle to WMI.
1989  *
1990  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1991  */
1992 QDF_STATUS wmi_unified_get_ratepwr_table_cmd_send(wmi_unified_t wmi_handle);
1993 
1994 /**
1995  *  wmi_unified_set_ratepwr_chainmsk_cmd_send() - WMI ratepwr
1996  *  chainmsk cmd function
1997  *  @wmi_handle: handle to WMI.
1998  *  @param: pointer to hold ratepwr chainmsk param
1999  *
2000  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2001  */
2002 QDF_STATUS
2003 wmi_unified_set_ratepwr_chainmsk_cmd_send(wmi_unified_t wmi_handle,
2004 					  struct ratepwr_chainmsk_params
2005 					  *param);
2006 
2007 /**
2008  *  wmi_unified_set_macaddr_cmd_send() - WMI set macaddr cmd function
2009  *  @wmi_handle: handle to WMI.
2010  *  @param: pointer to hold macaddr param
2011  *
2012  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2013  */
2014 QDF_STATUS wmi_unified_set_macaddr_cmd_send(wmi_unified_t wmi_handle,
2015 					    struct macaddr_params *param);
2016 
2017 /**
2018  *  wmi_unified_pdev_scan_start_cmd_send() - WMI pdev scan start cmd function
2019  *  @wmi_handle: handle to WMI.
2020  *
2021  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2022  */
2023 QDF_STATUS wmi_unified_pdev_scan_start_cmd_send(wmi_unified_t wmi_handle);
2024 
2025 /**
2026  *  wmi_unified_pdev_scan_end_cmd_send() - WMI pdev scan end cmd function
2027  *  @wmi_handle: handle to WMI.
2028  *
2029  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2030  */
2031 QDF_STATUS wmi_unified_pdev_scan_end_cmd_send(wmi_unified_t wmi_handle);
2032 
2033 /**
2034  *  wmi_unified_set_acparams_cmd_send() - WMI set acparams cmd function
2035  *  @wmi_handle: handle to WMI.
2036  *  @param: pointer to hold acparams param
2037  *
2038  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2039  */
2040 QDF_STATUS
2041 wmi_unified_set_acparams_cmd_send(wmi_unified_t wmi_handle,
2042 				  struct acparams_params *param);
2043 
2044 /**
2045  *  wmi_unified_set_vap_dscp_tid_map_cmd_send() - WMI set vap dscp
2046  *  tid map cmd function
2047  *  @wmi_handle: handle to WMI.
2048  *  @param: pointer to hold dscp param
2049  *
2050  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2051  */
2052 QDF_STATUS
2053 wmi_unified_set_vap_dscp_tid_map_cmd_send(
2054 			wmi_unified_t wmi_handle,
2055 			struct vap_dscp_tid_map_params *param);
2056 
2057 /**
2058  *  wmi_unified_proxy_ast_reserve_cmd_send() - WMI proxy ast
2059  *  reserve cmd function
2060  *  @wmi_handle: handle to WMI.
2061  *  @param: pointer to hold ast param
2062  *
2063  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2064  */
2065 QDF_STATUS
2066 wmi_unified_proxy_ast_reserve_cmd_send(wmi_unified_t wmi_handle,
2067 				       struct proxy_ast_reserve_params *param);
2068 
2069 /**
2070  *  wmi_unified_set_bridge_mac_addr_cmd_send() - WMI set bridge mac
2071  *  addr cmd function
2072  *  @wmi_handle: handle to WMI.
2073  *  @param: pointer to hold bridge mac addr param
2074  *
2075  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2076  */
2077 QDF_STATUS wmi_unified_set_bridge_mac_addr_cmd_send(
2078 			wmi_unified_t wmi_handle,
2079 			struct set_bridge_mac_addr_params *param);
2080 
2081 /**
2082  *  wmi_unified_phyerr_enable_cmd_send() - WMI phyerr enable cmd function
2083  *  @wmi_handle: handle to WMI.
2084  *  @param: pointer to hold phyerr enable param
2085  *
2086  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2087  */
2088 QDF_STATUS wmi_unified_phyerr_enable_cmd_send(wmi_unified_t wmi_handle);
2089 
2090 /**
2091  *  wmi_unified_phyerr_disable_cmd_send() - WMI phyerr disable cmd function
2092  *  @wmi_handle: handle to WMI.
2093  *  @param: pointer to hold phyerr disable param
2094  *
2095  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2096  */
2097 QDF_STATUS wmi_unified_phyerr_disable_cmd_send(wmi_unified_t wmi_handle);
2098 
2099 /**
2100  *  wmi_unified_smart_ant_enable_tx_feedback_cmd_send() -
2101  *					WMI set tx antenna function
2102  *  @wmi_handle: handle to WMI.
2103  *  @param: pointer to hold antenna param
2104  *
2105  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2106  */
2107 QDF_STATUS wmi_unified_smart_ant_enable_tx_feedback_cmd_send(
2108 			wmi_unified_t wmi_handle,
2109 			struct smart_ant_enable_tx_feedback_params *param);
2110 
2111 #ifdef WLAN_IOT_SIM_SUPPORT
2112 /**
2113  *  wmi_unified_simulation_test_cmd_send() -
2114  *  WMI simulation test command
2115  *  @wmi_handle: handle to WMI.
2116  *  @param: pointer to hold simulation test param
2117  *
2118  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2119  */
2120 QDF_STATUS wmi_unified_simulation_test_cmd_send(wmi_unified_t wmi_handle,
2121 						struct simulation_test_params
2122 						*param);
2123 #endif
2124 
2125 /**
2126  *  wmi_unified_vdev_spectral_configure_cmd_send() -
2127  *					WMI set spectral config function
2128  *  @wmi_handle: handle to WMI.
2129  *  @param: pointer to hold spectral config param
2130  *
2131  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2132  */
2133 QDF_STATUS wmi_unified_vdev_spectral_configure_cmd_send(
2134 			wmi_unified_t wmi_handle,
2135 			struct vdev_spectral_configure_params *param);
2136 
2137 /**
2138  *  wmi_unified_vdev_spectral_enable_cmd_send() - WMI enable spectral function
2139  *  @wmi_handle: handle to WMI.
2140  *  @param: pointer to hold enable spectral param
2141  *
2142  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2143  */
2144 QDF_STATUS wmi_unified_vdev_spectral_enable_cmd_send(
2145 			wmi_unified_t wmi_handle,
2146 			struct vdev_spectral_enable_params *param);
2147 
2148 #ifdef WLAN_CONV_SPECTRAL_ENABLE
2149 /**
2150  *  wmi_extract_pdev_sscan_fw_cmd_fixed_param() - Extract fixed params
2151  *  from start scan response event
2152  *  @wmi_handle: handle to WMI.
2153  *  @evt_buf: Event buffer
2154  *  @param: pointer to hold fixed params from fw params event
2155  *
2156  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2157  */
2158 QDF_STATUS wmi_extract_pdev_sscan_fw_cmd_fixed_param(
2159 			wmi_unified_t wmi_handle,
2160 			uint8_t *evt_buf,
2161 			struct spectral_startscan_resp_params *param);
2162 
2163 /**
2164  *  wmi_extract_pdev_sscan_fft_bin_index() - Extract FFT bin indexes
2165  *  from start scan response event
2166  *  @wmi_handle: handle to WMI.
2167  *  @evt_buf: Event buffer
2168  *  @param: pointer to hold FFT bin indexes from fw params event
2169  *
2170  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2171  */
2172 QDF_STATUS wmi_extract_pdev_sscan_fft_bin_index(
2173 			wmi_unified_t wmi_handle,
2174 			uint8_t *evt_buf,
2175 			struct spectral_fft_bin_markers_160_165mhz *param);
2176 #endif /* WLAN_CONV_SPECTRAL_ENABLE */
2177 
2178 #if defined(WLAN_SUPPORT_FILS) || defined(CONFIG_BAND_6GHZ)
2179 /**
2180  *  wmi_unified_vdev_fils_enable_cmd_send() - WMI send fils enable command
2181  *  @param wmi_handle: handle to WMI.
2182  *  @param config_fils_params: fils enable parameters
2183  *
2184  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2185  */
2186 QDF_STATUS
2187 wmi_unified_vdev_fils_enable_cmd_send(struct wmi_unified *wmi_handle,
2188 				      struct config_fils_params *param);
2189 #endif
2190 
2191 /**
2192  *  wmi_unified_bss_chan_info_request_cmd_send() - WMI bss chan info
2193  *  request function
2194  *  @wmi_handle: handle to WMI.
2195  *  @param: pointer to hold chan info param
2196  *
2197  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2198  */
2199 QDF_STATUS wmi_unified_bss_chan_info_request_cmd_send(
2200 			wmi_unified_t wmi_handle,
2201 			struct bss_chan_info_request_params *param);
2202 
2203 /**
2204  *  wmi_unified_thermal_mitigation_param_cmd_send() -
2205  *					WMI thermal mitigation function
2206  *  @wmi_handle: handle to WMI.
2207  *  @param: pointer to hold thermal mitigation param
2208  *
2209  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2210  */
2211 QDF_STATUS wmi_unified_thermal_mitigation_param_cmd_send(
2212 			wmi_unified_t wmi_handle,
2213 			struct thermal_mitigation_params *param);
2214 
2215 /**
2216  *  wmi_unified_vdev_set_fwtest_param_cmd_send() - WMI set fwtest function
2217  *  @wmi_handle: handle to WMI.
2218  *  @param: pointer to hold fwtest param
2219  *
2220  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2221  */
2222 QDF_STATUS wmi_unified_vdev_set_fwtest_param_cmd_send(
2223 			wmi_unified_t wmi_handle,
2224 			struct set_fwtest_params *param);
2225 
2226 /**
2227  *  wmi_unified_vdev_set_custom_aggr_size_cmd_send() - WMI set custom aggr
2228  *						       size command
2229  *  @wmi_handle: handle to WMI.
2230  *  @param: pointer to hold custom aggr size param
2231  *
2232  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2233  */
2234 QDF_STATUS wmi_unified_vdev_set_custom_aggr_size_cmd_send(
2235 		wmi_unified_t wmi_handle,
2236 		struct set_custom_aggr_size_params *param);
2237 
2238 /**
2239  *  wmi_unified_vdev_set_qdepth_thresh_cmd_send() - WMI set qdepth threshold
2240  *  @wmi_handle: handle to WMI.
2241  *  @param: pointer to hold set qdepth thresh param
2242  *
2243  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2244  */
2245 QDF_STATUS wmi_unified_vdev_set_qdepth_thresh_cmd_send(
2246 		wmi_unified_t wmi_handle,
2247 		struct set_qdepth_thresh_params *param);
2248 
2249 /**
2250  *  wmi_unified_pdev_set_regdomain_params_cmd_send() - WMI set regdomain
2251  *  function
2252  *  @wmi_handle: handle to WMI.
2253  *  @param: pointer to hold regdomain param
2254  *
2255  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2256  */
2257 QDF_STATUS wmi_unified_pdev_set_regdomain_cmd_send(
2258 			wmi_unified_t wmi_handle,
2259 			struct pdev_set_regdomain_params *param);
2260 
2261 /**
2262  *  wmi_unified_set_beacon_filter_cmd_send() - WMI set beacon filter function
2263  *  @wmi_handle: handle to WMI.
2264  *  @param: pointer to hold beacon filter param
2265  *
2266  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2267  */
2268 QDF_STATUS wmi_unified_set_beacon_filter_cmd_send(
2269 			wmi_unified_t wmi_handle,
2270 			struct set_beacon_filter_params *param);
2271 
2272 /**
2273  *  wmi_unified_remove_beacon_filter_cmd_send() - WMI set beacon filter function
2274  *  @wmi_handle: handle to WMI.
2275  *  @param: pointer to hold beacon filter param
2276  *
2277  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2278  */
2279 QDF_STATUS wmi_unified_remove_beacon_filter_cmd_send(
2280 			wmi_unified_t wmi_handle,
2281 			struct remove_beacon_filter_params *param);
2282 
2283 /**
2284  *  wmi_unified_addba_clearresponse_cmd_send() - WMI addba resp cmd function
2285  *  @wmi_handle: handle to WMI.
2286  *  @macaddr: MAC address
2287  *  @param: pointer to hold addba resp parameter
2288  *
2289  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2290  */
2291 QDF_STATUS wmi_unified_addba_clearresponse_cmd_send(
2292 			wmi_unified_t wmi_handle,
2293 			uint8_t macaddr[QDF_MAC_ADDR_SIZE],
2294 			struct addba_clearresponse_params *param);
2295 
2296 /**
2297  *  wmi_unified_addba_send_cmd_send() - WMI addba send function
2298  *  @wmi_handle: handle to WMI.
2299  *  @macaddr: MAC address
2300  *  @param: pointer to hold addba parameter
2301  *
2302  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2303  */
2304 QDF_STATUS
2305 wmi_unified_addba_send_cmd_send(wmi_unified_t wmi_handle,
2306 				uint8_t macaddr[QDF_MAC_ADDR_SIZE],
2307 				struct addba_send_params *param);
2308 
2309 /**
2310  *  wmi_unified_delba_send_cmd_send() - WMI delba cmd function
2311  *  @wmi_handle: handle to WMI.
2312  *  @macaddr: MAC address
2313  *  @param: pointer to hold delba parameter
2314  *
2315  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2316  */
2317 QDF_STATUS
2318 wmi_unified_delba_send_cmd_send(wmi_unified_t wmi_handle,
2319 				uint8_t macaddr[QDF_MAC_ADDR_SIZE],
2320 				struct delba_send_params *param);
2321 
2322 /**
2323  *  wmi_unified_addba_setresponse_cmd_send() - WMI addba set resp cmd function
2324  *  @wmi_handle: handle to WMI.
2325  *  @macaddr: MAC address
2326  *  @param: pointer to hold addba set resp parameter
2327  *
2328  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2329  */
2330 QDF_STATUS
2331 wmi_unified_addba_setresponse_cmd_send(wmi_unified_t wmi_handle,
2332 				       uint8_t macaddr[QDF_MAC_ADDR_SIZE],
2333 				       struct addba_setresponse_params *param);
2334 
2335 /**
2336  *  wmi_unified_singleamsdu_cmd_send() - WMI singleamsdu function
2337  *  @wmi_handle: handle to WMI.
2338  *  @macaddr: MAC address
2339  *  @param: pointer to hold singleamsdu parameter
2340  *
2341  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2342  */
2343 QDF_STATUS
2344 wmi_unified_singleamsdu_cmd_send(wmi_unified_t wmi_handle,
2345 				 uint8_t macaddr[QDF_MAC_ADDR_SIZE],
2346 				 struct singleamsdu_params *param);
2347 
2348 /**
2349  *  wmi_unified_mu_scan_cmd_send() - WMI set mu scan function
2350  *  @wmi_handle: handle to WMI.
2351  *  @param: pointer to hold mu scan param
2352  *
2353  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2354  */
2355 QDF_STATUS
2356 wmi_unified_mu_scan_cmd_send(wmi_unified_t wmi_handle,
2357 			     struct mu_scan_params *param);
2358 
2359 /**
2360  *  wmi_unified_lteu_config_cmd_send() - WMI set mu scan function
2361  *  @wmi_handle: handle to WMI.
2362  *  @param: pointer to hold mu scan param
2363  *
2364  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2365  */
2366 QDF_STATUS
2367 wmi_unified_lteu_config_cmd_send(wmi_unified_t wmi_handle,
2368 				 struct lteu_config_params *param);
2369 
2370 /**
2371  *  wmi_unified_set_psmode_cmd_send() - WMI set mu scan function
2372  *  @wmi_handle: handle to WMI.
2373  *  @param: pointer to hold mu scan param
2374  *
2375  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2376  */
2377 QDF_STATUS
2378 wmi_unified_set_psmode_cmd_send(wmi_unified_t wmi_handle,
2379 				struct set_ps_mode_params *param);
2380 
2381 /**
2382  * wmi_unified_init_cmd_send() - send initialization cmd to fw
2383  * @wmi_handle: wmi handle
2384  * @param: pointer to wmi init param
2385  *
2386  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2387  */
2388 QDF_STATUS
2389 wmi_unified_init_cmd_send(wmi_unified_t wmi_handle,
2390 			  struct wmi_init_cmd_param *param);
2391 
2392 /**
2393  * wmi_service_enabled() - Check if service enabled
2394  * @wmi_handle: wmi handle
2395  * @service_id: service identifier
2396  *
2397  * Return: 1 enabled, 0 disabled
2398  */
2399 bool wmi_service_enabled(wmi_unified_t wmi_handle, uint32_t service_id);
2400 
2401 /**
2402  * wmi_save_service_bitmap() - save service bitmap
2403  * @wmi_handle: wmi handle
2404  * @evt_buf: pointer to event buffer
2405  * @bitmap_buf: bitmap buffer
2406  *
2407  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS failure code
2408  */
2409 QDF_STATUS wmi_save_service_bitmap(wmi_unified_t wmi_handle, void *evt_buf,
2410 				   void *bitmap_buf);
2411 
2412 /**
2413  * wmi_save_ext_service_bitmap() - save extended service bitmap
2414  * @wmi_handle: wmi handle
2415  * @evt_buf: pointer to event buffer
2416  *
2417  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS failure code
2418  */
2419 QDF_STATUS wmi_save_ext_service_bitmap(wmi_unified_t wmi_handle, void *evt_buf,
2420 				       void *bitmap_buf);
2421 
2422 /**
2423  * wmi_save_fw_version() - Save fw version
2424  * @wmi_handle: wmi handle
2425  * @evt_buf: pointer to event buffer
2426  *
2427  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2428  */
2429 QDF_STATUS wmi_save_fw_version(wmi_unified_t wmi_handle, void *evt_buf);
2430 
2431 /**
2432  * wmi_get_target_cap_from_service_ready() - extract service ready event
2433  * @wmi_handle: wmi handle
2434  * @evt_buf: pointer to received event buffer
2435  * @ev: pointer to hold target capability information extracted from even
2436  *
2437  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2438  */
2439 QDF_STATUS wmi_get_target_cap_from_service_ready(
2440 		wmi_unified_t wmi_handle, void *evt_buf,
2441 		struct wlan_psoc_target_capability_info *ev);
2442 
2443 /**
2444  * wmi_extract_hal_reg_cap() - extract HAL registered capabilities
2445  * @wmi_handle: wmi handle
2446  * @evt_buf: Pointer to event buffer
2447  * @hal_reg_cap: pointer to hold HAL reg capabilities
2448  *
2449  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2450  */
2451 QDF_STATUS
2452 wmi_extract_hal_reg_cap(wmi_unified_t wmi_handle, void *evt_buf,
2453 			struct wlan_psoc_hal_reg_capability *hal_reg_cap);
2454 
2455 /**
2456  * wmi_extract_hal_reg_cap_ext2() - Extract HAL reg capabilities from service
2457  * ready ext2 event
2458  * @wmi_handle: wmi handle
2459  * @evt_buf: Pointer to event buffer
2460  * @phy_idx: Phy id
2461  * @wireless_modes: 11AX wireless modes
2462  * @hal_reg_cap: pointer to hold HAL reg capabilities ext2 structure
2463  *
2464  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2465  */
2466 QDF_STATUS
2467 wmi_extract_hal_reg_cap_ext2(
2468 		wmi_unified_t wmi_handle, void *evt_buf, uint8_t phy_idx,
2469 		struct wlan_psoc_host_hal_reg_capabilities_ext2 *hal_reg_cap);
2470 
2471 /**
2472  * wmi_extract_num_mem_reqs_from_service_ready() - Extract number of memory
2473  *                                                 entries requested
2474  * @wmi_handle: wmi handle
2475  * @evt_buf: pointer to event buffer
2476  *
2477  * Return: Number of entries requested
2478  */
2479 uint32_t wmi_extract_num_mem_reqs_from_service_ready(
2480 		wmi_unified_t wmi_handle,
2481 		void *evt_buf);
2482 
2483 /**
2484  * wmi_extract_host_mem_req_from_service_ready() - Extract host memory
2485  *                                                 request event
2486  * @wmi_handle: wmi handle
2487  * @evt_buf: pointer to event buffer
2488  * @mem_reqs: pointer to host memory request structure
2489  * @num_active_peers: number of active peers for peer cache
2490  * @num_peers: number of peers
2491  * @fw_prio: FW priority
2492  * @idx: Index for memory request
2493  *
2494  * Return: Host memory request parameters requested by target
2495  */
2496 QDF_STATUS wmi_extract_host_mem_req_from_service_ready(
2497 		wmi_unified_t wmi_handle, void *evt_buf, host_mem_req *mem_reqs,
2498 		uint32_t num_active_peers, uint32_t num_peers,
2499 		enum wmi_fw_mem_prio fw_prio, uint16_t idx);
2500 
2501 /**
2502  * wmi_ready_extract_init_status() - Extract init status from ready event
2503  * @wmi_handle: wmi handle
2504  * @ev: Pointer to event buffer
2505  *
2506  * Return: ready status
2507  */
2508 uint32_t wmi_ready_extract_init_status(wmi_unified_t wmi_handle, void *ev);
2509 
2510 /**
2511  * wmi_ready_extract_mac_addr() - extract mac address from ready event
2512  * @wmi_handle: wmi handle
2513  * @ev: pointer to event buffer
2514  * @macaddr: Pointer to hold MAC address
2515  *
2516  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2517  */
2518 QDF_STATUS wmi_ready_extract_mac_addr(wmi_unified_t wmi_handle,
2519 				      void *ev, uint8_t *macaddr);
2520 
2521 /**
2522  * wmi_ready_extract_mac_addr() - extract MAC address list from ready event
2523  * @wmi_handle: wmi handle
2524  * @ev: pointer to event buffer
2525  * @num_mac_addr: Pointer to number of entries
2526  *
2527  * Return: address to start of mac addr list
2528  */
2529 wmi_host_mac_addr
2530 *wmi_ready_extract_mac_addr_list(wmi_unified_t wmi_handle, void *ev,
2531 				 uint8_t *num_mac_addr);
2532 
2533 /**
2534  * wmi_extract_ready_params() - Extract data from ready event apart from
2535  *                     status, macaddr and version.
2536  * @wmi_handle: Pointer to WMI handle.
2537  * @evt_buf: Pointer to Ready event buffer.
2538  * @ev_param: Pointer to host defined struct to copy the data from event.
2539  *
2540  * Return: QDF_STATUS_SUCCESS on success.
2541  */
2542 QDF_STATUS wmi_extract_ready_event_params(
2543 		wmi_unified_t wmi_handle, void *evt_buf,
2544 		struct wmi_host_ready_ev_param *ev_param);
2545 
2546 /**
2547  * wmi_extract_fw_version() - extract fw version
2548  * @wmi_handle: wmi handle
2549  * @ev: pointer to event buffer
2550  * @fw_ver: Pointer to hold fw version
2551  *
2552  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2553  */
2554 QDF_STATUS wmi_extract_fw_version(wmi_unified_t wmi_handle, void *ev,
2555 				  struct wmi_host_fw_ver *fw_ver);
2556 
2557 /**
2558  * wmi_extract_fw_abi_version() - extract fw abi version
2559  * @wmi_handle: wmi handle
2560  * @ev: Pointer to event buffer
2561  * @fw_ver: Pointer to hold fw abi version
2562  *
2563  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2564  */
2565 QDF_STATUS wmi_extract_fw_abi_version(wmi_unified_t wmi_handle, void *ev,
2566 				      struct wmi_host_fw_abi_ver *fw_ver);
2567 
2568 /**
2569  * wmi_check_and_update_fw_version() - Ready and fw version check
2570  * @wmi_handle: wmi handle
2571  * @ev: pointer to event buffer
2572  *
2573  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2574  */
2575 QDF_STATUS wmi_check_and_update_fw_version(wmi_unified_t wmi_handle, void *ev);
2576 
2577 /**
2578  * wmi_extract_dbglog_data_len() - extract debuglog data length
2579  * @wmi_handle: wmi handle
2580  * @evt_b: pointer to event buffer
2581  * @len:  length of buffer
2582  *
2583  * Return: length
2584  */
2585 uint8_t *wmi_extract_dbglog_data_len(wmi_unified_t wmi_handle,
2586 				     void *evt_b, uint32_t *len);
2587 
2588 /**
2589  * wmi_send_ext_resource_config() - send extended resource configuration
2590  * @wmi_handle: wmi handle
2591  * @ext_cfg: pointer to extended resource configuration
2592  *
2593  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2594  */
2595 QDF_STATUS wmi_send_ext_resource_config(wmi_unified_t wmi_handle,
2596 					wmi_host_ext_resource_config *ext_cfg);
2597 
2598 /**
2599  *  wmi_unified_rtt_meas_req_test_cmd_send() - WMI rtt meas req test function
2600  *  @wmi_handle: handle to WMI.
2601  *  @param: pointer to hold rtt meas req test param
2602  *
2603  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2604  */
2605 QDF_STATUS
2606 wmi_unified_rtt_meas_req_test_cmd_send(wmi_unified_t wmi_handle,
2607 				       struct rtt_meas_req_test_params *param);
2608 
2609 /**
2610  *  wmi_unified_rtt_meas_req_cmd_send() - WMI rtt meas req function
2611  *  @wmi_handle: handle to WMI.
2612  *  @param: pointer to hold rtt meas req param
2613  *
2614  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2615  */
2616 QDF_STATUS
2617 wmi_unified_rtt_meas_req_cmd_send(wmi_unified_t wmi_handle,
2618 				  struct rtt_meas_req_params *param);
2619 
2620 /**
2621  *  wmi_unified_rtt_keepalive_req_cmd_send() - WMI rtt meas req test function
2622  *  @wmi_handle: handle to WMI.
2623  *  @param: pointer to hold rtt meas req test param
2624  *
2625  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2626  */
2627 QDF_STATUS
2628 wmi_unified_rtt_keepalive_req_cmd_send(wmi_unified_t wmi_handle,
2629 				       struct rtt_keepalive_req_params *param);
2630 
2631 /**
2632  *  wmi_unified_lci_set_cmd_send() - WMI lci set function
2633  *  @wmi_handle: handle to WMI.
2634  *  @param: pointer to hold lci param
2635  *
2636  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2637  */
2638 QDF_STATUS wmi_unified_lci_set_cmd_send(wmi_unified_t wmi_handle,
2639 					struct lci_set_params *param);
2640 
2641 /**
2642  *  wmi_unified_lcr_set_cmd_send() - WMI lcr set function
2643  *  @wmi_handle: handle to WMI.
2644  *  @param: pointer to hold lcr param
2645  *
2646  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2647  */
2648 QDF_STATUS wmi_unified_lcr_set_cmd_send(wmi_unified_t wmi_handle,
2649 					struct lcr_set_params *param);
2650 
2651 /**
2652  * wmi_unified_extract_pn() - extract pn event data
2653  * @wmi_handle: wmi handle
2654  * @evt_buf: pointer to event buffer
2655  * @param: pointer to get pn event param
2656  *
2657  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2658  */
2659 QDF_STATUS wmi_unified_extract_pn(wmi_unified_t wmi_hdl, void *evt_buf,
2660 			  struct wmi_host_get_pn_event *param);
2661 
2662 /**
2663  * wmi_unified_send_periodic_chan_stats_config_cmd() - send periodic chan
2664  * stats cmd to fw
2665  * @wmi_handle: wmi handle
2666  * @param: pointer to hold periodic chan stats param
2667  *
2668  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2669  */
2670 QDF_STATUS wmi_unified_send_periodic_chan_stats_config_cmd(
2671 		wmi_unified_t wmi_handle,
2672 		struct periodic_chan_stats_params *param);
2673 
2674 /* Extract APIs */
2675 
2676 /**
2677  * wmi_extract_fips_event_data() - extract fips event data
2678  * @wmi_handle: wmi handle
2679  * @evt_buf: pointer to event buffer
2680  * @param: pointer to FIPS event param
2681  *
2682  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2683  */
2684 QDF_STATUS
2685 wmi_extract_fips_event_data(wmi_unified_t wmi_handle, void *evt_buf,
2686 			    struct wmi_host_fips_event_param *param);
2687 
2688 #ifdef WLAN_FEATURE_DISA
2689 /**
2690  * wmi_extract_encrypt_decrypt_resp_params() -
2691  *       extract encrypt decrypt resp params from event buffer
2692  * @wmi_handle: wmi handle
2693  * @evt_buf: pointer to event buffer
2694  * @resp: encrypt decrypt resp params
2695  *
2696  * Return: QDF_STATUS_SUCCESS for success or error code
2697  */
2698 QDF_STATUS
2699 wmi_extract_encrypt_decrypt_resp_params(void *wmi_hdl, void *evt_buf,
2700 					struct disa_encrypt_decrypt_resp_params
2701 					*param);
2702 #endif /* WLAN_FEATURE_DISA */
2703 
2704 /**
2705  * wmi_extract_mgmt_rx_params() - extract management rx params from event
2706  * @wmi_handle: wmi handle
2707  * @evt_buf: pointer to event buffer
2708  * @hdr: Pointer to hold header
2709  * @bufp: Pointer to hold pointer to rx param buffer
2710  *
2711  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2712  */
2713 QDF_STATUS
2714 wmi_extract_mgmt_rx_params(wmi_unified_t wmi_handle, void *evt_buf,
2715 			   struct mgmt_rx_event_params *hdr, uint8_t **bufp);
2716 
2717 /**
2718  * wmi_extract_vdev_roam_param() - extract vdev roam param from event
2719  * @wmi_handle: wmi handle
2720  * @evt_buf: pointer to event buffer
2721  * @ev: Pointer to hold roam param
2722  *
2723  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2724  */
2725 QDF_STATUS
2726 wmi_extract_vdev_roam_param(wmi_unified_t wmi_handle, void *evt_buf,
2727 			    wmi_host_roam_event *ev);
2728 
2729 /**
2730  * wmi_extract_vdev_scan_ev_param() - extract vdev scan param from event
2731  * @wmi_handle: wmi handle
2732  * @evt_buf: pointer to event buffer
2733  * @param: Pointer to hold vdev scan param
2734  *
2735  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2736  */
2737 QDF_STATUS
2738 wmi_extract_vdev_scan_ev_param(wmi_unified_t wmi_handle, void *evt_buf,
2739 			       struct scan_event *param);
2740 
2741 #ifdef FEATURE_WLAN_SCAN_PNO
2742 /**
2743  * wmi_extract_nlo_match_ev_param() - extract NLO match param from event
2744  * @wmi_handle: pointer to WMI handle
2745  * @evt_buf: pointer to WMI event buffer
2746  * @param: pointer to scan event param for NLO match
2747  *
2748  * Return: QDF_STATUS_SUCCESS for success or error code
2749  */
2750 QDF_STATUS
2751 wmi_extract_nlo_match_ev_param(wmi_unified_t wmi_handle, void *evt_buf,
2752 			       struct scan_event *param);
2753 
2754 /**
2755  * wmi_extract_nlo_complete_ev_param() - extract NLO complete param from event
2756  * @wmi_handle: pointer to WMI handle
2757  * @evt_buf: pointer to WMI event buffer
2758  * @param: pointer to scan event param for NLO complete
2759  *
2760  * Return: QDF_STATUS_SUCCESS for success or error code
2761  */
2762 QDF_STATUS
2763 wmi_extract_nlo_complete_ev_param(wmi_unified_t wmi_handle, void *evt_buf,
2764 				  struct scan_event *param);
2765 #endif
2766 
2767 /**
2768  * wmi_extract_mu_ev_param() - extract mu param from event
2769  * @wmi_handle: wmi handle
2770  * @evt_buf: pointer to event buffer
2771  * @param: Pointer to hold mu report
2772  *
2773  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2774  */
2775 QDF_STATUS
2776 wmi_extract_mu_ev_param(wmi_unified_t wmi_handle, void *evt_buf,
2777 			wmi_host_mu_report_event *param);
2778 
2779 /**
2780  * wmi_extract_mu_db_entry() - extract mu db entry from event
2781  * @wmi_handle: wmi handle
2782  * @evt_buf: pointer to event buffer
2783  * @idx: index
2784  * @param: Pointer to hold mu db entry
2785  *
2786  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2787  */
2788 QDF_STATUS
2789 wmi_extract_mu_db_entry(wmi_unified_t wmi_handle, void *evt_buf,
2790 			uint8_t idx, wmi_host_mu_db_entry *param);
2791 
2792 /**
2793  * wmi_extract_mumimo_tx_count_ev_param() - extract mumimo tx count from event
2794  * @wmi_handle: wmi handle
2795  * @evt_buf: pointer to event buffer
2796  * @param: Pointer to hold mumimo tx count
2797  *
2798  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2799  */
2800 QDF_STATUS
2801 wmi_extract_mumimo_tx_count_ev_param(wmi_unified_t wmi_handle, void *evt_buf,
2802 				     wmi_host_peer_txmu_cnt_event *param);
2803 
2804 /**
2805  * wmi_extract_peer_gid_userpos_list_ev_param() - extract peer userpos list
2806  *                                                from event
2807  * @wmi_handle: wmi handle
2808  * @evt_buf: pointer to event buffer
2809  * @param: Pointer to hold peer gid userposition list
2810  *
2811  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2812  */
2813 QDF_STATUS
2814 wmi_extract_peer_gid_userpos_list_ev_param(
2815 		wmi_unified_t wmi_handle,
2816 		void *evt_buf,
2817 		wmi_host_peer_gid_userpos_list_event *param);
2818 
2819 /**
2820  * wmi_extract_esp_estimate_ev_param() - extract air time from event
2821  * @wmi_handle: wmi handle
2822  * @evt_buf: pointer to event buffer
2823  * @param: Pointer to hold esp event
2824  *
2825  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2826  */
2827 QDF_STATUS
2828 wmi_extract_esp_estimate_ev_param(wmi_unified_t wmi_handle, void *evt_buf,
2829 				  struct esp_estimation_event *param);
2830 
2831 /**
2832  * wmi_extract_gpio_input_ev_param() - extract gpio input param from event
2833  * @wmi_handle: wmi handle
2834  * @evt_buf: pointer to event buffer
2835  * @gpio_num: Pointer to hold gpio number
2836  *
2837  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2838  */
2839 QDF_STATUS wmi_extract_gpio_input_ev_param(wmi_unified_t wmi_handle,
2840 					   void *evt_buf, uint32_t *gpio_num);
2841 
2842 /**
2843  * wmi_extract_pdev_reserve_ast_ev_param() - extract reserve ast entry
2844  * param from event
2845  * @wmi_handle: wmi handle
2846  * @evt_buf: pointer to event buffer
2847  * @param: Pointer to hold reserve ast entry param
2848  *
2849  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2850  */
2851 QDF_STATUS wmi_extract_pdev_reserve_ast_ev_param(
2852 		wmi_unified_t wmi_handle, void *evt_buf,
2853 		struct wmi_host_proxy_ast_reserve_param *param);
2854 /**
2855  * wmi_extract_pdev_generic_buffer_ev_param() - extract pdev generic buffer
2856  * from event
2857  * @wmi_handle: wmi handle
2858  * @evt_buf: pointer to event buffer
2859  * @param: Pointer to generic buffer param
2860  *
2861  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2862  */
2863 QDF_STATUS wmi_extract_pdev_generic_buffer_ev_param(
2864 		wmi_unified_t wmi_handle, void *evt_buf,
2865 		wmi_host_pdev_generic_buffer_event *param);
2866 
2867 /**
2868  * wmi_extract_peer_ratecode_list_ev() - extract peer ratecode from event
2869  * @wmi_handle: wmi handle
2870  * @evt_buf: pointer to event buffer
2871  * @peer_mac: Pointer to hold peer mac address
2872  * @pdev_id: Pointer to hold pdev_id
2873  * @rate_cap: Pointer to hold ratecode
2874  *
2875  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2876  */
2877 QDF_STATUS wmi_extract_peer_ratecode_list_ev(
2878 		wmi_unified_t wmi_handle, void *evt_buf,
2879 		uint8_t *peer_mac, uint32_t *pdev_id,
2880 		wmi_sa_rate_cap *rate_cap);
2881 
2882 /**
2883  * wmi_extract_bcnflt_stats() - extract bcn fault stats from event
2884  * @wmi_handle: wmi handle
2885  * @evt_buf: pointer to event buffer
2886  * @index: Index into bcn fault stats
2887  * @bcnflt_stats: Pointer to hold bcn fault stats
2888  *
2889  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2890  */
2891 QDF_STATUS wmi_extract_bcnflt_stats(
2892 		wmi_unified_t wmi_handle, void *evt_buf,
2893 		uint32_t index, wmi_host_bcnflt_stats *bcnflt_stats);
2894 
2895 /**
2896  * wmi_extract_rtt_hdr() - extract rtt header from event
2897  * @wmi_handle: wmi handle
2898  * @evt_buf: pointer to event buffer
2899  * @ev: Pointer to hold rtt header
2900  *
2901  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2902  */
2903 QDF_STATUS wmi_extract_rtt_hdr(wmi_unified_t wmi_handle, void *evt_buf,
2904 			       wmi_host_rtt_event_hdr *ev);
2905 
2906 /**
2907  * wmi_extract_rtt_ev() - extract rtt event
2908  * @wmi_handle: wmi handle
2909  * @evt_buf: Pointer to event buffer
2910  * @ev: Pointer to hold rtt event
2911  * @hdump: Pointer to hold hex dump
2912  * @hdump_len: hex dump length
2913  *
2914  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2915  */
2916 QDF_STATUS wmi_extract_rtt_ev(wmi_unified_t wmi_handle, void *evt_buf,
2917 			      wmi_host_rtt_meas_event *ev,
2918 			      uint8_t *hdump, uint16_t hdump_len);
2919 
2920 /**
2921  * wmi_extract_rtt_error_report_ev() - extract rtt error report from event
2922  * @wmi_handle: wmi handle
2923  * @evt_buf: pointer to event buffer
2924  * @ev: Pointer to hold rtt error report
2925  *
2926  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2927  */
2928 QDF_STATUS
2929 wmi_extract_rtt_error_report_ev(wmi_unified_t wmi_handle, void *evt_buf,
2930 				wmi_host_rtt_error_report_event *ev);
2931 
2932 /**
2933  * wmi_extract_chan_stats() - extract chan stats from event
2934  * @wmi_handle: wmi handle
2935  * @evt_buf: pointer to event buffer
2936  * @index: Index into chan stats
2937  * @chan_stats: Pointer to hold chan stats
2938  *
2939  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2940  */
2941 QDF_STATUS
2942 wmi_extract_chan_stats(wmi_unified_t wmi_handle, void *evt_buf,
2943 		       uint32_t index, wmi_host_chan_stats *chan_stats);
2944 
2945 /**
2946  * wmi_extract_thermal_stats() - extract thermal stats from event
2947  * @wmi_handle: wmi handle
2948  * @evt_buf: Pointer to event buffer
2949  * @temp: Pointer to hold extracted temperature
2950  * @level: Pointer to hold extracted level in host enum
2951  * @pdev_id: Pointer to hold extracted pdev_id
2952  *
2953  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2954  */
2955 QDF_STATUS wmi_extract_thermal_stats(wmi_unified_t wmi_handle, void *evt_buf,
2956 				     uint32_t *temp,
2957 				     enum thermal_throttle_level *level,
2958 				     uint32_t *pdev_id);
2959 
2960 /**
2961  * wmi_extract_thermal_level_stats() - extract thermal level stats from
2962  * event
2963  * @wmi_handle: wmi handle
2964  * @evt_buf: pointer to event buffer
2965  * @idx: Index to level stats
2966  * @levelcount: Pointer to hold levelcount
2967  * @dccount: Pointer to hold dccount
2968  *
2969  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2970  */
2971 QDF_STATUS
2972 wmi_extract_thermal_level_stats(wmi_unified_t wmi_handle, void *evt_buf,
2973 				uint8_t idx, uint32_t *levelcount,
2974 				uint32_t *dccount);
2975 
2976 /**
2977  * wmi_extract_comb_phyerr() - extract comb phy error from event
2978  * @wmi_handle: wmi handle
2979  * @evt_buf: pointer to event buffer
2980  * @datalen: data length of event buffer
2981  * @buf_offset: Pointer to hold value of current event buffer offset
2982  * post extraction
2983  * @phyerr: Pointer to hold phyerr
2984  *
2985  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2986  */
2987 QDF_STATUS
2988 wmi_extract_comb_phyerr(wmi_unified_t wmi_handle, void *evt_buf,
2989 			uint16_t datalen, uint16_t *buf_offset,
2990 			wmi_host_phyerr_t *phyerr);
2991 
2992 /**
2993  * wmi_extract_single_phyerr() - extract single phy error from event
2994  * @wmi_handle: wmi handle
2995  * @evt_buf: pointer to event buffer
2996  * @datalen: data length of event buffer
2997  * @buf_offset: Pointer to hold value of current event buffer offset
2998  * post extraction
2999  * @phyerr: Pointer to hold phyerr
3000  *
3001  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3002  */
3003 QDF_STATUS
3004 wmi_extract_single_phyerr(wmi_unified_t wmi_handle, void *evt_buf,
3005 			  uint16_t datalen, uint16_t *buf_offset,
3006 			  wmi_host_phyerr_t *phyerr);
3007 
3008 /**
3009  * wmi_extract_composite_phyerr() - extract composite phy error from event
3010  * @wmi_handle: wmi handle
3011  * @evt_buf: pointer to event buffer
3012  * @datalen: Length of event buffer
3013  * @phyerr: Pointer to hold phy error
3014  *
3015  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3016  */
3017 QDF_STATUS
3018 wmi_extract_composite_phyerr(wmi_unified_t wmi_handle, void *evt_buf,
3019 			     uint16_t datalen, wmi_host_phyerr_t *phyerr);
3020 
3021 /**
3022  * wmi_extract_profile_ctx() - extract profile context from event
3023  * @wmi_handle: wmi handle
3024  * @evt_buf: pointer to event buffer
3025  * @profile_ctx: Pointer to hold profile context
3026  *
3027  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3028  */
3029 QDF_STATUS
3030 wmi_extract_profile_ctx(wmi_unified_t wmi_handle, void *evt_buf,
3031 			wmi_host_wlan_profile_ctx_t *profile_ctx);
3032 
3033 /**
3034  * wmi_extract_profile_data() - extract profile data from event
3035  * @wmi_handle: wmi handle
3036  * @evt_buf: pointer to event buffer
3037  * @idx: index of profile data
3038  * @profile_data: Pointer to hold profile data
3039  *
3040  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3041  */
3042 QDF_STATUS
3043 wmi_extract_profile_data(wmi_unified_t wmi_handle, void *evt_buf, uint8_t idx,
3044 			 wmi_host_wlan_profile_t *profile_data);
3045 
3046 /**
3047  * wmi_extract_pmf_bcn_protect_stats() - extract pmf bcn stats from event
3048  * @wmi_handle: wmi handle
3049  * @evt_buf: pointer to event buffer
3050  * @bcn_stats: Pointer to hold pmf bcn protect stats
3051  *
3052  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3053  */
3054 QDF_STATUS
3055 wmi_extract_pmf_bcn_protect_stats(wmi_unified_t wmi_handle, void *evt_buf,
3056 				  wmi_host_pmf_bcn_protect_stats *bcn_stats);
3057 
3058 /**
3059  * extract_unit_test() - extract unit test from event
3060  * @wmi_handle: wmi handle
3061  * @evt_buf: pointer to event buffer
3062  * @unit_test: Pointer to hold unit-test header
3063  * @maxspace: The amount of space in evt_buf
3064  *
3065  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3066  */
3067 QDF_STATUS
3068 wmi_extract_unit_test(wmi_unified_t wmi_handle, void *evt_buf,
3069 		      wmi_unit_test_event *unit_test, uint32_t maxspace);
3070 
3071 /**
3072  * wmi_extract_pdev_ext_stats() - extract extended pdev stats from event
3073  * @wmi_handle: wmi handle
3074  * @evt_buf: pointer to event buffer
3075  * @index: Index into extended pdev stats
3076  * @pdev_ext_stats: Pointer to hold extended pdev stats
3077  *
3078  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3079  */
3080 QDF_STATUS
3081 wmi_extract_pdev_ext_stats(wmi_unified_t wmi_handle, void *evt_buf,
3082 			   uint32_t index,
3083 			   wmi_host_pdev_ext_stats *pdev_ext_stats);
3084 
3085 /**
3086  * wmi_extract_bss_chan_info_event() - extract bss channel information
3087  * from event
3088  * @wmi_handle: wmi handle
3089  * @evt_buf: pointer to event buffer
3090  * @bss_chan_info: Pointer to hold bss channel information
3091  *
3092  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3093  */
3094 QDF_STATUS wmi_extract_bss_chan_info_event(
3095 		wmi_unified_t wmi_handle, void *evt_buf,
3096 		wmi_host_pdev_bss_chan_info_event *bss_chan_info);
3097 
3098 /**
3099  * wmi_extract_tx_data_traffic_ctrl_ev() - extract tx data traffic control
3100  * from event
3101  * @wmi_handle: wmi handle
3102  * @evt_buf: pointer to event buffer
3103  * @ev: Pointer to hold data traffic control
3104  *
3105  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3106  */
3107 QDF_STATUS
3108 wmi_extract_tx_data_traffic_ctrl_ev(wmi_unified_t wmi_handle, void *evt_buf,
3109 				    wmi_host_tx_data_traffic_ctrl_event *ev);
3110 
3111 /**
3112  * wmi_extract_vdev_extd_stats() - extract extended vdev stats from event
3113  * @wmi_handle: wmi handle
3114  * @evt_buf: pointer to event buffer
3115  * @index: Index into extended vdev stats
3116  * @vdev_extd_stats: Pointer to hold extended vdev stats
3117  *
3118  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3119  */
3120 QDF_STATUS
3121 wmi_extract_vdev_extd_stats(wmi_unified_t wmi_handle, void *evt_buf,
3122 			    uint32_t index,
3123 			    wmi_host_vdev_extd_stats *vdev_extd_stats);
3124 
3125 /**
3126  * wmi_extract_bcn_stats() - extract beacon stats from event
3127  * @wmi_handle: wmi handle
3128  * @evt_buf: pointer to event buffer
3129  * @index: Index into beacon stats
3130  * @vdev_bcn_stats: Pointer to hold beacon stats
3131  *
3132  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3133  */
3134 QDF_STATUS
3135 wmi_extract_bcn_stats(wmi_unified_t wmi_handle, void *evt_buf,
3136 		      uint32_t index, wmi_host_bcn_stats *vdev_bcn_stats);
3137 
3138 /**
3139  * wmi_extract_vdev_nac_rssi_stats() - extract NAC_RSSI stats from event
3140  * @wmi_handle: wmi handle
3141  * @evt_buf: pointer to event buffer
3142  * @vdev_extd_stats: Pointer to hold nac rssi stats
3143  *
3144  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3145  */
3146 QDF_STATUS wmi_extract_vdev_nac_rssi_stats(
3147 		wmi_unified_t wmi_handle, void *evt_buf,
3148 		struct wmi_host_vdev_nac_rssi_event *vdev_nac_rssi_stats);
3149 
3150 /**
3151  * wmi_extract_vdev_prb_fils_stats() - extract probe and fils vdev
3152  * stats from event
3153  * @wmi_handle: wmi handle
3154  * @evt_buf: pointer to event buffer
3155  * @index: Index into extended vdev stats
3156  * @vdev_prb_fils_stats: Pointer to hold probe and fils vdev stats
3157  *
3158  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3159  */
3160 QDF_STATUS wmi_extract_vdev_prb_fils_stats(
3161 		wmi_unified_t wmi_handle, void *evt_buf,
3162 		uint32_t index,
3163 		struct wmi_host_vdev_prb_fils_stats *vdev_prb_fils_stats);
3164 
3165 /**
3166  * wmi_extract_peer_retry_stats() - extract peer retry stats from event
3167  * @wmi_handle: wmi handle
3168  * @evt_buf: pointer to event buffer
3169  * @index: Index into peer retry stats
3170  * @peer_retry_stats: Pointer to hold  peer retry stats
3171  *
3172  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3173  */
3174 QDF_STATUS wmi_extract_peer_retry_stats(
3175 	wmi_unified_t wmi_handle, void *evt_buf,
3176 	uint32_t index, struct wmi_host_peer_retry_stats *peer_retry_stats);
3177 
3178 /**
3179  * wmi_unified_send_power_dbg_cmd() - send power debug commands
3180  * @wmi_handle: wmi handle
3181  * @param: wmi power debug parameter
3182  *
3183  * Send WMI_POWER_DEBUG_CMDID parameters to fw.
3184  *
3185  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
3186  */
3187 QDF_STATUS wmi_unified_send_power_dbg_cmd(wmi_unified_t wmi_handle,
3188 					  struct wmi_power_dbg_params *param);
3189 
3190 /**
3191  * wmi_extract_sar_cap_service_ready_ext() - extract SAR cap from
3192  *					     FW service ready event
3193  * @wmi_handle: wmi handle
3194  * @evt_buf: event buffer received from firmware
3195  * @ext_param: extended target info
3196  *
3197  * Return: QDF_STATUS_SUCCESS for success or error code
3198  */
3199 QDF_STATUS wmi_extract_sar_cap_service_ready_ext(
3200 			wmi_unified_t wmi_handle,
3201 			uint8_t *evt_buf,
3202 			struct wlan_psoc_host_service_ext_param *ext_param);
3203 
3204 /**
3205  * wmi_unified_fw_test_cmd() - send fw test command to fw.
3206  * @wmi_handle: wmi handle
3207  * @wmi_fwtest: fw test command
3208  *
3209  * This function sends fw test command to fw.
3210  *
3211  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3212  */
3213 QDF_STATUS wmi_unified_fw_test_cmd(wmi_unified_t wmi_handle,
3214 				   struct set_fwtest_params *wmi_fwtest);
3215 
3216 /**
3217  * wmi_unified_wfa_test_cmd() - send wfa test command to fw.
3218  * @handle: wmi handle
3219  * @wmi_fwtest: wfa test param
3220  *
3221  * This function send wfa test command to fw.
3222  *
3223  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3224  */
3225 QDF_STATUS wmi_unified_wfa_test_cmd(wmi_unified_t wmi_handle,
3226 				    struct set_wfatest_params *wmi_wfatest);
3227 
3228 /**
3229  * wmi_unified_peer_rx_reorder_queue_setup_send() - send rx reorder queue
3230  *      setup command to fw
3231  * @wmi_handle: wmi handle
3232  * @param: Rx reorder queue setup parameters
3233  *
3234  * Return: QDF_STATUS for success and QDF_STATUS_E_FAILURE for failure
3235  */
3236 QDF_STATUS wmi_unified_peer_rx_reorder_queue_setup_send(
3237 		wmi_unified_t wmi_handle,
3238 		struct rx_reorder_queue_setup_params *param);
3239 
3240 /**
3241  * wmi_unified_peer_rx_reorder_queue_remove_send() - send rx reorder queue
3242  *      remove command to fw
3243  * @wmi_handle: wmi handle
3244  * @param: Rx reorder queue remove parameters
3245  *
3246  * Return: QDF_STATUS for success and QDF_STATUS_E_FAILURE for failure
3247  */
3248 QDF_STATUS wmi_unified_peer_rx_reorder_queue_remove_send(
3249 		wmi_unified_t wmi_handle,
3250 		struct rx_reorder_queue_remove_params *param);
3251 
3252 /*
3253  * wmi_extract_service_ready_ext() - extract extended service ready
3254  * @wmi_handle: wmi handle
3255  * @param: wmi power debug parameter
3256  *
3257  *
3258  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
3259  */
3260 QDF_STATUS wmi_extract_service_ready_ext(
3261 		wmi_unified_t wmi_handle, uint8_t *evt_buf,
3262 		struct wlan_psoc_host_service_ext_param *param);
3263 
3264 /*
3265  * wmi_extract_service_ready_ext2() - extract extended2 service ready
3266  * @wmi_handle: wmi handle
3267  * @evt_buff: pointer to event buffer
3268  * @param: wmi ext2 base parameters
3269  *
3270  *
3271  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
3272  */
3273 QDF_STATUS wmi_extract_service_ready_ext2(
3274 		struct wmi_unified *wmi_handle, uint8_t *evt_buf,
3275 		struct wlan_psoc_host_service_ext2_param *param);
3276 
3277 /**
3278  * wmi_extract_hw_mode_cap_service_ready_ext() -
3279  *       extract HW mode cap from service ready event
3280  * @wmi_handle: wmi handle
3281  * @evt_buf: pointer to event buffer
3282  * @hw_mode_idx: hw mode idx should be less than num_mode
3283  * @param: Pointer to hold evt buf
3284  *
3285  * Return: QDF_STATUS_SUCCESS for success or error code
3286  */
3287 QDF_STATUS wmi_extract_hw_mode_cap_service_ready_ext(
3288 			wmi_unified_t wmi_handle,
3289 			uint8_t *evt_buf, uint8_t hw_mode_idx,
3290 			struct wlan_psoc_host_hw_mode_caps *param);
3291 
3292 /**
3293  * wmi_extract_mac_phy_cap_service_ready_ext() -
3294  *       extract MAC phy cap from service ready event
3295  * @wmi_handle: wmi handle
3296  * @evt_buf: pointer to event buffer
3297  * @hw_mode_id: hw mode id of hw_mode_caps
3298  * @phy_id: phy_id within hw_mode_cap
3299  * @param: pointer to mac phy caps structure to hold the values from event
3300  *
3301  * Return: QDF_STATUS_SUCCESS for success or error code
3302  */
3303 QDF_STATUS wmi_extract_mac_phy_cap_service_ready_ext(
3304 			wmi_unified_t wmi_handle,
3305 			uint8_t *evt_buf,
3306 			uint8_t hw_mode_id,
3307 			uint8_t phy_id,
3308 			struct wlan_psoc_host_mac_phy_caps *param);
3309 
3310 /**
3311  * wmi_extract_mac_phy_cap_service_ready_ext2() - Extract MAC phy cap from
3312  * service ready ext2 event.
3313  * @wmi_handle: wmi handle
3314  * @evt_buf: pointer to event buffer
3315  * @hw_mode_id: hw mode id of hw_mode_caps
3316  * @phy_id: phy_id within hw_mode_cap
3317  * @phy_idx: index to hw_mode_cap for the given hw_mode_id and phy_id
3318  * @mac_phy_cap: Pointer to mac_phy_cap_ext2 structure
3319  *
3320  * Return: QDF_STATUS_SUCCESS for success or error code
3321  */
3322 QDF_STATUS wmi_extract_mac_phy_cap_service_ready_ext2(
3323 			wmi_unified_t wmi_handle,
3324 			uint8_t *evt_buf,
3325 			uint8_t hw_mode_id,
3326 			uint8_t phy_id,
3327 			uint8_t phy_idx,
3328 			struct wlan_psoc_host_mac_phy_caps_ext2 *mac_phy_cap);
3329 
3330 /**
3331  * wmi_extract_reg_cap_service_ready_ext() -
3332  *       extract REG cap from service ready event
3333  * @wmi_handle: wmi handle
3334  * @evt_buf: pointer to event buffer
3335  * @phy_idx: phy idx should be less than num_mode
3336  * @param: Pointer to hold evt buf
3337  *
3338  * Return: QDF_STATUS_SUCCESS for success or error code
3339  */
3340 QDF_STATUS
3341 wmi_extract_reg_cap_service_ready_ext(
3342 			wmi_unified_t wmi_handle,
3343 			uint8_t *evt_buf, uint8_t phy_idx,
3344 			struct wlan_psoc_host_hal_reg_capabilities_ext *param);
3345 
3346 /**
3347  * wmi_extract_dbr_ring_cap_service_ready_ext: Extract direct buffer rx
3348  *                                             capability received through
3349  *                                             extended service ready event
3350  * @wmi_handle: WMI handle
3351  * @evt_buf: Event buffer
3352  * @idx: Index of the module for which capability is received
3353  * @param: Pointer to direct buffer rx ring cap struct
3354  *
3355  * Return: QDF status of operation
3356  */
3357 QDF_STATUS wmi_extract_dbr_ring_cap_service_ready_ext(
3358 			wmi_unified_t wmi_handle,
3359 			uint8_t *evt_buf, uint8_t idx,
3360 			struct wlan_psoc_host_dbr_ring_caps *param);
3361 
3362 /**
3363  * wmi_extract_dbr_ring_cap_service_ready_ext2: Extract direct buffer rx
3364  *                                              capability received through
3365  *                                              extended service ready2 event
3366  * @wmi_handle: WMI handle
3367  * @evt_buf: Event buffer
3368  * @idx: Index of the module for which capability is received
3369  * @param: Pointer to direct buffer rx ring cap struct
3370  *
3371  * Return: QDF status of operation
3372  */
3373 QDF_STATUS wmi_extract_dbr_ring_cap_service_ready_ext2(
3374 			wmi_unified_t wmi_handle,
3375 			uint8_t *evt_buf, uint8_t idx,
3376 			struct wlan_psoc_host_dbr_ring_caps *param);
3377 
3378 /**
3379  * wmi_extract_scan_radio_cap_service_ready_ext2: Extract scan radio capability
3380  * received through extended service ready2 event
3381  * @wmi_handle: WMI handle
3382  * @evt_buf: Event buffer
3383  * @idx: Index of the module for which capability is received
3384  * @param: Pointer to scan radio cap struct
3385  *
3386  * Return: QDF status of operation
3387  */
3388 QDF_STATUS wmi_extract_scan_radio_cap_service_ready_ext2(
3389 			wmi_unified_t wmi_handle,
3390 			uint8_t *evt_buf, uint8_t idx,
3391 			struct wlan_psoc_host_scan_radio_caps *param);
3392 
3393 /**
3394  * wmi_extract_spectral_scaling_params_service_ready_ext: Extract Spectral
3395  *                                             scaling params received through
3396  *                                             extended service ready event
3397  * @wmi_handle: WMI handle
3398  * @evt_buf: Event buffer
3399  * @idx: Index
3400  * @param: Pointer to Spectral scaling params
3401  *
3402  * Return: QDF status of operation
3403  */
3404 QDF_STATUS wmi_extract_spectral_scaling_params_service_ready_ext(
3405 			wmi_unified_t wmi_handle,
3406 			uint8_t *evt_buf, uint8_t idx,
3407 			struct wlan_psoc_host_spectral_scaling_params *param);
3408 
3409 /**
3410  * wmi_extract_pdev_utf_event() -
3411  *       extract UTF data from pdev utf event
3412  * @wmi_handle: wmi handle
3413  * @evt_buf: pointer to event buffer
3414  * @param: Pointer to hold evt buf
3415  *
3416  * Return: QDF_STATUS_SUCCESS for success or error code
3417  */
3418 QDF_STATUS wmi_extract_pdev_utf_event(wmi_unified_t wmi_handle,
3419 				      uint8_t *evt_buf,
3420 				      struct wmi_host_pdev_utf_event *param);
3421 
3422 /**
3423  * wmi_extract_pdev_qvit_event() -
3424  *       extract UTF data from pdev qvit event
3425  * @wmi_handle: wmi handle
3426  * @evt_buf: pointer to event buffer
3427  * @param: Pointer to hold evt buf
3428  *
3429  * Return: QDF_STATUS_SUCCESS for success or error code
3430  */
3431 QDF_STATUS wmi_extract_pdev_qvit_event(wmi_unified_t wmi_handle,
3432 				       uint8_t *evt_buf,
3433 				       struct wmi_host_pdev_qvit_event *param);
3434 
3435 #ifdef WLAN_SUPPORT_RF_CHARACTERIZATION
3436 /**
3437  * wmi_extract_num_rf_characterziation_entries - Extract number of RF
3438  * characterization metrics received from the RF characterization event.
3439  * @wmi_hdl: WMI handle
3440  * @evt_buf: Event buffer
3441  * @num_rf_characterization_entries: Number of RF characterization metrics
3442  *
3443  * Return: QDF status of operation
3444  */
3445 QDF_STATUS wmi_extract_num_rf_characterization_entries(wmi_unified_t wmi_hdl,
3446 				uint8_t *evt_buf,
3447 				uint32_t *num_rf_characterization_entries);
3448 
3449 /**
3450  * wmi_extract_rf_characterziation_entries - Extract RF characterization metrics
3451  * received from the RF characterization event.
3452  * @wmi_hdl: WMI handle
3453  * @evt_buf: Event buffer
3454  * @num_rf_characterization_entries: Number of RF characterization metrics
3455  * @rf_characterization_entries: Pointer to RF characterization metrics
3456  *
3457  * Return: QDF status of operation
3458  */
3459 QDF_STATUS wmi_extract_rf_characterization_entries(wmi_unified_t wmi_hdl,
3460 	uint8_t *evt_buf,
3461 	uint32_t num_rf_characterization_entries,
3462 	struct wmi_host_rf_characterization_event_param *rf_characterization_entries);
3463 #endif
3464 
3465 /*
3466  * wmi_extract_chainmask_tables_tlv() - extract chain mask tables
3467  * @wmi_handle: wmi handle
3468  * @evt_buf: pointer to event buffer.
3469  * @chainmask_table: pointer to struct wlan_psoc_host_chainmask_table
3470  *
3471  *
3472  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
3473  */
3474 QDF_STATUS wmi_extract_chainmask_tables(
3475 		wmi_unified_t wmi_handle, uint8_t *evt_buf,
3476 		struct wlan_psoc_host_chainmask_table *chainmask_table);
3477 
3478 /**
3479  * wmi_unified_dfs_phyerr_offload_en_cmd() - enable dfs phyerr offload
3480  * @wmi_handle: wmi handle
3481  * @pdev_id: pdev id
3482  *
3483  * Return: QDF_STATUS
3484  */
3485 QDF_STATUS wmi_unified_dfs_phyerr_offload_en_cmd(wmi_unified_t wmi_handle,
3486 						 uint32_t pdev_id);
3487 
3488 /**
3489  * wmi_unified_dfs_phyerr_offload_dis_cmd() - disable dfs phyerr offload
3490  * @wmi_handle: wmi handle
3491  * @pdev_id: pdev id
3492  *
3493  * Return: QDF_STATUS
3494  */
3495 QDF_STATUS wmi_unified_dfs_phyerr_offload_dis_cmd(wmi_unified_t wmi_handle,
3496 						  uint32_t pdev_id);
3497 
3498 #ifdef QCA_SUPPORT_AGILE_DFS
3499 /**
3500  * wmi_unified_send_vdev_adfs_ch_cfg_cmd() - send adfs channel config command
3501  * @wmi_handle: wmi handle
3502  * @param: adfs channel config params
3503  *
3504  * Return: QDF_STATUS
3505  */
3506 QDF_STATUS
3507 wmi_unified_send_vdev_adfs_ch_cfg_cmd(wmi_unified_t wmi_handle,
3508 				      struct vdev_adfs_ch_cfg_params *param);
3509 
3510 /**
3511  * wmi_unified_send_vdev_adfs_ocac_abort_cmd() - send adfs o-cac abort command
3512  * @wmi_handle: wmi handle
3513  * @param: adfs channel o-cac abort params
3514  *
3515  * Return: QDF_STATUS
3516  */
3517 QDF_STATUS
3518 wmi_unified_send_vdev_adfs_ocac_abort_cmd(wmi_unified_t wmi_handle,
3519 					  struct vdev_adfs_abort_params *param);
3520 #endif
3521 
3522 /**
3523  *  wmi_unified_set_country_cmd_send() - WMI set country function
3524  *  @wmi_handle      : handle to WMI.
3525  *  @param    : pointer to hold set country cmd parameter
3526  *
3527  *  Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3528  */
3529 QDF_STATUS wmi_unified_set_country_cmd_send(wmi_unified_t wmi_handle,
3530 					    struct set_country *param);
3531 
3532 #ifdef WLAN_FEATURE_ACTION_OUI
3533 /**
3534  * wmi_unified_send_action_oui_cmd() - send action oui cmd to fw
3535  * @wmi_handle: wma handle
3536  * @req: wmi action oui message to be send
3537  *
3538  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3539  */
3540 QDF_STATUS
3541 wmi_unified_send_action_oui_cmd(wmi_unified_t wmi_handle,
3542 				struct action_oui_request *req);
3543 #endif /* WLAN_FEATURE_ACTION_OUI */
3544 
3545 /**
3546  * wmi_unified_send_request_get_rcpi_cmd() - command to request rcpi value
3547  * @wmi_handle: wma handle
3548  * @get_rcpi_param: rcpi params
3549  *
3550  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3551  */
3552 QDF_STATUS
3553 wmi_unified_send_request_get_rcpi_cmd(wmi_unified_t wmi_handle,
3554 				      struct rcpi_req *get_rcpi_param);
3555 
3556 /**
3557  * wmi_extract_rcpi_response_event - api to extract RCPI event params
3558  * @wmi_handle: wma handle
3559  * @evt_buf: pointer to event buffer
3560  * @res: pointer to hold rcpi response from firmware
3561  *
3562  * Return: QDF_STATUS_SUCCESS for successful event parse
3563  *         else QDF_STATUS_E_INVAL or QDF_STATUS_E_FAILURE
3564  */
3565 QDF_STATUS
3566 wmi_extract_rcpi_response_event(wmi_unified_t wmi_handle, void *evt_buf,
3567 				struct rcpi_res *res);
3568 
3569 #ifdef WMI_INTERFACE_EVENT_LOGGING
3570 void wmi_print_cmd_log(wmi_unified_t wmi, uint32_t count,
3571 		       qdf_abstract_print *print, void *print_priv);
3572 
3573 void wmi_print_cmd_tx_cmp_log(wmi_unified_t wmi, uint32_t count,
3574 			      qdf_abstract_print *print, void *print_priv);
3575 
3576 void wmi_print_mgmt_cmd_log(wmi_unified_t wmi, uint32_t count,
3577 			    qdf_abstract_print *print, void *print_priv);
3578 
3579 void wmi_print_mgmt_cmd_tx_cmp_log(wmi_unified_t wmi, uint32_t count,
3580 				   qdf_abstract_print *print, void *print_priv);
3581 
3582 void wmi_print_event_log(wmi_unified_t wmi, uint32_t count,
3583 			 qdf_abstract_print *print, void *print_priv);
3584 
3585 void wmi_print_rx_event_log(wmi_unified_t wmi, uint32_t count,
3586 			    qdf_abstract_print *print, void *print_priv);
3587 
3588 void wmi_print_mgmt_event_log(wmi_unified_t wmi, uint32_t count,
3589 			      qdf_abstract_print *print, void *print_priv);
3590 
3591 #endif /* WMI_INTERFACE_EVENT_LOGGING */
3592 
3593 /**
3594  * wmi_unified_send_wds_entry_list_cmd() - WMI function to get list of
3595  *  wds entries from FW
3596  * @wmi_handle: wmi handle
3597  *
3598  * Send WMI_PDEV_WDS_ENTRY_LIST_CMDID parameters to fw.
3599  *
3600  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
3601  */
3602 QDF_STATUS wmi_unified_send_dump_wds_table_cmd(wmi_unified_t wmi_handle);
3603 
3604 /**
3605  * wmi_extract_wds_entry - api to extract wds entry
3606  * @wmi_handle: wmi handle
3607  * @evt_buf: pointer to event buffer
3608  * @wds_entry: wds entry
3609  * @idx: index to point wds entry in event buffer
3610  *
3611  * Return: QDF_STATUS_SUCCESS for successful event parse
3612  *         else QDF_STATUS_E_INVAL or QDF_STATUS_E_FAILURE
3613  */
3614 QDF_STATUS
3615 wmi_extract_wds_entry(wmi_unified_t wmi_handle, uint8_t *evt_buf,
3616 		      struct wdsentry *wds_entry, u_int32_t idx);
3617 
3618 /**
3619  * wmi_unified_send_obss_detection_cfg_cmd() - WMI function to send obss
3620  *  detection configuration to FW.
3621  * @wmi_handle: wmi handle
3622  * @cfg: obss detection configuration
3623  *
3624  * Send WMI_SAP_OBSS_DETECTION_CFG_CMDID parameters to fw.
3625  *
3626  * Return: QDF_STATUS
3627  */
3628 
3629 QDF_STATUS wmi_unified_send_obss_detection_cfg_cmd(
3630 		wmi_unified_t wmi_handle,
3631 		struct wmi_obss_detection_cfg_param *cfg);
3632 
3633 /**
3634  * wmi_unified_extract_obss_detection_info() - WMI function to extract obss
3635  *  detection info from FW.
3636  * @wmi_handle: wmi handle
3637  * @data: event data from firmware
3638  * @info: Pointer to hold obss detection info
3639  *
3640  * This function is used to extract obss info from firmware.
3641  *
3642  * Return: QDF_STATUS
3643  */
3644 
3645 QDF_STATUS wmi_unified_extract_obss_detection_info(
3646 			wmi_unified_t wmi_handle,
3647 			uint8_t *data,
3648 			struct wmi_obss_detect_info *info);
3649 
3650 #ifdef WLAN_SUPPORT_GREEN_AP
3651 QDF_STATUS wmi_extract_green_ap_egap_status_info(
3652 	wmi_unified_t wmi_hdl, uint8_t *evt_buf,
3653 	struct wlan_green_ap_egap_status_info *egap_status_info_params);
3654 #endif
3655 
3656 /**
3657  * wmi_unified_send_roam_scan_stats_cmd() - Wrapper to request roam scan stats
3658  * @wmi_handle: wmi handle
3659  * @params: request params
3660  *
3661  * This function is used to send the roam scan stats request command to
3662  * firmware.
3663  *
3664  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3665  */
3666 QDF_STATUS
3667 wmi_unified_send_roam_scan_stats_cmd(wmi_unified_t wmi_handle,
3668 				     struct wmi_roam_scan_stats_req *params);
3669 
3670 /**
3671  * wmi_extract_roam_scan_stats_res_evt() - API to extract roam scan stats res
3672  * @wmi: wmi handle
3673  * @evt_buf: pointer to the event buffer
3674  * @vdev_id: output pointer to hold vdev id
3675  * @res_param: output pointer to hold extracted memory
3676  *
3677  * Return: QDF_STATUS
3678  */
3679 QDF_STATUS
3680 wmi_extract_roam_scan_stats_res_evt(wmi_unified_t wmi, void *evt_buf,
3681 				    uint32_t *vdev_id,
3682 				    struct wmi_roam_scan_stats_res **res_param);
3683 
3684 /**
3685  * wmi_extract_offload_bcn_tx_status_evt() - API to extract bcn tx status event
3686  * @wmi_handle: wmi handle
3687  * @evt_buf: pointer to the event buffer
3688  * @vdev_id: output pointer to hold vdev id
3689  * @tx_status: output pointer to hold bcn tx status
3690  *
3691  * Return: QDF_STATUS
3692  */
3693 QDF_STATUS
3694 wmi_extract_offload_bcn_tx_status_evt(wmi_unified_t wmi_handle, void *evt_buf,
3695 				      uint32_t *vdev_id, uint32_t *tx_status);
3696 
3697 /* wmi_get_ch_width_from_phy_mode() - convert phy mode to channel width
3698  * @wmi_handle: wmi handle
3699  * @phymode: phy mode
3700  *
3701  * Return: wmi channel width
3702  */
3703 wmi_host_channel_width wmi_get_ch_width_from_phy_mode(
3704 	wmi_unified_t wmi_handle, WMI_HOST_WLAN_PHY_MODE phymode);
3705 
3706 #ifdef QCA_SUPPORT_CP_STATS
3707 /**
3708  * wmi_extract_cca_stats() - api to extract congestion stats from event buffer
3709  * @wmi_handle: wma handle
3710  * @evt_buf: event buffer
3711  * @datalen: length of buffer
3712  * @stats: buffer to populated after stats extraction
3713  *
3714  * Return: status of operation
3715  */
3716 QDF_STATUS wmi_extract_cca_stats(wmi_unified_t wmi_handle, void *evt_buf,
3717 				 struct wmi_host_congestion_stats *stats);
3718 #endif /* QCA_SUPPORT_CP_STATS */
3719 
3720 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
3721 /**
3722  * wmi_unified_dfs_send_avg_params_cmd() - send average radar parameters cmd.
3723  * @wmi_handle: wmi handle
3724  * @params: radar found params
3725  *
3726  * This function passes the average radar parameters to fw
3727  *
3728  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3729  */
3730 QDF_STATUS
3731 wmi_unified_dfs_send_avg_params_cmd(wmi_unified_t wmi_handle,
3732 				    struct dfs_radar_found_params *params);
3733 
3734 /**
3735  * wmi_extract_dfs_status_from_fw() - extract host dfs status from fw.
3736  * @wmi_handle: wmi handle
3737  * @evt_buf: pointer to event buffer
3738  * @dfs_status_check: pointer to the host dfs status
3739  *
3740  * This function extracts the result of host dfs from fw
3741  *
3742  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3743  */
3744 QDF_STATUS wmi_extract_dfs_status_from_fw(wmi_unified_t wmi_handle,
3745 					  void *evt_buf,
3746 					  uint32_t  *dfs_status_check);
3747 #endif
3748 #ifdef OL_ATH_SMART_LOGGING
3749 /**
3750  * wmi_unified_send_smart_logging_enable_cmd() - send smart logging enable cmd
3751  * @wmi_handle: wmi handle
3752  * @param: enable/disable
3753  *
3754  * This function enables/disable the smart logging feature
3755  *
3756  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3757  */
3758 QDF_STATUS wmi_unified_send_smart_logging_enable_cmd(wmi_unified_t wmi_handle,
3759 						     uint32_t param);
3760 
3761 /**
3762  * wmi_unified_send_smart_logging_fatal_cmd() - send smart logging fatal cmd
3763  * @wmi_handle: wmi handle
3764  * @param:  Fatal event
3765  *
3766  * This function sends the smart log fatal events to the FW
3767  *
3768  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3769  */
3770 QDF_STATUS
3771 wmi_unified_send_smart_logging_fatal_cmd(wmi_unified_t wmi_handle,
3772 					 struct wmi_debug_fatal_events *param);
3773 
3774 /**
3775  * wmi_extract_smartlog_ev() - extract smartlog event info from event
3776  * @wmi_handle: wmi handle
3777  * @evt_buf: pointer to event buffer
3778  * @ev: Pointer to hold fatal events
3779  *
3780  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3781  */
3782 QDF_STATUS
3783 wmi_extract_smartlog_ev(wmi_unified_t wmi_handle, void *evt_buf,
3784 			struct wmi_debug_fatal_events *ev);
3785 
3786 #endif /* OL_ATH_SMART_LOGGING */
3787 
3788 /**
3789  * wmi_process_fw_event_worker_thread_ctx() - process in worker thread context
3790  * @wmi_handle: handle to wmi
3791  * @evt_buf: pointer to event buffer
3792  *
3793  * Event process by below function will be in worker thread context.
3794  * Use this method for events which are not critical and not
3795  * handled in protocol stack.
3796  *
3797  * Return: none
3798  */
3799 void wmi_process_fw_event_worker_thread_ctx(struct wmi_unified *wmi_handle,
3800 					    void *evt_buf);
3801 
3802 /**
3803  * wmi_extract_ctl_failsafe_check_ev_param() - extract ctl failsafe
3804  * status from event
3805  * @wmi_handle: wmi handle
3806  * @evt_buf: pointer to event buffer
3807  * @ev: Pointer to hold ctl status
3808  *
3809  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3810  */
3811 QDF_STATUS wmi_extract_ctl_failsafe_check_ev_param(
3812 		wmi_unified_t wmi_handle,
3813 		void *evt_buf,
3814 		struct wmi_host_pdev_ctl_failsafe_event *param);
3815 
3816 #ifdef OBSS_PD
3817 /**
3818  * wmi_unified_send_obss_spatial_reuse_set_cmd() - send obss pd offset
3819  * @wmi_handle: wmi handle
3820  * @oobss_spatial_reuse_param: Pointer to obsspd min max offset
3821  *
3822  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3823  */
3824 QDF_STATUS wmi_unified_send_obss_spatial_reuse_set_cmd(
3825 	wmi_unified_t wmi_handle,
3826 	struct wmi_host_obss_spatial_reuse_set_param *obss_spatial_reuse_param);
3827 
3828 /**
3829  * wmi_unified_send_obss_spatial_reuse_set_def_thresh_cmd() - send def thresh
3830  * @wmi_handle: wmi handle
3831  * @thresh: Pointer to def thresh
3832  *
3833  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3834  */
3835 QDF_STATUS wmi_unified_send_obss_spatial_reuse_set_def_thresh_cmd(
3836 	wmi_unified_t wmi_handle,
3837 	struct wmi_host_obss_spatial_reuse_set_def_thresh *thresh);
3838 
3839 /**
3840  * wmi_unified_send_self_srg_bss_color_bitmap_set_cmd() - Send 64-bit BSS color
3841  * bitmap to be used by SRG based Spatial Reuse feature
3842  * @wmi_handle: wmi handle
3843  * @bitmap_0: lower 32 bits in BSS color bitmap
3844  * @bitmap_1: upper 32 bits in BSS color bitmap
3845  * @pdev_id: pdev ID
3846  *
3847  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3848  */
3849 QDF_STATUS wmi_unified_send_self_srg_bss_color_bitmap_set_cmd(
3850 	wmi_unified_t wmi_handle,  uint32_t bitmap_0,
3851 	uint32_t bitmap_1, uint8_t pdev_id);
3852 
3853 /**
3854  * wmi_unified_send_self_srg_partial_bssid_bitmap_set_cmd() - Send 64-bit
3855  * partial BSSID bitmap to be used by SRG based Spatial Reuse feature
3856  * @wmi_handle: wmi handle
3857  * @bitmap_0: lower 32 bits in partial BSSID bitmap
3858  * @bitmap_1: upper 32 bits in partial BSSID bitmap
3859  * @pdev_id: pdev ID
3860  *
3861  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3862  */
3863 QDF_STATUS wmi_unified_send_self_srg_partial_bssid_bitmap_set_cmd(
3864 	wmi_unified_t wmi_handle,  uint32_t bitmap_0,
3865 	uint32_t bitmap_1, uint8_t pdev_id);
3866 
3867 /**
3868  * wmi_unified_send_self_srg_obss_color_enable_bitmap_cmd() - Send 64-bit BSS
3869  * color enable bitmap to be used by SRG based Spatial Reuse feature to the FW
3870  * @wmi_handle: wmi handle
3871  * @bitmap_0: lower 32 bits in BSS color enable bitmap
3872  * @bitmap_1: upper 32 bits in BSS color enable bitmap
3873  * @pdev_id: pdev ID
3874  *
3875  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3876  */
3877 QDF_STATUS wmi_unified_send_self_srg_obss_color_enable_bitmap_cmd(
3878 	wmi_unified_t wmi_handle,  uint32_t bitmap_0,
3879 	uint32_t bitmap_1, uint8_t pdev_id);
3880 
3881 /**
3882  * wmi_unified_send_self_srg_obss_bssid_enable_bitmap_cmd() - Send 64-bit OBSS
3883  * BSSID enable bitmap to be used by SRG based Spatial Reuse feature to the FW
3884  * @wmi_handle: wmi handle
3885  * @bitmap_0: lower 32 bits in BSSID enable bitmap
3886  * @bitmap_1: upper 32 bits in BSSID enable bitmap
3887  * @pdev_id: pdev ID
3888  *
3889  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3890  */
3891 QDF_STATUS wmi_unified_send_self_srg_obss_bssid_enable_bitmap_cmd(
3892 	wmi_unified_t wmi_handle,  uint32_t bitmap_0,
3893 	uint32_t bitmap_1, uint8_t pdev_id);
3894 
3895 /**
3896  * wmi_unified_send_self_non_srg_obss_color_enable_bitmap_cmd() - Send 64-bit
3897  * BSS color enable bitmap to be used by Non-SRG based Spatial Reuse
3898  * feature to the FW
3899  * @wmi_handle: wmi handle
3900  * @bitmap_0: lower 32 bits in BSS color enable bitmap
3901  * @bitmap_1: upper 32 bits in BSS color enable bitmap
3902  * @pdev_id: pdev ID
3903  *
3904  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3905  */
3906 QDF_STATUS wmi_unified_send_self_non_srg_obss_color_enable_bitmap_cmd(
3907 	wmi_unified_t wmi_handle,  uint32_t bitmap_0,
3908 	uint32_t bitmap_1, uint8_t pdev_id);
3909 
3910 /**
3911  * wmi_unified_send_self_non_srg_obss_bssid_enable_bitmap_cmd() - Send 64-bit
3912  * OBSS BSSID enable bitmap to be used by Non-SRG based Spatial Reuse
3913  * feature to the FW
3914  * @wmi_handle: wmi handle
3915  * @bitmap_0: lower 32 bits in BSSID enable bitmap
3916  * @bitmap_1: upper 32 bits in BSSID enable bitmap
3917  * @pdev_id: pdev ID
3918  *
3919  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
3920  */
3921 QDF_STATUS wmi_unified_send_self_non_srg_obss_bssid_enable_bitmap_cmd(
3922 	wmi_unified_t wmi_handle,  uint32_t bitmap_0,
3923 	uint32_t bitmap_1, uint8_t pdev_id);
3924 #endif /* OBSS_PD */
3925 
3926 /**
3927  * wmi_convert_pdev_id_host_to_target() - Convert pdev_id from host to target
3928  * defines. For legacy there is not conversion required. Just return pdev_id as
3929  * it is.
3930  * @wmi_handle: wmi handle
3931  * @host_pdev_id: host pdev_id to be converted.
3932  * @target_pdev_id: Output target pdev id.
3933  *
3934  * Return: QDF_STATUS
3935  */
3936 QDF_STATUS wmi_convert_pdev_id_host_to_target(wmi_unified_t wmi_handle,
3937 					      uint32_t host_pdev_id,
3938 					      uint32_t *target_pdev_id);
3939 
3940 #ifndef CNSS_GENL
3941 /**
3942  * wmi_convert_pdev_id_target_to_host() - Convert pdev_id from target to host
3943  * defines. For legacy there is not conversion required. Just return pdev_id as
3944  * it is.
3945  * @wmi_handle: wmi handle
3946  * @target_pdev_id: target pdev_id to be converted.
3947  * @host_pdev_id: Output host pdev id.
3948  *
3949  * Return: QDF_STATUS
3950  */
3951 QDF_STATUS wmi_convert_pdev_id_target_to_host(wmi_unified_t wmi_handle,
3952 					      uint32_t target_pdev_id,
3953 					      uint32_t *host_pdev_id);
3954 #endif
3955 
3956 /**
3957  * wmi_unified_send_bss_color_change_enable_cmd() - WMI function to send bss
3958  *  color change enable to FW.
3959  * @wmi_handle: wmi handle
3960  * @vdev_id: vdev ID
3961  * @enable: enable or disable color change handeling within firmware
3962  *
3963  * Send WMI_BSS_COLOR_CHANGE_ENABLE_CMDID parameters to fw,
3964  * thereby firmware updates bss color when AP announces bss color change.
3965  *
3966  * Return: QDF_STATUS
3967  */
3968 QDF_STATUS
3969 wmi_unified_send_bss_color_change_enable_cmd(wmi_unified_t wmi_handle,
3970 					     uint32_t vdev_id,
3971 					     bool enable);
3972 
3973 /**
3974  * wmi_unified_send_obss_color_collision_cfg_cmd() - WMI function to send bss
3975  *  color collision detection configuration to FW.
3976  * @wmi_handle: wmi handle
3977  * @cfg: obss color collision detection configuration
3978  *
3979  * Send WMI_OBSS_COLOR_COLLISION_DET_CONFIG_CMDID parameters to fw.
3980  *
3981  * Return: QDF_STATUS
3982  */
3983 QDF_STATUS wmi_unified_send_obss_color_collision_cfg_cmd(
3984 		wmi_unified_t wmi_handle,
3985 		struct wmi_obss_color_collision_cfg_param *cfg);
3986 
3987 /**
3988  * wmi_unified_extract_obss_color_collision_info() - WMI function to extract
3989  *  obss color collision info from FW.
3990  * @wmi_handle: wmi handle
3991  * @data: event data from firmware
3992  * @info: Pointer to hold bss color collision info
3993  *
3994  * This function is used to extract bss collision info from firmware.
3995  *
3996  * Return: QDF_STATUS
3997  */
3998 QDF_STATUS wmi_unified_extract_obss_color_collision_info(
3999 		wmi_unified_t wmi_handle,
4000 		uint8_t *data, struct wmi_obss_color_collision_info *info);
4001 
4002 #ifdef CRYPTO_SET_KEY_CONVERGED
4003 /**
4004  * wlan_crypto_cipher_to_wmi_cipher() - Convert crypto cipher to WMI cipher
4005  * @crypto_cipher: cipher type in crypto format
4006  *
4007  * Return: cipher type in WMI cipher type
4008  */
4009 uint8_t wlan_crypto_cipher_to_wmi_cipher(
4010 		enum wlan_crypto_cipher_type crypto_cipher);
4011 
4012 /**
4013  * wlan_crypto_cipher_to_cdp_sec_type() - Convert crypto cipher to CDP type
4014  * @crypto_cipher: cipher type in crypto format
4015  *
4016  * Return: security type in cdp_sec_type data format type
4017  */
4018 enum cdp_sec_type wlan_crypto_cipher_to_cdp_sec_type(
4019 		enum wlan_crypto_cipher_type crypto_cipher);
4020 
4021 #endif
4022 
4023 /**
4024  * wmi_unified_send_mws_coex_req_cmd() - WMI function to send coex req cmd
4025  * @wmi_hdl: wmi handle
4026  * @vdev_id: Vdev Id
4027  * @cmd_id: Coex cmd for which info is required
4028  *
4029  * Send wmi coex command to fw.
4030  *
4031  * Return: QDF_STATUS
4032  */
4033 QDF_STATUS wmi_unified_send_mws_coex_req_cmd(struct wmi_unified *wmi_handle,
4034 					     uint32_t vdev_id, uint32_t cmd_id);
4035 
4036 /**
4037  * wmi_unified_send_idle_trigger_monitor() - send idle trigger monitor command
4038  * @wmi_handle: WMI handle
4039  * @val: idle trigger monitor value - 1 for idle monitor on, 0 for idle monitor
4040  * off
4041  *
4042  * Return: QDF_STATUS_SUCCESS if success, else returns proper error code.
4043  */
4044 QDF_STATUS
4045 wmi_unified_send_idle_trigger_monitor(wmi_unified_t wmi_handle, uint8_t val);
4046 
4047 
4048 #ifdef WIFI_POS_CONVERGED
4049 /**
4050  * wmi_extract_oem_response_param() - WMI function to extract OEM response param
4051  * @wmi_hdl: WMI handle
4052  * @resp_buf: Buffer holding response data
4053  * @oem_resp_param: zero-filled structure pointer to hold oem response data
4054  *
4055  * Return: QDF_STATUS_SUCCESS if success, else returns proper error code.
4056  */
4057 QDF_STATUS
4058 wmi_extract_oem_response_param(wmi_unified_t wmi_hdl, void *resp_buf,
4059 			       struct wmi_oem_response_param *oem_resp_param);
4060 #endif /* WIFI_POS_CONVERGED */
4061 /**
4062  * wmi_critical_events_in_flight() - get the number of critical events in flight
4063  *
4064  * @wmi_hdl: WMI handle
4065  *
4066  * Return: the number of critical events in flight.
4067  */
4068 uint32_t wmi_critical_events_in_flight(struct wmi_unified *wmi);
4069 
4070 
4071 #ifdef FEATURE_ANI_LEVEL_REQUEST
4072 /**
4073  * wmi_unified_ani_level_cmd_send() - WMI function to send get ani level cmd
4074  * @wmi_hdl: WMI handle
4075  * @freqs: pointer to list of freqs for which ANI levels are to be fetched
4076  * @num_freqs: number of freqs in the above parameter
4077  *
4078  * Return: QDF_STATUS_SUCCESS if success, else returns proper error code.
4079  */
4080 QDF_STATUS wmi_unified_ani_level_cmd_send(wmi_unified_t wmi_handle,
4081 					  uint32_t *freqs,
4082 					  uint8_t num_freqs);
4083 
4084 /**
4085  * wmi_unified_extract_ani_level() - WMI function to receive ani level cmd
4086  * @wmi_hdl: WMI handle
4087  * @info: pointer to ANI data received from the FW and stored in HOST
4088  * @num_freqs: number of freqs in the above parameter
4089  *
4090  * Return: QDF_STATUS_SUCCESS if success, else returns proper error code.
4091  */
4092 QDF_STATUS wmi_unified_extract_ani_level(wmi_unified_t wmi_handle,
4093 					 uint8_t *data,
4094 					 struct wmi_host_ani_level_event **info,
4095 					 uint32_t *num_freqs);
4096 #endif /* FEATURE_ANI_LEVEL_REQUEST */
4097 
4098 #ifdef WLAN_FEATURE_PKT_CAPTURE
4099 /**
4100  * wmi_unified_extract_vdev_mgmt_offload_event() - Extract mgmt offload params
4101  * @wmi: WMI handle
4102  * @evt_buf: Event buffer
4103  * @params: Management offload event params
4104  *
4105  * WMI function to extract management offload event params
4106  *
4107  * Return: QDF_STATUS
4108  */
4109 QDF_STATUS
4110 wmi_unified_extract_vdev_mgmt_offload_event(wmi_unified_t wmi, void *evt_buf,
4111 				struct mgmt_offload_event_params *params);
4112 #endif
4113 
4114 #ifdef FEATURE_WLAN_TIME_SYNC_FTM
4115 /**
4116  * wmi_unified_send_wlan_time_sync_ftm_trigger() - send ftm timesync trigger cmd
4117  * @wmi_handle: wmi handle
4118  * @vdev_id: vdev id
4119  * @burst_mode: mode reg getting time sync relation from FW
4120  *
4121  * This function indicates the FW to trigger wlan time sync using FTM
4122  *
4123  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
4124  */
4125 QDF_STATUS
4126 wmi_unified_send_wlan_time_sync_ftm_trigger(wmi_unified_t wmi_handle,
4127 					    uint32_t vdev_id,
4128 					    bool burst_mode);
4129 
4130 /**
4131  * wmi_unified_send_wlan_time_sync_qtime() - send ftm time sync qtime cmd.
4132  * @wmi_handle: wmi handle
4133  * @vdev_id: vdev id
4134  * @lpass_ts: audio qtime
4135  *
4136  * This function sends the wmi cmd to FW having audio qtime
4137  *
4138  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
4139  */
4140 QDF_STATUS
4141 wmi_unified_send_wlan_time_sync_qtime(wmi_unified_t wmi_handle,
4142 				      uint32_t vdev_id, uint64_t lpass_ts);
4143 
4144 /**
4145  * wmi_unified_extract_time_sync_ftm_start_stop_params() - extract FTM time sync
4146  *							   params
4147  * @wmi_handle: wmi handle
4148  * @evt_buf: event buffer
4149  * @param: params received in start stop ftm timesync event
4150  *
4151  * This function extracts the params from ftm timesync start stop event
4152  *
4153  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
4154  */
4155 QDF_STATUS
4156 wmi_unified_extract_time_sync_ftm_start_stop_params(
4157 				wmi_unified_t wmi_handle, void *evt_buf,
4158 				struct ftm_time_sync_start_stop_params *param);
4159 
4160 /**
4161  * wmi_unified_extract_time_sync_ftm_offset() - extract timesync FTM offset
4162  * @wmi_handle: wmi handle
4163  * @evt_buf: event buffer
4164  * @param: params received in ftm timesync offset event
4165  *
4166  * This function extracts the params from ftm timesync offset event
4167  *
4168  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
4169  */
4170 QDF_STATUS
4171 wmi_unified_extract_time_sync_ftm_offset(wmi_unified_t wmi_handle,
4172 					 void *evt_buf,
4173 					 struct ftm_time_sync_offset *param);
4174 #endif /* FEATURE_WLAN_TIME_SYNC_FTM */
4175 
4176 /**
4177  * wmi_unified_send_injector_frame_config_cmd() - configure injector frame
4178  * @wmi_handle: wmi handle
4179  * @param: params received in the injector frame configure command
4180  *
4181  * This function configures the AP to send out injector frames
4182  *
4183  * Return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
4184  */
4185 QDF_STATUS
4186 wmi_unified_send_injector_frame_config_cmd(wmi_unified_t wmi_handle,
4187 				struct wmi_host_injector_frame_params *param);
4188 
4189 /**
4190  * wmi_unified_send_cp_stats_cmd() - Send cp stats command
4191  * @wmi_handle: wmi handle
4192  * @buf_ptr: buf_ptr received from wifistats
4193  * @buf_len: length of buffer received from wifistats
4194  *
4195  * This function sends cp stats cmd to get cp stats.
4196  *
4197  * Return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
4198  */
4199 QDF_STATUS wmi_unified_send_cp_stats_cmd(wmi_unified_t wmi_handle,
4200 					 void *buf_ptr, uint32_t buf_len);
4201 
4202 /**
4203  * wmi_unified_extract_cp_stats_more_pending() - extract more flag
4204  * @wmi_handle: wmi handle
4205  * @evt_buf: event buffer
4206  * @more_flag: more flag
4207  *
4208  * This function extracts the more_flag from fixed param
4209  *
4210  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
4211  */
4212 QDF_STATUS
4213 wmi_unified_extract_cp_stats_more_pending(wmi_unified_t wmi_handle,
4214 					  void *evt_buf, uint32_t *more_flag);
4215 
4216 /**
4217  * wmi_unified_send_vdev_tsf_tstamp_action_cmd() - send vdev tsf action command
4218  * @wmi: wmi handle
4219  * @vdev_id: vdev id
4220  *
4221  * TSF_TSTAMP_READ_VALUE is the only operation supported
4222  * Return: QDF_STATUS_SUCCESS for success or error code
4223  */
4224 QDF_STATUS wmi_unified_send_vdev_tsf_tstamp_action_cmd(wmi_unified_t wmi_hdl,
4225 						       uint8_t vdev_id);
4226 
4227 /**
4228  * wmi_extract_vdev_tsf_report_event() - extract vdev tsf report from event
4229  * @wmi_handle: wmi handle
4230  * @param evt_buf: pointer to event buffer
4231  * @wmi_host_tsf_event param: Pointer to hold event info
4232  *
4233  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
4234  */
4235 QDF_STATUS wmi_extract_vdev_tsf_report_event(wmi_unified_t wmi_hdl,
4236 					     uint8_t *evt_buf,
4237 					     struct wmi_host_tsf_event *param);
4238 
4239 /**
4240  * wmi_extract_pdev_csa_switch_count_status() - extract CSA switch count status
4241  * from event
4242  * @wmi_handle: wmi handle
4243  * @evt_buf: pointer to event buffer
4244  * @param: Pointer to CSA switch count status param
4245  *
4246  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
4247  */
4248 QDF_STATUS wmi_extract_pdev_csa_switch_count_status(
4249 		wmi_unified_t wmi_handle,
4250 		void *evt_buf,
4251 		struct pdev_csa_switch_count_status *param);
4252 #endif /* _WMI_UNIFIED_API_H_ */
4253