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