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