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