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