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