xref: /wlan-dirver/qca-wifi-host-cmn/wmi/inc/wmi_unified_api.h (revision 6ecd284e5a94a1c96e26d571dd47419ac305990d)
1 /*
2  * Copyright (c) 2013-2018 The Linux Foundation. All rights reserved.
3  *
4  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5  *
6  *
7  * Permission to use, copy, modify, and/or distribute this software for
8  * any purpose with or without fee is hereby granted, provided that the
9  * above copyright notice and this permission notice appear in all
10  * copies.
11  *
12  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19  * PERFORMANCE OF THIS SOFTWARE.
20  */
21 
22 /*
23  * This file was originally distributed by Qualcomm Atheros, Inc.
24  * under proprietary terms before Copyright ownership was assigned
25  * to the Linux Foundation.
26  */
27 
28 /*
29  * This file contains the API definitions for the Unified Wireless Module
30  * Interface (WMI).
31  */
32 
33 #ifndef _WMI_UNIFIED_API_H_
34 #define _WMI_UNIFIED_API_H_
35 
36 #include <osdep.h>
37 #ifdef CONFIG_MCL
38 #include "wmi.h"
39 #endif
40 #include "htc_api.h"
41 #include "wmi_unified_param.h"
42 #include "service_ready_param.h"
43 #include "wlan_objmgr_psoc_obj.h"
44 #include "wlan_mgmt_txrx_utils_api.h"
45 #ifdef WLAN_PMO_ENABLE
46 #include "wmi_unified_pmo_api.h"
47 #endif
48 #ifdef CONVERGED_P2P_ENABLE
49 #include "wlan_p2p_public_struct.h"
50 #endif
51 #include "wlan_scan_public_structs.h"
52 #ifdef WLAN_FEATURE_DISA
53 #include "wlan_disa_public_struct.h"
54 #endif
55 
56 #ifdef WLAN_FEATURE_NAN_CONVERGENCE
57 #include "nan_public_structs.h"
58 #endif
59 #ifdef WLAN_SUPPORT_GREEN_AP
60 #include "wlan_green_ap_api.h"
61 #endif
62 #ifdef WLAN_FEATURE_DSRC
63 #include "wlan_ocb_public_structs.h"
64 #endif
65 #ifdef WLAN_SUPPORT_TWT
66 #include "wmi_unified_twt_param.h"
67 #include "wmi_unified_twt_api.h"
68 #endif
69 
70 #ifdef IPA_OFFLOAD
71 #include "wlan_ipa_public_struct.h"
72 #endif
73 
74 typedef qdf_nbuf_t wmi_buf_t;
75 #define wmi_buf_data(_buf) qdf_nbuf_data(_buf)
76 
77 #define WMI_LOGD(args ...) \
78 	QDF_TRACE(QDF_MODULE_ID_WMI, QDF_TRACE_LEVEL_DEBUG, ## args)
79 #define WMI_LOGI(args ...) \
80 	QDF_TRACE(QDF_MODULE_ID_WMI, QDF_TRACE_LEVEL_INFO, ## args)
81 #define WMI_LOGW(args ...) \
82 	QDF_TRACE(QDF_MODULE_ID_WMI, QDF_TRACE_LEVEL_WARN, ## args)
83 #define WMI_LOGE(args ...) \
84 	QDF_TRACE(QDF_MODULE_ID_WMI, QDF_TRACE_LEVEL_ERROR, ## args)
85 #define WMI_LOGP(args ...) \
86 	QDF_TRACE(QDF_MODULE_ID_WMI, QDF_TRACE_LEVEL_FATAL, ## args)
87 
88 
89 
90 #define PHYERROR_MAX_BUFFER_LENGTH 0x7F000000
91 
92 struct wmi_soc;
93 /**
94  * struct wmi_ops - service callbacks to upper layer
95  * @service_ready_cbk: service ready callback
96  * @service_ready_ext_cbk: service ready ext callback
97  * @ready_cbk: ready calback
98  * @wma_process_fw_event_handler_cbk: generic event handler callback
99  */
100 struct wmi_rx_ops {
101 
102 	int (*wma_process_fw_event_handler_cbk)(void *ctx,
103 				  void *ev, uint8_t rx_ctx);
104 };
105 
106 /**
107  * enum wmi_target_type - type of supported wmi command
108  * @WMI_TLV_TARGET: tlv based target
109  * @WMI_NON_TLV_TARGET: non-tlv based target
110  *
111  */
112 enum wmi_target_type {
113 	WMI_TLV_TARGET,
114 	WMI_NON_TLV_TARGET,
115 	WMI_MAX_TARGET_TYPE
116 };
117 
118 /**
119  * enum wmi_rx_exec_ctx - wmi rx execution context
120  * @WMI_RX_WORK_CTX: work queue context execution provided by WMI layer
121  * @WMI_RX_UMAC_CTX: execution context provided by umac layer
122  *
123  */
124 enum wmi_rx_exec_ctx {
125 	WMI_RX_WORK_CTX,
126 	WMI_RX_UMAC_CTX
127 };
128 
129 /**
130  * struct wmi_unified_attach_params - wmi init parameters
131  *  @param osdev            : NIC device
132  *  @param target_type      : type of supported wmi command
133  *  @param use_cookie       : flag to indicate cookie based allocation
134  *  @param ops              : handle to wmi ops
135  *  @psoc                   : objmgr psoc
136  *  @max_commands           : max commands
137  */
138 struct wmi_unified_attach_params {
139 	osdev_t osdev;
140 	enum wmi_target_type target_type;
141 	bool use_cookie;
142 	struct wmi_rx_ops *rx_ops;
143 	struct wlan_objmgr_psoc *psoc;
144 	uint16_t max_commands;
145 };
146 
147 /**
148  * attach for unified WMI
149  *
150  *  @param scn_handle      : handle to SCN.
151  *  @param params          : attach params for WMI
152  *
153  */
154 void *wmi_unified_attach(void *scn_handle,
155 			 struct wmi_unified_attach_params *params);
156 
157 
158 
159 /**
160  * wmi_mgmt_cmd_record() - Wrapper function for mgmt command logging macro
161  *
162  * @wmi_handle: wmi handle
163  * @cmd: mgmt command
164  * @header: pointer to 802.11 header
165  * @vdev_id: vdev id
166  * @chanfreq: channel frequency
167  *
168  * Return: none
169  */
170 void wmi_mgmt_cmd_record(wmi_unified_t wmi_handle, uint32_t cmd,
171 			void *header, uint32_t vdev_id, uint32_t chanfreq);
172 
173 /**
174  * detach for unified WMI
175  *
176  *  @param wmi_handle      : handle to WMI.
177  *  @return void.
178  */
179 void wmi_unified_detach(struct wmi_unified *wmi_handle);
180 
181 /**
182  * API to sync time between host and firmware
183  *
184  *  @param wmi_handle      : handle to WMI.
185  *  @return void.
186  */
187 void wmi_send_time_stamp_sync_cmd_tlv(void *wmi_hdl);
188 
189 void
190 wmi_unified_remove_work(struct wmi_unified *wmi_handle);
191 
192 /**
193  * generic function to allocate WMI buffer
194  *
195  *  @param wmi_handle      : handle to WMI.
196  *  @param len             : length of the buffer
197  *  @return wmi_buf_t.
198  */
199 #ifdef NBUF_MEMORY_DEBUG
200 #define wmi_buf_alloc(h, l) wmi_buf_alloc_debug(h, l, __FILE__, __LINE__)
201 wmi_buf_t
202 wmi_buf_alloc_debug(wmi_unified_t wmi_handle, uint16_t len,
203 		    uint8_t *file_name, uint32_t line_num);
204 #else
205 wmi_buf_t wmi_buf_alloc(wmi_unified_t wmi_handle, uint16_t len);
206 #endif
207 
208 /**
209  * generic function frees WMI net buffer
210  *
211  *  @param net_buf : Pointer ot net_buf to be freed
212  */
213 void wmi_buf_free(wmi_buf_t net_buf);
214 
215 /**
216  * generic function to send unified WMI command
217  *
218  *  @param wmi_handle      : handle to WMI.
219  *  @param buf             : wmi command buffer
220  *  @param buflen          : wmi command buffer length
221  *  @param cmd_id          : WMI cmd id
222  *  @return 0  on success and -ve on failure.
223  */
224 QDF_STATUS
225 wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, uint32_t buflen,
226 			uint32_t cmd_id);
227 
228 /**
229  * wmi_unified_register_event() - WMI event handler
230  * registration function for converged components
231  *
232  * @wmi_handle:   handle to WMI.
233  * @event_id:     WMI event ID
234  * @handler_func: Event handler call back function
235  *
236  *  @return 0  on success and -ve on failure.
237  */
238 int
239 wmi_unified_register_event(wmi_unified_t wmi_handle,
240 				   uint32_t event_id,
241 				   wmi_unified_event_handler handler_func);
242 
243 /**
244  * wmi_unified_register_event_handler() - WMI event handler
245  * registration function
246  *
247  * @wmi_handle:   handle to WMI.
248  * @event_id:     WMI event ID
249  * @handler_func: Event handler call back function
250  * @rx_ctx: rx event processing context
251  *
252  *  @return 0  on success and -ve on failure.
253  */
254 int
255 wmi_unified_register_event_handler(wmi_unified_t wmi_handle,
256 				   wmi_conv_event_id event_id,
257 				   wmi_unified_event_handler handler_func,
258 				   uint8_t rx_ctx);
259 
260 /**
261  * WMI event handler unregister function for converged componets
262  *
263  *  @param wmi_handle      : handle to WMI.
264  *  @param event_id        : WMI event ID
265  *  @return 0  on success and -ve on failure.
266  */
267 int
268 wmi_unified_unregister_event(wmi_unified_t wmi_handle,
269 					 uint32_t event_id);
270 
271 /**
272  * WMI event handler unregister function
273  *
274  *  @param wmi_handle      : handle to WMI.
275  *  @param event_id        : WMI event ID
276  *  @return 0  on success and -ve on failure.
277  */
278 int
279 wmi_unified_unregister_event_handler(wmi_unified_t wmi_handle,
280 					 wmi_conv_event_id event_id);
281 
282 /**
283  * request wmi to connet its htc service.
284  *  @param wmi_handle      : handle to WMI.
285  *  @param htc_handle      : handle to HTC.
286  *  @return void
287  */
288 QDF_STATUS
289 wmi_unified_connect_htc_service(struct wmi_unified *wmi_handle,
290 				void *htc_handle);
291 
292 /*
293  * WMI API to verify the host has enough credits to suspend
294  *  @param wmi_handle      : handle to WMI.
295  */
296 
297 int wmi_is_suspend_ready(wmi_unified_t wmi_handle);
298 
299 /**
300  *  WMI API to get updated host_credits
301  *  @param wmi_handle      : handle to WMI.
302  */
303 
304 int wmi_get_host_credits(wmi_unified_t wmi_handle);
305 
306 /**
307  *  WMI API to get WMI Pending Commands in the HTC queue
308  *  @param wmi_handle      : handle to WMI.
309  */
310 
311 int wmi_get_pending_cmds(wmi_unified_t wmi_handle);
312 
313 /**
314  *  WMI API to set target suspend state
315  *  @param wmi_handle      : handle to WMI.
316  *  @param val             : suspend state boolean
317  */
318 void wmi_set_target_suspend(wmi_unified_t wmi_handle, bool val);
319 
320 /**
321  * WMI API to set bus suspend state
322  * @param wmi_handle:	handle to WMI.
323  * @param val:		suspend state boolean
324  */
325 void wmi_set_is_wow_bus_suspended(wmi_unified_t wmi_handle, A_BOOL val);
326 
327 /**
328  * WMI API to set crash injection state
329  * @param wmi_handle:	handle to WMI.
330  * @param val:		crash injection state boolean
331  */
332 void wmi_tag_crash_inject(wmi_unified_t wmi_handle, A_BOOL flag);
333 
334 /**
335  * WMI API to set target assert
336  * @param wmi_handle: 	handle to WMI.
337  * @param val:		target assert config value.
338  *
339  * Return: 		none.
340  */
341 void wmi_set_tgt_assert(wmi_unified_t wmi_handle, bool val);
342 
343 /**
344  * generic function to block unified WMI command
345  * @param wmi_handle      : handle to WMI.
346  * @return 0  on success and -ve on failure.
347  */
348 int
349 wmi_stop(wmi_unified_t wmi_handle);
350 
351 /**
352  * API to flush all the previous packets  associated with the wmi endpoint
353  *
354  * @param wmi_handle      : handle to WMI.
355  */
356 void
357 wmi_flush_endpoint(wmi_unified_t wmi_handle);
358 
359 /**
360  * wmi_pdev_id_conversion_enable() - API to enable pdev_id conversion in WMI
361  *                     By default pdev_id conversion is not done in WMI.
362  *                     This API can be used enable conversion in WMI.
363  * @param wmi_handle   : handle to WMI
364  * Return none
365  */
366 void wmi_pdev_id_conversion_enable(wmi_unified_t wmi_handle);
367 
368 /**
369  * API to handle wmi rx event after UMAC has taken care of execution
370  * context
371  *
372  * @param wmi_handle      : handle to WMI.
373  * @param evt_buf         : wmi event buffer
374  */
375 void __wmi_control_rx(struct wmi_unified *wmi_handle, wmi_buf_t evt_buf);
376 #ifdef FEATURE_RUNTIME_PM
377 void
378 wmi_set_runtime_pm_inprogress(wmi_unified_t wmi_handle, bool val);
379 bool wmi_get_runtime_pm_inprogress(wmi_unified_t wmi_handle);
380 #else
381 static inline void
382 wmi_set_runtime_pm_inprogress(wmi_unified_t wmi_handle, bool val)
383 {
384 	return;
385 }
386 static inline bool wmi_get_runtime_pm_inprogress(wmi_unified_t wmi_handle)
387 {
388 	return false;
389 }
390 #endif
391 
392 void *wmi_unified_get_soc_handle(struct wmi_unified *wmi_handle);
393 
394 void *wmi_unified_get_pdev_handle(struct wmi_soc *soc, uint32_t pdev_idx);
395 
396 /**
397  * UMAC Callback to process fw event.
398  * @param wmi_handle      : handle to WMI.
399  * @param evt_buf         : wmi event buffer
400  */
401 void wmi_process_fw_event(struct wmi_unified *wmi_handle, wmi_buf_t evt_buf);
402 uint16_t wmi_get_max_msg_len(wmi_unified_t wmi_handle);
403 
404 
405 QDF_STATUS wmi_unified_vdev_create_send(void *wmi_hdl,
406 				 uint8_t macaddr[IEEE80211_ADDR_LEN],
407 				 struct vdev_create_params *param);
408 
409 QDF_STATUS wmi_unified_vdev_delete_send(void *wmi_hdl,
410 					  uint8_t if_id);
411 
412 QDF_STATUS wmi_unified_vdev_restart_send(void *wmi_hdl,
413 				uint8_t macaddr[IEEE80211_ADDR_LEN],
414 				struct vdev_start_params *param);
415 
416 QDF_STATUS wmi_unified_vdev_stop_send(void *wmi_hdl,
417 					uint8_t vdev_id);
418 
419 QDF_STATUS wmi_unified_vdev_up_send(void *wmi_hdl,
420 			     uint8_t bssid[IEEE80211_ADDR_LEN],
421 				 struct vdev_up_params *params);
422 
423 QDF_STATUS wmi_unified_vdev_down_send(void *wmi_hdl,
424 				uint8_t vdev_id);
425 
426 QDF_STATUS wmi_unified_vdev_start_send(void *wmi_hdl,
427 				struct vdev_start_params *req);
428 /**
429  * wmi_unified_vdev_set_nac_rssi_send() - send NAC_RSSI command to fw
430  * @param wmi_handle   : handle to WMI
431  * @param req          : pointer to hold nac rssi request data
432  *
433  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
434  */
435 QDF_STATUS wmi_unified_vdev_set_nac_rssi_send(void *wmi_hdl,
436 			struct vdev_scan_nac_rssi_params *req);
437 
438 QDF_STATUS wmi_unified_hidden_ssid_vdev_restart_send(void *wmi_hdl,
439 		struct hidden_ssid_vdev_restart_params *restart_params);
440 
441 QDF_STATUS wmi_unified_vdev_set_param_send(void *wmi_hdl,
442 				struct vdev_set_params *param);
443 
444 QDF_STATUS wmi_unified_peer_delete_send(void *wmi_hdl,
445 				    uint8_t
446 				    peer_addr[IEEE80211_ADDR_LEN],
447 				    uint8_t vdev_id);
448 
449 QDF_STATUS wmi_unified_peer_flush_tids_send(void *wmi_hdl,
450 					 uint8_t peer_addr[IEEE80211_ADDR_LEN],
451 					 struct peer_flush_params *param);
452 
453 QDF_STATUS wmi_set_peer_param_send(void *wmi_hdl,
454 				uint8_t peer_addr[IEEE80211_ADDR_LEN],
455 				struct peer_set_params *param);
456 
457 QDF_STATUS wmi_unified_peer_create_send(void *wmi_hdl,
458 					struct peer_create_params *param);
459 
460 QDF_STATUS wmi_unified_stats_request_send(void *wmi_hdl,
461 				uint8_t macaddr[IEEE80211_ADDR_LEN],
462 				struct stats_request_params *param);
463 
464 QDF_STATUS wmi_unified_green_ap_ps_send(void *wmi_hdl,
465 					uint32_t value, uint8_t pdev_id);
466 
467 #ifdef FEATURE_WLAN_D0WOW
468 QDF_STATUS wmi_unified_d0wow_enable_send(void *wmi_hdl,
469 				uint8_t mac_id);
470 QDF_STATUS wmi_unified_d0wow_disable_send(void *wmi_hdl,
471 				uint8_t mac_id);
472 #endif
473 
474 QDF_STATUS wmi_unified_wow_enable_send(void *wmi_hdl,
475 				struct wow_cmd_params *param,
476 				uint8_t mac_id);
477 
478 QDF_STATUS wmi_unified_wow_wakeup_send(void *wmi_hdl);
479 
480 QDF_STATUS wmi_unified_wow_add_wakeup_event_send(void *wmi_hdl,
481 		struct wow_add_wakeup_params *param);
482 
483 QDF_STATUS wmi_unified_wow_add_wakeup_pattern_send(void *wmi_hdl,
484 		struct wow_add_wakeup_pattern_params *param);
485 
486 QDF_STATUS wmi_unified_wow_remove_wakeup_pattern_send(void *wmi_hdl,
487 		struct wow_remove_wakeup_pattern_params *param);
488 
489 #ifndef CONFIG_MCL
490 QDF_STATUS wmi_unified_packet_log_enable_send(void *wmi_hdl,
491 			WMI_HOST_PKTLOG_EVENT PKTLOG_EVENT, uint8_t mac_id);
492 #else
493 QDF_STATUS wmi_unified_packet_log_enable_send(void *wmi_hdl,
494 				uint8_t macaddr[IEEE80211_ADDR_LEN],
495 				struct packet_enable_params *param);
496 #endif
497 
498 QDF_STATUS wmi_unified_packet_log_disable_send(void *wmi_hdl, uint8_t mac_id);
499 
500 QDF_STATUS wmi_unified_suspend_send(void *wmi_hdl,
501 				struct suspend_params *param,
502 				uint8_t mac_id);
503 
504 QDF_STATUS wmi_unified_resume_send(void *wmi_hdl,
505 				uint8_t mac_id);
506 
507 QDF_STATUS
508 wmi_unified_pdev_param_send(void *wmi_hdl,
509 			   struct pdev_params *param,
510 				uint8_t mac_id);
511 
512 QDF_STATUS wmi_unified_beacon_tmpl_send_cmd(void *wmi_hdl,
513 				struct beacon_tmpl_params *param);
514 
515 
516 QDF_STATUS wmi_unified_beacon_send_cmd(void *wmi_hdl,
517 				struct beacon_params *param);
518 
519 QDF_STATUS wmi_unified_peer_assoc_send(void *wmi_hdl,
520 				struct peer_assoc_params *param);
521 
522 QDF_STATUS wmi_unified_sta_ps_cmd_send(void *wmi_hdl,
523 				struct sta_ps_params *param);
524 
525 QDF_STATUS wmi_unified_ap_ps_cmd_send(void *wmi_hdl,
526 				uint8_t macaddr[IEEE80211_ADDR_LEN],
527 				struct ap_ps_params *param);
528 
529 QDF_STATUS wmi_unified_scan_start_cmd_send(void *wmi_hdl,
530 				struct scan_req_params *param);
531 
532 QDF_STATUS wmi_unified_scan_stop_cmd_send(void *wmi_hdl,
533 				struct scan_cancel_param *param);
534 
535 QDF_STATUS wmi_unified_scan_chan_list_cmd_send(void *wmi_hdl,
536 				struct scan_chan_list_params *param);
537 
538 
539 QDF_STATUS wmi_crash_inject(void *wmi_hdl,
540 				struct crash_inject *param);
541 
542 QDF_STATUS wmi_unified_pdev_utf_cmd_send(void *wmi_hdl,
543 				struct pdev_utf_params *param,
544 				uint8_t mac_id);
545 
546 QDF_STATUS wmi_unified_dbglog_cmd_send(void *wmi_hdl,
547 				struct dbglog_params *param);
548 
549 QDF_STATUS wmi_mgmt_unified_cmd_send(void *wmi_hdl,
550 				struct wmi_mgmt_params *param);
551 
552 QDF_STATUS wmi_offchan_data_tx_cmd_send(void *wmi_hdl,
553 				struct wmi_offchan_data_tx_params *param);
554 
555 QDF_STATUS wmi_unified_modem_power_state(void *wmi_hdl,
556 		uint32_t param_value);
557 
558 QDF_STATUS wmi_unified_set_sta_ps_mode(void *wmi_hdl,
559 			       uint32_t vdev_id, uint8_t val);
560 QDF_STATUS
561 wmi_unified_set_sta_uapsd_auto_trig_cmd(void *wmi_hdl,
562 				struct sta_uapsd_trig_params *param);
563 
564 QDF_STATUS wmi_unified_get_temperature(void *wmi_hdl);
565 
566 QDF_STATUS wmi_unified_set_p2pgo_oppps_req(void *wmi_hdl,
567 		struct p2p_ps_params *oppps);
568 
569 QDF_STATUS wmi_unified_set_p2pgo_noa_req_cmd(void *wmi_hdl,
570 			struct p2p_ps_params *noa);
571 
572 #ifdef CONVERGED_P2P_ENABLE
573 QDF_STATUS wmi_unified_p2p_lo_start_cmd(void *wmi_hdl,
574 			struct p2p_lo_start *param);
575 
576 QDF_STATUS wmi_unified_p2p_lo_stop_cmd(void *wmi_hdl, uint8_t vdev_id);
577 #endif
578 
579 QDF_STATUS wmi_unified_set_smps_params(void *wmi_hdl, uint8_t vdev_id,
580 			       int value);
581 
582 QDF_STATUS wmi_unified_set_mimops(void *wmi_hdl, uint8_t vdev_id, int value);
583 
584 #ifdef WLAN_FEATURE_DSRC
585 /**
586  * wmi_unified_ocb_start_timing_advert() - start sending the timing
587  *  advertisement frames on a channel
588  * @wmi_handle: pointer to the wmi handle
589  * @timing_advert: pointer to the timing advertisement struct
590  *
591  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
592  */
593 QDF_STATUS wmi_unified_ocb_start_timing_advert(struct wmi_unified *wmi_handle,
594 	struct ocb_timing_advert_param *timing_advert);
595 
596 /**
597  * wmi_unified_ocb_stop_timing_advert() - stop sending the timing
598  *  advertisement frames on a channel
599  * @wmi_handle: pointer to the wmi handle
600  * @timing_advert: pointer to the timing advertisement struct
601  *
602  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
603  */
604 QDF_STATUS wmi_unified_ocb_stop_timing_advert(struct wmi_unified *wmi_handle,
605 	struct ocb_timing_advert_param *timing_advert);
606 
607 /**
608  * wmi_unified_ocb_set_config() - send the OCB config to the FW
609  * @wmi_handle: pointer to the wmi handle
610  * @config: the OCB configuration
611  *
612  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failures
613  */
614 QDF_STATUS wmi_unified_ocb_set_config(struct wmi_unified *wmi_handle,
615 				      struct ocb_config *config);
616 
617 /**
618  * wmi_unified_ocb_get_tsf_timer() - get ocb tsf timer val
619  * @wmi_handle: pointer to the wmi handle
620  * @req: request for tsf timer
621  *
622  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
623  */
624 QDF_STATUS wmi_unified_ocb_get_tsf_timer(struct wmi_unified *wmi_handle,
625 					 struct ocb_get_tsf_timer_param *req);
626 
627 /**
628  * wmi_unified_ocb_set_utc_time_cmd() - get ocb tsf timer val
629  * @wmi_handle: pointer to the wmi handle
630  * @vdev_id: vdev id
631  *
632  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
633  */
634 QDF_STATUS wmi_unified_ocb_set_utc_time_cmd(struct wmi_unified *wmi_handle,
635 					    struct ocb_utc_param *utc);
636 
637 /**
638  * wmi_unified_dcc_get_stats_cmd() - get the DCC channel stats
639  * @wmi_handle: pointer to the wmi handle
640  * @get_stats_param: pointer to the dcc stats
641  *
642  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
643  */
644 QDF_STATUS wmi_unified_dcc_get_stats_cmd(struct wmi_unified *wmi_handle,
645 		     struct ocb_dcc_get_stats_param *get_stats_param);
646 
647 /**
648  * wmi_unified_dcc_clear_stats() - command to clear the DCC stats
649  * @wmi_handle: pointer to the wmi handle
650  * @clear_stats_param: parameters to the command
651  *
652  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
653  */
654 QDF_STATUS wmi_unified_dcc_clear_stats(struct wmi_unified *wmi_handle,
655 			struct ocb_dcc_clear_stats_param *clear_stats_param);
656 
657 /**
658  * wmi_unified_dcc_update_ndl() - command to update the NDL data
659  * @wmi_handle: pointer to the wmi handle
660  * @update_ndl_param: pointer to the request parameters
661  *
662  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failures
663  */
664 QDF_STATUS wmi_unified_dcc_update_ndl(struct wmi_unified *wmi_handle,
665 		       struct ocb_dcc_update_ndl_param *update_ndl_param);
666 
667 /**
668  * wmi_extract_ocb_set_channel_config_resp() - extract status from wmi event
669  * @wmi_handle: wmi handle
670  * @evt_buf: pointer to event buffer
671  * @status: status buffer
672  *
673  * Return: QDF_STATUS_SUCCESS on success
674  */
675 QDF_STATUS
676 wmi_extract_ocb_set_channel_config_resp(struct wmi_unified *wmi_handle,
677 					void *evt_buf,
678 					uint32_t *status);
679 
680 /**
681  * wmi_extract_ocb_tsf_timer() - extract tsf timer from wmi event
682  * @wmi_handle: wmi handle
683  * @evt_buf: pointer to event buffer
684  * @resp: tsf timer
685  *
686  * Return: QDF_STATUS_SUCCESS on success
687  */
688 QDF_STATUS wmi_extract_ocb_tsf_timer(struct wmi_unified *wmi_handle,
689 				     void *evt_buf,
690 				     struct ocb_get_tsf_timer_response *resp);
691 
692 /**
693  * wmi_extract_dcc_update_ndl_resp() - extract NDL update from wmi event
694  * @wmi_handle: wmi handle
695  * @evt_buf: pointer to event buffer
696  * @resp: ndl update status
697  *
698  * Return: QDF_STATUS_SUCCESS on success
699  */
700 QDF_STATUS wmi_extract_dcc_update_ndl_resp(struct wmi_unified *wmi_handle,
701 		void *evt_buf, struct ocb_dcc_update_ndl_response *resp);
702 
703 /**
704  * wmi_extract_dcc_stats() - extract DCC stats from wmi event
705  * @wmi_handle: wmi handle
706  * @evt_buf: pointer to event buffer
707  * @resp: DCC stats
708  *
709  * Since length of the response is variable, response buffer will be allocated.
710  * The caller must free the response buffer.
711  *
712  * Return: QDF_STATUS_SUCCESS on success
713  */
714 QDF_STATUS wmi_extract_dcc_stats(struct wmi_unified *wmi_handle,
715 				 void *evt_buf,
716 				 struct ocb_dcc_get_stats_response **response);
717 #endif
718 
719 QDF_STATUS wmi_unified_lro_config_cmd(void *wmi_hdl,
720 	 struct wmi_lro_config_cmd_t *wmi_lro_cmd);
721 
722 QDF_STATUS wmi_unified_set_thermal_mgmt_cmd(void *wmi_hdl,
723 				struct thermal_cmd_params *thermal_info);
724 
725 QDF_STATUS wmi_unified_peer_rate_report_cmd(void *wmi_hdl,
726 		struct wmi_peer_rate_report_params *rate_report_params);
727 
728 QDF_STATUS wmi_unified_set_mcc_channel_time_quota_cmd
729 	(void *wmi_hdl,
730 	uint32_t adapter_1_chan_freq,
731 	uint32_t adapter_1_quota, uint32_t adapter_2_chan_freq);
732 
733 QDF_STATUS wmi_unified_set_mcc_channel_time_latency_cmd
734 	(void *wmi_hdl,
735 	uint32_t mcc_channel_freq, uint32_t mcc_channel_time_latency);
736 
737 QDF_STATUS wmi_unified_set_enable_disable_mcc_adaptive_scheduler_cmd(
738 		   void *wmi_hdl, uint32_t mcc_adaptive_scheduler,
739 		   uint32_t pdev_id);
740 
741 #ifdef CONFIG_MCL
742 QDF_STATUS wmi_unified_bcn_buf_ll_cmd(void *wmi_hdl,
743 			wmi_bcn_send_from_host_cmd_fixed_param *param);
744 #endif
745 
746 QDF_STATUS wmi_unified_set_sta_sa_query_param_cmd(void *wmi_hdl,
747 				       uint8_t vdev_id, uint32_t max_retries,
748 					   uint32_t retry_interval);
749 
750 
751 QDF_STATUS wmi_unified_set_sta_keep_alive_cmd(void *wmi_hdl,
752 				struct sta_params *params);
753 
754 QDF_STATUS wmi_unified_vdev_set_gtx_cfg_cmd(void *wmi_hdl, uint32_t if_id,
755 				  struct wmi_gtx_config *gtx_info);
756 
757 QDF_STATUS wmi_unified_process_update_edca_param(void *wmi_hdl,
758 		     uint8_t vdev_id, bool mu_edca_param,
759 		     struct wmi_host_wme_vparams wmm_vparams[WMI_MAX_NUM_AC]);
760 
761 QDF_STATUS wmi_unified_probe_rsp_tmpl_send_cmd(void *wmi_hdl,
762 		   uint8_t vdev_id,
763 		   struct wmi_probe_resp_params *probe_rsp_info);
764 
765 QDF_STATUS wmi_unified_setup_install_key_cmd(void *wmi_hdl,
766 			struct set_key_params *key_params);
767 
768 #ifdef WLAN_FEATURE_DISA
769 /**
770  * wmi_unified_encrypt_decrypt_send_cmd() - send encryptdecrypt cmd to fw
771  * @wmi_hdl: wmi handle
772  * @params: encrypt/decrypt params
773  *
774  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
775  */
776 QDF_STATUS wmi_unified_encrypt_decrypt_send_cmd(void *wmi_hdl,
777 			struct disa_encrypt_decrypt_req_params *params);
778 
779 /**
780  * wmi_extract_encrypt_decrypt_resp_params() -
781  *       extract encrypt decrypt resp params from event buffer
782  * @wmi_handle: wmi handle
783  * @evt_buf: pointer to event buffer
784  * @resp: encrypt decrypt resp params
785  *
786  * Return: QDF_STATUS_SUCCESS for success or error code
787  */
788 QDF_STATUS wmi_extract_encrypt_decrypt_resp_params(void *wmi_hdl,
789 			uint8_t *evt_buf,
790 			struct disa_encrypt_decrypt_resp_params *resp);
791 #endif
792 
793 QDF_STATUS wmi_unified_p2p_go_set_beacon_ie_cmd(void *wmi_hdl,
794 				    uint32_t vdev_id, uint8_t *p2p_ie);
795 
796 
797 QDF_STATUS wmi_unified_set_gateway_params_cmd(void *wmi_hdl,
798 					struct gateway_update_req_param *req);
799 
800 QDF_STATUS wmi_unified_set_rssi_monitoring_cmd(void *wmi_hdl,
801 					struct rssi_monitor_param *req);
802 
803 QDF_STATUS wmi_unified_scan_probe_setoui_cmd(void *wmi_hdl,
804 			  struct scan_mac_oui *psetoui);
805 
806 QDF_STATUS wmi_unified_reset_passpoint_network_list_cmd(void *wmi_hdl,
807 					struct wifi_passpoint_req_param *req);
808 
809 QDF_STATUS wmi_unified_set_passpoint_network_list_cmd(void *wmi_hdl,
810 					struct wifi_passpoint_req_param *req);
811 
812 #ifdef CONFIG_MCL
813 QDF_STATUS wmi_unified_roam_scan_offload_mode_cmd(void *wmi_hdl,
814 				wmi_start_scan_cmd_fixed_param *scan_cmd_fp,
815 				struct roam_offload_scan_params *roam_req);
816 #endif
817 
818 /**
819  * wmi_unified_roam_mawc_params_cmd() - configure roaming MAWC parameters
820  * @wmi_hdl: wmi handle
821  * @params: Parameters to be configured
822  *
823  * Pass the MAWC(Motion Aided wireless connectivity) related roaming
824  * parameters from the host to the target
825  *
826  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
827  */
828 QDF_STATUS wmi_unified_roam_mawc_params_cmd(void *wmi_hdl,
829 			struct wmi_mawc_roam_params *params);
830 
831 QDF_STATUS wmi_unified_roam_scan_offload_rssi_thresh_cmd(void *wmi_hdl,
832 				struct roam_offload_scan_rssi_params *roam_req);
833 
834 QDF_STATUS wmi_unified_roam_scan_filter_cmd(void *wmi_hdl,
835 				struct roam_scan_filter_params *roam_req);
836 
837 QDF_STATUS wmi_unified_set_epno_network_list_cmd(void *wmi_hdl,
838 		struct wifi_enhanched_pno_params *req);
839 
840 #ifdef IPA_OFFLOAD
841 QDF_STATUS  wmi_unified_ipa_offload_control_cmd(void *wmi_hdl,
842 		struct ipa_uc_offload_control_params *ipa_offload);
843 #endif
844 
845 QDF_STATUS wmi_unified_extscan_get_capabilities_cmd(void *wmi_hdl,
846 			  struct extscan_capabilities_params *pgetcapab);
847 
848 QDF_STATUS wmi_unified_extscan_get_cached_results_cmd(void *wmi_hdl,
849 			  struct extscan_cached_result_params *pcached_results);
850 
851 
852 QDF_STATUS wmi_unified_extscan_stop_change_monitor_cmd(void *wmi_hdl,
853 			  struct extscan_capabilities_reset_params *reset_req);
854 
855 
856 QDF_STATUS wmi_unified_extscan_start_change_monitor_cmd(void *wmi_hdl,
857 				   struct extscan_set_sig_changereq_params *
858 					   psigchange);
859 
860 QDF_STATUS wmi_unified_extscan_stop_hotlist_monitor_cmd(void *wmi_hdl,
861 		  struct extscan_bssid_hotlist_reset_params *photlist_reset);
862 
863 QDF_STATUS wmi_unified_stop_extscan_cmd(void *wmi_hdl,
864 			  struct extscan_stop_req_params *pstopcmd);
865 
866 QDF_STATUS wmi_unified_start_extscan_cmd(void *wmi_hdl,
867 			  struct wifi_scan_cmd_req_params *pstart);
868 
869 QDF_STATUS wmi_unified_plm_stop_cmd(void *wmi_hdl,
870 			  const struct plm_req_params *plm);
871 
872 QDF_STATUS wmi_unified_plm_start_cmd(void *wmi_hdl,
873 			  const struct plm_req_params *plm,
874 			  uint32_t *gchannel_list);
875 
876 QDF_STATUS wmi_unified_pno_stop_cmd(void *wmi_hdl, uint8_t vdev_id);
877 
878 #ifdef FEATURE_WLAN_SCAN_PNO
879 QDF_STATUS wmi_unified_pno_start_cmd(void *wmi_hdl,
880 		   struct pno_scan_req_params *pno);
881 #endif
882 
883 QDF_STATUS wmi_unified_nlo_mawc_cmd(void *wmi_hdl,
884 		struct nlo_mawc_params *params);
885 
886 QDF_STATUS wmi_unified_set_ric_req_cmd(void *wmi_hdl, void *msg,
887 			uint8_t is_add_ts);
888 
889 QDF_STATUS wmi_unified_process_ll_stats_clear_cmd
890 	(void *wmi_hdl, const struct ll_stats_clear_params *clear_req,
891 	 uint8_t addr[IEEE80211_ADDR_LEN]);
892 
893 QDF_STATUS wmi_unified_process_ll_stats_set_cmd
894 	(void *wmi_hdl, const struct ll_stats_set_params *set_req);
895 
896 QDF_STATUS wmi_unified_process_ll_stats_get_cmd
897 	(void *wmi_hdl, const struct ll_stats_get_params  *get_req,
898 		 uint8_t addr[IEEE80211_ADDR_LEN]);
899 
900 /**
901  * wmi_unified_congestion_request_cmd() - send request to fw to get CCA
902  * @wmi_hdl: wma handle
903  * @vdev_id: vdev id
904  *
905  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
906  */
907 QDF_STATUS wmi_unified_congestion_request_cmd(void *wmi_hdl,
908 		uint8_t vdev_id);
909 
910 QDF_STATUS wmi_unified_snr_request_cmd(void *wmi_hdl);
911 
912 QDF_STATUS wmi_unified_snr_cmd(void *wmi_hdl, uint8_t vdev_id);
913 
914 QDF_STATUS wmi_unified_link_status_req_cmd(void *wmi_hdl,
915 				 struct link_status_params *link_status);
916 
917 #ifdef CONFIG_MCL
918 QDF_STATUS wmi_unified_process_dhcp_ind(void *wmi_hdl,
919 				wmi_peer_set_param_cmd_fixed_param *ta_dhcp_ind);
920 
921 QDF_STATUS wmi_unified_get_link_speed_cmd(void *wmi_hdl,
922 					wmi_mac_addr peer_macaddr);
923 #endif
924 
925 #ifdef WLAN_SUPPORT_GREEN_AP
926 QDF_STATUS wmi_unified_egap_conf_params_cmd(void *wmi_hdl,
927 		struct wlan_green_ap_egap_params *egap_params);
928 #endif
929 
930 QDF_STATUS wmi_unified_fw_profiling_data_cmd(void *wmi_hdl,
931 			uint32_t cmd, uint32_t value1, uint32_t value2);
932 
933 QDF_STATUS wmi_unified_wow_timer_pattern_cmd(void *wmi_hdl, uint8_t vdev_id,
934 					     uint32_t cookie, uint32_t time);
935 
936 QDF_STATUS wmi_unified_nat_keepalive_en_cmd(void *wmi_hdl, uint8_t vdev_id);
937 
938 /**
939  * wmi_unified_set_latency_config_cmd()
940  * @wmi_handle: wmi handle
941  * @param: WLM parameters
942  *
943  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
944  */
945 QDF_STATUS wmi_unified_wlm_latency_level_cmd(void *wmi_hdl,
946 					struct wlm_latency_level_param *param);
947 
948 QDF_STATUS wmi_unified_csa_offload_enable(void *wmi_hdl, uint8_t vdev_id);
949 
950 #ifdef WLAN_FEATURE_CIF_CFR
951 /**
952  * wmi_unified_oem_dma_ring_cfg() - configure OEM DMA rings
953  * @wmi_handle: wmi handle
954  * @data_len: len of dma cfg req
955  * @data: dma cfg req
956  *
957  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
958  */
959 QDF_STATUS wmi_unified_oem_dma_ring_cfg(void *wmi_hdl,
960 				wmi_oem_dma_ring_cfg_req_fixed_param *cfg);
961 #endif
962 
963 /**
964  * wmi_unified_dbr_ring_cfg: Configure direct buffer rx rings
965  * @wmi_hdl: WMI handle
966  * @cfg: pointer to direct buffer rx config request
967  *
968  * Return: QDF status of operation
969  */
970 QDF_STATUS wmi_unified_dbr_ring_cfg(void *wmi_hdl,
971 				struct direct_buf_rx_cfg_req *cfg);
972 
973 QDF_STATUS wmi_unified_start_oem_data_cmd(void *wmi_hdl,
974 			  uint32_t data_len,
975 			  uint8_t *data);
976 
977 QDF_STATUS wmi_unified_dfs_phyerr_filter_offload_en_cmd(void *wmi_hdl,
978 			bool dfs_phyerr_filter_offload);
979 
980 #ifdef CONFIG_MCL
981 QDF_STATUS wmi_unified_pktlog_wmi_send_cmd(void *wmi_hdl,
982 				   WMI_PKTLOG_EVENT pktlog_event,
983 				   uint32_t cmd_id,
984 				   uint8_t user_triggered);
985 #endif
986 
987 QDF_STATUS wmi_unified_wow_delete_pattern_cmd(void *wmi_hdl, uint8_t ptrn_id,
988 					uint8_t vdev_id);
989 
990 QDF_STATUS wmi_unified_host_wakeup_ind_to_fw_cmd(void *wmi_hdl);
991 QDF_STATUS wmi_unified_del_ts_cmd(void *wmi_hdl, uint8_t vdev_id,
992 				uint8_t ac);
993 
994 QDF_STATUS wmi_unified_aggr_qos_cmd(void *wmi_hdl,
995 		      struct aggr_add_ts_param *aggr_qos_rsp_msg);
996 
997 QDF_STATUS wmi_unified_add_ts_cmd(void *wmi_hdl,
998 		 struct add_ts_param *msg);
999 
1000 QDF_STATUS wmi_unified_process_add_periodic_tx_ptrn_cmd(void *wmi_hdl,
1001 						struct periodic_tx_pattern  *
1002 						pAddPeriodicTxPtrnParams,
1003 						uint8_t vdev_id);
1004 
1005 QDF_STATUS wmi_unified_process_del_periodic_tx_ptrn_cmd(void *wmi_hdl,
1006 						uint8_t vdev_id,
1007 						uint8_t pattern_id);
1008 
1009 QDF_STATUS wmi_unified_stats_ext_req_cmd(void *wmi_hdl,
1010 			struct stats_ext_params *preq);
1011 
1012 QDF_STATUS wmi_unified_enable_ext_wow_cmd(void *wmi_hdl,
1013 			struct ext_wow_params *params);
1014 
1015 QDF_STATUS wmi_unified_set_app_type2_params_in_fw_cmd(void *wmi_hdl,
1016 					  struct app_type2_params *appType2Params);
1017 
1018 QDF_STATUS wmi_unified_set_auto_shutdown_timer_cmd(void *wmi_hdl,
1019 						  uint32_t timer_val);
1020 
1021 QDF_STATUS wmi_unified_nan_req_cmd(void *wmi_hdl,
1022 			struct nan_req_params *nan_req);
1023 
1024 QDF_STATUS wmi_unified_process_dhcpserver_offload_cmd(void *wmi_hdl,
1025 				struct dhcp_offload_info_params *params);
1026 
1027 QDF_STATUS wmi_unified_process_ch_avoid_update_cmd(void *wmi_hdl);
1028 
1029 QDF_STATUS wmi_unified_send_regdomain_info_to_fw_cmd(void *wmi_hdl,
1030 				   uint32_t reg_dmn, uint16_t regdmn2G,
1031 				   uint16_t regdmn5G, uint8_t ctl2G,
1032 				   uint8_t ctl5G);
1033 
1034 QDF_STATUS wmi_unified_set_tdls_offchan_mode_cmd(void *wmi_hdl,
1035 			      struct tdls_channel_switch_params *chan_switch_params);
1036 
1037 QDF_STATUS wmi_unified_update_fw_tdls_state_cmd(void *wmi_hdl,
1038 					 void *tdls_param, uint8_t tdls_state);
1039 
1040 QDF_STATUS wmi_unified_update_tdls_peer_state_cmd(void *wmi_hdl,
1041 			       struct tdls_peer_state_params *peerStateParams,
1042 				   uint32_t *ch_mhz);
1043 
1044 QDF_STATUS wmi_unified_process_fw_mem_dump_cmd(void *wmi_hdl,
1045 					struct fw_dump_req_param *mem_dump_req);
1046 
1047 QDF_STATUS wmi_unified_process_set_ie_info_cmd(void *wmi_hdl,
1048 				   struct vdev_ie_info_param *ie_info);
1049 
1050 QDF_STATUS wmi_unified_save_fw_version_cmd(void *wmi_hdl,
1051 		void *evt_buf);
1052 
1053 QDF_STATUS wmi_unified_set_base_macaddr_indicate_cmd(void *wmi_hdl,
1054 					 uint8_t *custom_addr);
1055 
1056 QDF_STATUS wmi_unified_log_supported_evt_cmd(void *wmi_hdl,
1057 		uint8_t *event,
1058 		uint32_t len);
1059 
1060 QDF_STATUS wmi_unified_enable_specific_fw_logs_cmd(void *wmi_hdl,
1061 		struct wmi_wifi_start_log *start_log);
1062 
1063 QDF_STATUS wmi_unified_flush_logs_to_fw_cmd(void *wmi_hdl);
1064 
1065 QDF_STATUS wmi_unified_pdev_set_pcl_cmd(void *wmi_hdl,
1066 				struct wmi_pcl_chan_weights *msg);
1067 
1068 QDF_STATUS wmi_unified_soc_set_hw_mode_cmd(void *wmi_hdl,
1069 				uint32_t hw_mode_index);
1070 
1071 QDF_STATUS wmi_unified_pdev_set_dual_mac_config_cmd(void *wmi_hdl,
1072 		struct wmi_dual_mac_config *msg);
1073 
1074 QDF_STATUS wmi_unified_set_led_flashing_cmd(void *wmi_hdl,
1075 				struct flashing_req_params *flashing);
1076 
1077 QDF_STATUS wmi_unified_app_type1_params_in_fw_cmd(void *wmi_hdl,
1078 				   struct app_type1_params *app_type1_params);
1079 
1080 QDF_STATUS wmi_unified_set_ssid_hotlist_cmd(void *wmi_hdl,
1081 		     struct ssid_hotlist_request_params *request);
1082 
1083 QDF_STATUS wmi_unified_roam_synch_complete_cmd(void *wmi_hdl,
1084 		 uint8_t vdev_id);
1085 
1086 QDF_STATUS wmi_unified_unit_test_cmd(void *wmi_hdl,
1087 			       struct wmi_unit_test_cmd *wmi_utest);
1088 
1089 QDF_STATUS wmi_unified_roam_invoke_cmd(void *wmi_hdl,
1090 		struct wmi_roam_invoke_cmd *roaminvoke,
1091 		uint32_t ch_hz);
1092 
1093 QDF_STATUS wmi_unified_roam_scan_offload_cmd(void *wmi_hdl,
1094 					 uint32_t command, uint32_t vdev_id);
1095 
1096 #ifdef CONFIG_MCL
1097 QDF_STATUS wmi_unified_send_roam_scan_offload_ap_cmd(void *wmi_hdl,
1098 				   struct ap_profile_params *ap_profile);
1099 #endif
1100 
1101 QDF_STATUS wmi_unified_roam_scan_offload_scan_period(void *wmi_hdl,
1102 					     uint32_t scan_period,
1103 					     uint32_t scan_age,
1104 					     uint32_t vdev_id);
1105 
1106 QDF_STATUS wmi_unified_roam_scan_offload_chan_list_cmd(void *wmi_hdl,
1107 				   uint8_t chan_count,
1108 				   uint32_t *chan_list,
1109 				   uint8_t list_type, uint32_t vdev_id);
1110 
1111 QDF_STATUS wmi_unified_roam_scan_offload_rssi_change_cmd(void *wmi_hdl,
1112 			  uint32_t vdev_id,
1113 			  int32_t rssi_change_thresh,
1114 			  uint32_t bcn_rssi_weight,
1115 			  uint32_t hirssi_delay_btw_scans);
1116 
1117 /**
1118  * wmi_unified_set_per_roam_config() - set PER roam config in FW
1119  * @wmi_hdl: wmi handle
1120  * @req_buf: per roam config request buffer
1121  *
1122  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1123  */
1124 QDF_STATUS wmi_unified_set_per_roam_config(void *wmi_hdl,
1125 		struct wmi_per_roam_config_req *req_buf);
1126 
1127 QDF_STATUS wmi_unified_get_buf_extscan_hotlist_cmd(void *wmi_hdl,
1128 				   struct ext_scan_setbssi_hotlist_params *
1129 				   photlist, int *buf_len);
1130 
1131 /**
1132  * wmi_unified_set_active_bpf_mode_cmd() - config active BPF mode in FW
1133  * @wmi_hdl: the WMI handle
1134  * @vdev_id: the Id of the vdev to apply the configuration to
1135  * @ucast_mode: the active BPF mode to configure for unicast packets
1136  * @mcast_bcast_mode: the active BPF mode to configure for multicast/broadcast
1137  *	packets
1138  */
1139 QDF_STATUS wmi_unified_set_active_bpf_mode_cmd(void *wmi_hdl,
1140 				uint8_t vdev_id,
1141 				enum wmi_host_active_bpf_mode ucast_mode,
1142 				enum wmi_host_active_bpf_mode mcast_bcast_mode);
1143 
1144 QDF_STATUS wmi_unified_stats_request_send(void *wmi_hdl,
1145 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1146 				struct stats_request_params *param);
1147 
1148 QDF_STATUS wmi_unified_pdev_get_tpc_config_cmd_send(void *wmi_hdl,
1149 				uint32_t param);
1150 
1151 QDF_STATUS wmi_unified_set_bwf_cmd_send(void *wmi_hdl,
1152 				struct set_bwf_params *param);
1153 
1154 QDF_STATUS wmi_send_get_user_position_cmd(void *wmi_hdl, uint32_t value);
1155 
1156 QDF_STATUS wmi_send_get_peer_mumimo_tx_count_cmd(void *wmi_hdl, uint32_t value);
1157 
1158 QDF_STATUS wmi_send_reset_peer_mumimo_tx_count_cmd(void *wmi_hdl,
1159 				uint32_t value);
1160 
1161 QDF_STATUS wmi_send_pdev_caldata_version_check_cmd(void *wmi_hdl,
1162 				uint32_t value);
1163 
1164 QDF_STATUS wmi_unified_send_btcoex_wlan_priority_cmd(void *wmi_hdl,
1165 				struct btcoex_cfg_params *param);
1166 
1167 QDF_STATUS wmi_unified_send_btcoex_duty_cycle_cmd(void *wmi_hdl,
1168 				struct btcoex_cfg_params *param);
1169 
1170 QDF_STATUS wmi_unified_send_coex_ver_cfg_cmd(void *wmi_hdl,
1171 				coex_ver_cfg_t *param);
1172 
1173 QDF_STATUS wmi_unified_send_coex_config_cmd(void *wmi_hdl,
1174 					    struct coex_config_params *param);
1175 
1176 QDF_STATUS wmi_unified_set_atf_cmd_send(void *wmi_hdl,
1177 				struct set_atf_params *param);
1178 
1179 QDF_STATUS wmi_unified_pdev_fips_cmd_send(void *wmi_hdl,
1180 				struct fips_params *param);
1181 
1182 QDF_STATUS wmi_unified_wlan_profile_enable_cmd_send(void *wmi_hdl,
1183 				struct wlan_profile_params *param);
1184 
1185 QDF_STATUS wmi_unified_wlan_profile_trigger_cmd_send(void *wmi_hdl,
1186 				struct wlan_profile_params *param);
1187 
1188 QDF_STATUS wmi_unified_set_chan_cmd_send(void *wmi_hdl,
1189 				struct channel_param *param);
1190 
1191 QDF_STATUS wmi_unified_set_ht_ie_cmd_send(void *wmi_hdl,
1192 				struct ht_ie_params *param);
1193 
1194 QDF_STATUS wmi_unified_set_vht_ie_cmd_send(void *wmi_hdl,
1195 				struct vht_ie_params *param);
1196 
1197 QDF_STATUS wmi_unified_wmm_update_cmd_send(void *wmi_hdl,
1198 				struct wmm_update_params *param);
1199 
1200 QDF_STATUS wmi_unified_set_ant_switch_tbl_cmd_send(void *wmi_hdl,
1201 				struct ant_switch_tbl_params *param);
1202 
1203 QDF_STATUS wmi_unified_set_ratepwr_table_cmd_send(void *wmi_hdl,
1204 				struct ratepwr_table_params *param);
1205 
1206 QDF_STATUS wmi_unified_get_ratepwr_table_cmd_send(void *wmi_hdl);
1207 
1208 QDF_STATUS wmi_unified_set_ctl_table_cmd_send(void *wmi_hdl,
1209 				struct ctl_table_params *param);
1210 
1211 QDF_STATUS wmi_unified_set_mimogain_table_cmd_send(void *wmi_hdl,
1212 				struct mimogain_table_params *param);
1213 
1214 QDF_STATUS wmi_unified_set_ratepwr_chainmsk_cmd_send(void *wmi_hdl,
1215 				struct ratepwr_chainmsk_params *param);
1216 
1217 QDF_STATUS wmi_unified_set_macaddr_cmd_send(void *wmi_hdl,
1218 				struct macaddr_params *param);
1219 
1220 QDF_STATUS wmi_unified_pdev_scan_start_cmd_send(void *wmi_hdl);
1221 
1222 QDF_STATUS wmi_unified_pdev_scan_end_cmd_send(void *wmi_hdl);
1223 
1224 QDF_STATUS wmi_unified_set_acparams_cmd_send(void *wmi_hdl,
1225 				struct acparams_params *param);
1226 
1227 QDF_STATUS wmi_unified_set_vap_dscp_tid_map_cmd_send(void *wmi_hdl,
1228 				struct vap_dscp_tid_map_params *param);
1229 
1230 QDF_STATUS wmi_unified_proxy_ast_reserve_cmd_send(void *wmi_hdl,
1231 				struct proxy_ast_reserve_params *param);
1232 
1233 QDF_STATUS wmi_unified_pdev_qvit_cmd_send(void *wmi_hdl,
1234 				struct pdev_qvit_params *param);
1235 
1236 QDF_STATUS wmi_unified_mcast_group_update_cmd_send(void *wmi_hdl,
1237 				struct mcast_group_update_params *param);
1238 
1239 QDF_STATUS wmi_unified_peer_add_wds_entry_cmd_send(void *wmi_hdl,
1240 				struct peer_add_wds_entry_params *param);
1241 
1242 QDF_STATUS wmi_unified_peer_del_wds_entry_cmd_send(void *wmi_hdl,
1243 				struct peer_del_wds_entry_params *param);
1244 
1245 /**
1246  *  wmi_unified_set_bridge_mac_addr_cmd_send() - WMI set bridge mac addr cmd function
1247  *  @param wmi_hdl      : handle to WMI.
1248  *  @param param        : pointer to hold bridge mac addr param
1249  *
1250  *  @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1251  */
1252 QDF_STATUS wmi_unified_set_bridge_mac_addr_cmd_send(void *wmi_hdl,
1253 				struct set_bridge_mac_addr_params *param);
1254 
1255 
1256 QDF_STATUS wmi_unified_peer_update_wds_entry_cmd_send(void *wmi_hdl,
1257 				struct peer_update_wds_entry_params *param);
1258 
1259 QDF_STATUS wmi_unified_phyerr_enable_cmd_send(void *wmi_hdl);
1260 
1261 QDF_STATUS wmi_unified_phyerr_enable_cmd_send(void *wmi_hdl);
1262 
1263 QDF_STATUS wmi_unified_phyerr_disable_cmd_send(void *wmi_hdl);
1264 
1265 QDF_STATUS wmi_unified_smart_ant_enable_cmd_send(void *wmi_hdl,
1266 				struct smart_ant_enable_params *param);
1267 
1268 QDF_STATUS wmi_unified_smart_ant_set_rx_ant_cmd_send(void *wmi_hdl,
1269 				struct smart_ant_rx_ant_params *param);
1270 
1271 QDF_STATUS wmi_unified_smart_ant_set_tx_ant_cmd_send(void *wmi_hdl,
1272 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1273 				struct smart_ant_tx_ant_params *param);
1274 
1275 QDF_STATUS wmi_unified_smart_ant_set_training_info_cmd_send(void *wmi_hdl,
1276 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1277 				struct smart_ant_training_info_params *param);
1278 
1279 QDF_STATUS wmi_unified_smart_ant_node_config_cmd_send(void *wmi_hdl,
1280 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1281 				struct smart_ant_node_config_params *param);
1282 
1283 QDF_STATUS wmi_unified_smart_ant_enable_tx_feedback_cmd_send(void *wmi_hdl,
1284 			struct smart_ant_enable_tx_feedback_params *param);
1285 
1286 QDF_STATUS wmi_unified_vdev_spectral_configure_cmd_send(void *wmi_hdl,
1287 				struct vdev_spectral_configure_params *param);
1288 
1289 QDF_STATUS wmi_unified_vdev_spectral_enable_cmd_send(void *wmi_hdl,
1290 				struct vdev_spectral_enable_params *param);
1291 
1292 QDF_STATUS wmi_unified_bss_chan_info_request_cmd_send(void *wmi_hdl,
1293 				struct bss_chan_info_request_params *param);
1294 
1295 QDF_STATUS wmi_unified_thermal_mitigation_param_cmd_send(void *wmi_hdl,
1296 				struct thermal_mitigation_params *param);
1297 
1298 QDF_STATUS wmi_unified_vdev_set_neighbour_rx_cmd_send(void *wmi_hdl,
1299 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1300 				struct set_neighbour_rx_params *param);
1301 
1302 QDF_STATUS wmi_unified_vdev_set_fwtest_param_cmd_send(void *wmi_hdl,
1303 				struct set_fwtest_params *param);
1304 
1305 QDF_STATUS wmi_unified_vdev_config_ratemask_cmd_send(void *wmi_hdl,
1306 				struct config_ratemask_params *param);
1307 
1308 /**
1309  *  wmi_unified_vdev_set_custom_aggr_size_cmd_send() - WMI set custom aggr
1310  *						       size command
1311  *  @param wmi_hdl      : handle to WMI.
1312  *  @param param        : pointer to hold custom aggr size param
1313  *
1314  *  @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1315  */
1316 QDF_STATUS wmi_unified_vdev_set_custom_aggr_size_cmd_send(void *wmi_hdl,
1317 				struct set_custom_aggr_size_params *param);
1318 
1319 /**
1320  *  wmi_unified_vdev_set_qdepth_thresh_cmd_send() - WMI set qdepth threshold
1321  *  @param wmi_hdl      : handle to WMI.
1322  *  @param param        : pointer to hold set qdepth thresh param
1323  *
1324  *  @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1325  */
1326 QDF_STATUS wmi_unified_vdev_set_qdepth_thresh_cmd_send(void *wmi_hdl,
1327 				struct set_qdepth_thresh_params *param);
1328 
1329 QDF_STATUS wmi_unified_pdev_set_regdomain_cmd_send(void *wmi_hdl,
1330 				struct pdev_set_regdomain_params *param);
1331 
1332 QDF_STATUS wmi_unified_set_quiet_mode_cmd_send(void *wmi_hdl,
1333 				struct set_quiet_mode_params *param);
1334 
1335 QDF_STATUS wmi_unified_set_beacon_filter_cmd_send(void *wmi_hdl,
1336 				struct set_beacon_filter_params *param);
1337 
1338 QDF_STATUS wmi_unified_remove_beacon_filter_cmd_send(void *wmi_hdl,
1339 				struct remove_beacon_filter_params *param);
1340 
1341 QDF_STATUS wmi_unified_addba_clearresponse_cmd_send(void *wmi_hdl,
1342 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1343 				struct addba_clearresponse_params *param);
1344 
1345 QDF_STATUS wmi_unified_addba_send_cmd_send(void *wmi_hdl,
1346 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1347 				struct addba_send_params *param);
1348 
1349 QDF_STATUS wmi_unified_delba_send_cmd_send(void *wmi_hdl,
1350 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1351 				struct delba_send_params *param);
1352 
1353 QDF_STATUS wmi_unified_addba_setresponse_cmd_send(void *wmi_hdl,
1354 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1355 				struct addba_setresponse_params *param);
1356 
1357 QDF_STATUS wmi_unified_singleamsdu_cmd_send(void *wmi_hdl,
1358 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1359 				struct singleamsdu_params *param);
1360 
1361 QDF_STATUS wmi_unified_set_qboost_param_cmd_send(void *wmi_hdl,
1362 				uint8_t macaddr[IEEE80211_ADDR_LEN],
1363 				struct set_qboost_params *param);
1364 
1365 QDF_STATUS wmi_unified_mu_scan_cmd_send(void *wmi_hdl,
1366 				struct mu_scan_params *param);
1367 
1368 QDF_STATUS wmi_unified_lteu_config_cmd_send(void *wmi_hdl,
1369 				struct lteu_config_params *param);
1370 
1371 QDF_STATUS wmi_unified_set_psmode_cmd_send(void *wmi_hdl,
1372 				struct set_ps_mode_params *param);
1373 
1374 QDF_STATUS wmi_unified_init_cmd_send(void *wmi_hdl,
1375 				struct wmi_init_cmd_param *param);
1376 
1377 bool wmi_service_enabled(void *wmi_hdl, uint32_t service_id);
1378 
1379 /**
1380  * wmi_save_service_bitmap() - save service bitmap
1381  * @wmi_handle: wmi handle
1382  * @param evt_buf: pointer to event buffer
1383  *
1384  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS failure code
1385  */
1386 QDF_STATUS wmi_save_service_bitmap(void *wmi_hdl, void *evt_buf,
1387 				   void *bitmap_buf);
1388 
1389 /**
1390  * wmi_save_ext_service_bitmap() - save extended service bitmap
1391  * @wmi_handle: wmi handle
1392  * @param evt_buf: pointer to event buffer
1393  *
1394  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS failure code
1395  */
1396 QDF_STATUS wmi_save_ext_service_bitmap(void *wmi_hdl, void *evt_buf,
1397 				   void *bitmap_buf);
1398 
1399 QDF_STATUS wmi_save_fw_version(void *wmi_hdl, void *evt_buf);
1400 
1401 QDF_STATUS wmi_get_target_cap_from_service_ready(void *wmi_hdl,
1402 				void *evt_buf,
1403 				struct wlan_psoc_target_capability_info *ev);
1404 
1405 QDF_STATUS wmi_extract_hal_reg_cap(void *wmi_hdl, void *evt_buf,
1406 			struct wlan_psoc_hal_reg_capability *hal_reg_cap);
1407 
1408 host_mem_req *wmi_extract_host_mem_req_from_service_ready(void *wmi_hdl,
1409 				void *evt_buf, uint8_t *num_entries);
1410 
1411 uint32_t wmi_ready_extract_init_status(void *wmi_hdl, void *ev);
1412 
1413 QDF_STATUS wmi_ready_extract_mac_addr(void *wmi_hdl,
1414 				void *ev, uint8_t *macaddr);
1415 
1416 wmi_host_mac_addr *wmi_ready_extract_mac_addr_list(void *wmi_hdl, void *ev,
1417 					      uint8_t *num_mac_addr);
1418 
1419 /**
1420  * wmi_extract_ready_params() - Extract data from ready event apart from
1421  *                     status, macaddr and version.
1422  * @wmi_handle: Pointer to WMI handle.
1423  * @evt_buf: Pointer to Ready event buffer.
1424  * @ev_param: Pointer to host defined struct to copy the data from event.
1425  *
1426  * Return: QDF_STATUS_SUCCESS on success.
1427  */
1428 QDF_STATUS wmi_extract_ready_event_params(void *wmi_hdl,
1429 		void *evt_buf, struct wmi_host_ready_ev_param *ev_param);
1430 
1431 QDF_STATUS wmi_extract_fw_version(void *wmi_hdl,
1432 				void *ev, struct wmi_host_fw_ver *fw_ver);
1433 
1434 QDF_STATUS wmi_extract_fw_abi_version(void *wmi_hdl,
1435 				void *ev, struct wmi_host_fw_abi_ver *fw_ver);
1436 
1437 QDF_STATUS wmi_check_and_update_fw_version(void *wmi_hdl, void *ev);
1438 
1439 uint8_t *wmi_extract_dbglog_data_len(void *wmi_hdl,
1440 				void *evt_b, uint32_t *len);
1441 
1442 QDF_STATUS wmi_send_ext_resource_config(void *wmi_hdl,
1443 				wmi_host_ext_resource_config *ext_cfg);
1444 
1445 QDF_STATUS wmi_unified_nf_dbr_dbm_info_get_cmd_send(void *wmi_hdl,
1446 						    uint8_t mac_id);
1447 
1448 QDF_STATUS wmi_unified_packet_power_info_get_cmd_send(void *wmi_hdl,
1449 				struct packet_power_info_params *param);
1450 
1451 QDF_STATUS wmi_unified_gpio_config_cmd_send(void *wmi_hdl,
1452 				struct gpio_config_params *param);
1453 
1454 QDF_STATUS wmi_unified_gpio_output_cmd_send(void *wmi_hdl,
1455 				struct gpio_output_params *param);
1456 
1457 QDF_STATUS wmi_unified_rtt_meas_req_test_cmd_send(void *wmi_hdl,
1458 				struct rtt_meas_req_test_params *param);
1459 
1460 QDF_STATUS wmi_unified_rtt_meas_req_cmd_send(void *wmi_hdl,
1461 				struct rtt_meas_req_params *param);
1462 
1463 QDF_STATUS wmi_unified_rtt_keepalive_req_cmd_send(void *wmi_hdl,
1464 				struct rtt_keepalive_req_params *param);
1465 
1466 QDF_STATUS wmi_unified_lci_set_cmd_send(void *wmi_hdl,
1467 				struct lci_set_params *param);
1468 
1469 QDF_STATUS wmi_unified_lcr_set_cmd_send(void *wmi_hdl,
1470 				struct lcr_set_params *param);
1471 
1472 QDF_STATUS wmi_unified_send_periodic_chan_stats_config_cmd(void *wmi_hdl,
1473 			struct periodic_chan_stats_params *param);
1474 
1475 QDF_STATUS
1476 wmi_send_atf_peer_request_cmd(void *wmi_hdl,
1477 			struct atf_peer_request_params *param);
1478 
1479 QDF_STATUS
1480 wmi_send_set_atf_grouping_cmd(void *wmi_hdl,
1481 			struct atf_grouping_params *param);
1482 /* Extract APIs */
1483 
1484 QDF_STATUS wmi_extract_wds_addr_event(void *wmi_hdl,
1485 		void *evt_buf, uint16_t len, wds_addr_event_t *wds_ev);
1486 
1487 QDF_STATUS wmi_extract_dcs_interference_type(void *wmi_hdl,
1488 		void *evt_buf, struct wmi_host_dcs_interference_param *param);
1489 
1490 QDF_STATUS wmi_extract_dcs_cw_int(void *wmi_hdl, void *evt_buf,
1491 		wmi_host_ath_dcs_cw_int *cw_int);
1492 
1493 QDF_STATUS wmi_extract_dcs_im_tgt_stats(void *wmi_hdl, void *evt_buf,
1494 		wmi_host_dcs_im_tgt_stats_t *wlan_stat);
1495 
1496 QDF_STATUS wmi_extract_fips_event_data(void *wmi_hdl, void *evt_buf,
1497 		struct wmi_host_fips_event_param *param);
1498 
1499 QDF_STATUS wmi_extract_vdev_start_resp(void *wmi_hdl, void *evt_buf,
1500 		wmi_host_vdev_start_resp *vdev_rsp);
1501 
1502 /**
1503  * wmi_extract_vdev_delete_resp - api to extract vdev delete
1504  * response event params
1505  * @wmi_handle: wma handle
1506  * @evt_buf: pointer to event buffer
1507  * @delele_rsp: pointer to hold delete response from firmware
1508  *
1509  * Return: QDF_STATUS_SUCCESS for successful event parse
1510  *         else QDF_STATUS_E_INVAL or QDF_STATUS_E_FAILURE
1511  */
1512 QDF_STATUS wmi_extract_vdev_delete_resp(void *wmi_hdl, void *evt_buf,
1513 		struct wmi_host_vdev_delete_resp *delele_rsp);
1514 
1515 QDF_STATUS wmi_extract_tbttoffset_update_params(void *wmi_hdl, void *evt_buf,
1516 		uint8_t idx, struct tbttoffset_params *tbtt_param);
1517 
1518 QDF_STATUS wmi_extract_ext_tbttoffset_update_params(void *wmi_hdl,
1519 		void *evt_buf, uint8_t idx,
1520 		struct tbttoffset_params *tbtt_param);
1521 
1522 QDF_STATUS wmi_extract_tbttoffset_num_vdevs(void *wmi_hdl, void *evt_buf,
1523 					    uint32_t *num_vdevs);
1524 
1525 QDF_STATUS wmi_extract_ext_tbttoffset_num_vdevs(void *wmi_hdl, void *evt_buf,
1526 						uint32_t *num_vdevs);
1527 
1528 QDF_STATUS wmi_extract_mgmt_rx_params(void *wmi_hdl, void *evt_buf,
1529 		struct mgmt_rx_event_params *hdr, uint8_t **bufp);
1530 
1531 QDF_STATUS wmi_extract_vdev_stopped_param(void *wmi_hdl, void *evt_buf,
1532 		uint32_t *vdev_id);
1533 
1534 QDF_STATUS wmi_extract_vdev_roam_param(void *wmi_hdl, void *evt_buf,
1535 		wmi_host_roam_event *ev);
1536 
1537 QDF_STATUS wmi_extract_vdev_scan_ev_param(void *wmi_hdl, void *evt_buf,
1538 		struct scan_event *param);
1539 
1540 #ifdef CONVERGED_TDLS_ENABLE
1541 /**
1542  * wmi_extract_vdev_tdls_ev_param - extract vdev tdls param from event
1543  * @wmi_handle: wmi handle
1544  * @param evt_buf: pointer to event buffer
1545  * @param param: Pointer to hold vdev tdls param
1546  *
1547  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1548  */
1549 QDF_STATUS wmi_extract_vdev_tdls_ev_param(void *wmi_hdl, void *evt_buf,
1550 					  struct tdls_event_info *param);
1551 #endif
1552 
1553 QDF_STATUS wmi_extract_mu_ev_param(void *wmi_hdl, void *evt_buf,
1554 		wmi_host_mu_report_event *param);
1555 
1556 QDF_STATUS wmi_extract_mu_db_entry(void *wmi_hdl, void *evt_buf,
1557 		uint8_t idx, wmi_host_mu_db_entry *param);
1558 
1559 QDF_STATUS wmi_extract_mumimo_tx_count_ev_param(void *wmi_hdl, void *evt_buf,
1560 		wmi_host_peer_txmu_cnt_event *param);
1561 
1562 QDF_STATUS wmi_extract_peer_gid_userpos_list_ev_param(void *wmi_hdl,
1563 		void *evt_buf, wmi_host_peer_gid_userpos_list_event *param);
1564 
1565 QDF_STATUS wmi_extract_pdev_caldata_version_check_ev_param(void *wmi_hdl,
1566 		void *evt_buf, wmi_host_pdev_check_cal_version_event *param);
1567 
1568 QDF_STATUS wmi_extract_pdev_tpc_config_ev_param(void *wmi_hdl, void *evt_buf,
1569 		wmi_host_pdev_tpc_config_event *param);
1570 
1571 QDF_STATUS wmi_extract_gpio_input_ev_param(void *wmi_hdl,
1572 		void *evt_buf, uint32_t *gpio_num);
1573 
1574 QDF_STATUS wmi_extract_pdev_reserve_ast_ev_param(void *wmi_hdl,
1575 		void *evt_buf, struct wmi_host_proxy_ast_reserve_param *param);
1576 
1577 QDF_STATUS wmi_extract_nfcal_power_ev_param(void *wmi_hdl, void *evt_buf,
1578 		wmi_host_pdev_nfcal_power_all_channels_event *param);
1579 
1580 QDF_STATUS wmi_extract_pdev_tpc_ev_param(void *wmi_hdl, void *evt_buf,
1581 		wmi_host_pdev_tpc_event *param);
1582 
1583 QDF_STATUS wmi_extract_pdev_generic_buffer_ev_param(void *wmi_hdl,
1584 		void *evt_buf,
1585 		wmi_host_pdev_generic_buffer_event *param);
1586 
1587 QDF_STATUS wmi_extract_mgmt_tx_compl_param(void *wmi_hdl, void *evt_buf,
1588 		wmi_host_mgmt_tx_compl_event *param);
1589 
1590 QDF_STATUS wmi_extract_offchan_data_tx_compl_param(void *wmi_hdl, void *evt_buf,
1591 		struct wmi_host_offchan_data_tx_compl_event *param);
1592 
1593 QDF_STATUS wmi_extract_pdev_csa_switch_count_status(void *wmi_hdl,
1594 		void *evt_buf,
1595 		struct pdev_csa_switch_count_status *param);
1596 
1597 QDF_STATUS wmi_extract_swba_num_vdevs(void *wmi_hdl, void *evt_buf,
1598 		uint32_t *num_vdevs);
1599 
1600 QDF_STATUS wmi_extract_swba_tim_info(void *wmi_hdl, void *evt_buf,
1601 		 uint32_t idx, wmi_host_tim_info *tim_info);
1602 
1603 QDF_STATUS wmi_extract_swba_noa_info(void *wmi_hdl, void *evt_buf,
1604 			uint32_t idx, wmi_host_p2p_noa_info *p2p_desc);
1605 
1606 #ifdef CONVERGED_P2P_ENABLE
1607 QDF_STATUS wmi_extract_p2p_lo_stop_ev_param(void *wmi_hdl,
1608 		void *evt_buf, struct p2p_lo_event *param);
1609 
1610 QDF_STATUS wmi_extract_p2p_noa_ev_param(void *wmi_hdl,
1611 		void *evt_buf, struct p2p_noa_info *param);
1612 #endif
1613 
1614 QDF_STATUS wmi_extract_peer_sta_ps_statechange_ev(void *wmi_hdl,
1615 		void *evt_buf, wmi_host_peer_sta_ps_statechange_event *ev);
1616 
1617 QDF_STATUS wmi_extract_peer_sta_kickout_ev(void *wmi_hdl, void *evt_buf,
1618 		wmi_host_peer_sta_kickout_event *ev);
1619 
1620 QDF_STATUS wmi_extract_peer_ratecode_list_ev(void *wmi_hdl, void *evt_buf,
1621 		uint8_t *peer_mac, wmi_sa_rate_cap *rate_cap);
1622 
1623 QDF_STATUS wmi_extract_bcnflt_stats(void *wmi_hdl, void *evt_buf,
1624 		 uint32_t index, wmi_host_bcnflt_stats *bcnflt_stats);
1625 
1626 QDF_STATUS wmi_extract_rtt_hdr(void *wmi_hdl, void *evt_buf,
1627 		wmi_host_rtt_event_hdr *ev);
1628 
1629 QDF_STATUS wmi_extract_rtt_ev(void *wmi_hdl, void *evt_buf,
1630 		wmi_host_rtt_meas_event *ev, uint8_t *hdump,
1631 		uint16_t hdump_len);
1632 
1633 QDF_STATUS wmi_extract_rtt_error_report_ev(void *wmi_hdl, void *evt_buf,
1634 		wmi_host_rtt_error_report_event *ev);
1635 
1636 QDF_STATUS wmi_extract_chan_stats(void *wmi_hdl, void *evt_buf,
1637 		uint32_t index, wmi_host_chan_stats *chan_stats);
1638 
1639 QDF_STATUS wmi_extract_thermal_stats(void *wmi_hdl, void *evt_buf,
1640 		uint32_t *temp, uint32_t *level, uint32_t *pdev_id);
1641 
1642 QDF_STATUS wmi_extract_thermal_level_stats(void *wmi_hdl, void *evt_buf,
1643 		uint8_t idx, uint32_t *levelcount, uint32_t *dccount);
1644 
1645 QDF_STATUS wmi_extract_comb_phyerr(void *wmi_hdl, void *evt_buf,
1646 			uint16_t datalen, uint16_t *buf_offset,
1647 			wmi_host_phyerr_t *phyerr);
1648 
1649 QDF_STATUS wmi_extract_single_phyerr(void *wmi_hdl, void *evt_buf,
1650 			uint16_t datalen, uint16_t *buf_offset,
1651 			wmi_host_phyerr_t *phyerr);
1652 
1653 QDF_STATUS wmi_extract_composite_phyerr(void *wmi_hdl, void *evt_buf,
1654 			uint16_t datalen, wmi_host_phyerr_t *phyerr);
1655 
1656 QDF_STATUS wmi_extract_profile_ctx(void *wmi_hdl, void *evt_buf,
1657 			wmi_host_wlan_profile_ctx_t *profile_ctx);
1658 
1659 QDF_STATUS wmi_extract_profile_data(void *wmi_hdl, void *evt_buf, uint8_t idx,
1660 			wmi_host_wlan_profile_t *profile_data);
1661 
1662 QDF_STATUS wmi_extract_chan_info_event(void *wmi_hdl, void *evt_buf,
1663 			wmi_host_chan_info_event *chan_info);
1664 
1665 QDF_STATUS wmi_extract_channel_hopping_event(void *wmi_hdl, void *evt_buf,
1666 			wmi_host_pdev_channel_hopping_event *ch_hopping);
1667 
1668 QDF_STATUS wmi_extract_stats_param(void *wmi_hdl, void *evt_buf,
1669 					   wmi_host_stats_event *stats_param);
1670 
1671 QDF_STATUS wmi_extract_pdev_stats(void *wmi_hdl, void *evt_buf,
1672 					 uint32_t index,
1673 					 wmi_host_pdev_stats *pdev_stats);
1674 
1675 QDF_STATUS wmi_extract_unit_test(void *wmi_hdl, void *evt_buf,
1676 			wmi_unit_test_event *unit_test, uint32_t maxspace);
1677 
1678 QDF_STATUS wmi_extract_pdev_ext_stats(void *wmi_hdl, void *evt_buf,
1679 			uint32_t index,
1680 			wmi_host_pdev_ext_stats *pdev_ext_stats);
1681 
1682 QDF_STATUS wmi_extract_peer_extd_stats(void *wmi_hdl, void *evt_buf,
1683 			uint32_t index,
1684 			wmi_host_peer_extd_stats *peer_extd_stats);
1685 
1686 QDF_STATUS wmi_extract_bss_chan_info_event(void *wmi_hdl, void *evt_buf,
1687 			wmi_host_pdev_bss_chan_info_event *bss_chan_info);
1688 
1689 QDF_STATUS wmi_extract_inst_rssi_stats_event(void *wmi_hdl, void *evt_buf,
1690 			wmi_host_inst_stats_resp *inst_rssi_resp);
1691 
1692 QDF_STATUS wmi_extract_peer_stats(void *wmi_hdl, void *evt_buf,
1693 		uint32_t index, wmi_host_peer_stats *peer_stats);
1694 
1695 QDF_STATUS wmi_extract_tx_data_traffic_ctrl_ev(void *wmi_hdl, void *evt_buf,
1696 		wmi_host_tx_data_traffic_ctrl_event *ev);
1697 
1698 QDF_STATUS wmi_extract_atf_peer_stats_ev(void *wmi_hdl, void *evt_buf,
1699 		wmi_host_atf_peer_stats_event *ev);
1700 
1701 QDF_STATUS wmi_extract_atf_token_info_ev(void *wmi_hdl, void *evt_buf,
1702 		uint8_t idx, wmi_host_atf_peer_stats_info *atf_token_info);
1703 
1704 QDF_STATUS wmi_extract_vdev_stats(void *wmi_hdl, void *evt_buf,
1705 		uint32_t index, wmi_host_vdev_stats *vdev_stats);
1706 
1707 QDF_STATUS wmi_extract_vdev_extd_stats(void *wmi_hdl, void *evt_buf,
1708 		uint32_t index, wmi_host_vdev_extd_stats *vdev_extd_stats);
1709 
1710 QDF_STATUS wmi_extract_bcn_stats(void *wmi_hdl, void *evt_buf,
1711 		uint32_t index, wmi_host_bcn_stats *vdev_bcn_stats);
1712 
1713 /**
1714  * wmi_extract_vdev_nac_rssi_stats() - extract NAC_RSSI stats from event
1715  * @wmi_handle: wmi handle
1716  * @param evt_buf: pointer to event buffer
1717  * @param vdev_extd_stats: Pointer to hold nac rssi stats
1718  *
1719  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1720  */
1721 QDF_STATUS wmi_extract_vdev_nac_rssi_stats(void *wmi_hdl, void *evt_buf,
1722 		struct wmi_host_vdev_nac_rssi_event *vdev_nac_rssi_stats);
1723 
1724 QDF_STATUS wmi_unified_send_power_dbg_cmd(void *wmi_hdl,
1725 				struct wmi_power_dbg_params *param);
1726 
1727 QDF_STATUS wmi_unified_send_multiple_vdev_restart_req_cmd(void *wmi_hdl,
1728 				struct multiple_vdev_restart_params *param);
1729 
1730 /**
1731  * wmi_unified_send_sar_limit_cmd() - send sar limit cmd to fw
1732  * @wmi_hdl: wmi handle
1733  * @params: sar limit command params
1734  *
1735  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1736  */
1737 QDF_STATUS wmi_unified_send_sar_limit_cmd(void *wmi_hdl,
1738 					  struct sar_limit_cmd_params *params);
1739 
1740 /**
1741  * wmi_unified_get_sar_limit_cmd() - request current SAR limits from FW
1742  * @wmi_hdl: wmi handle
1743  *
1744  * Return: QDF_STATUS_SUCCESS for success or error code
1745  */
1746 QDF_STATUS wmi_unified_get_sar_limit_cmd(void *wmi_hdl);
1747 
1748 /**
1749  * wmi_unified_extract_sar_limit_event() - extract SAR limits from FW event
1750  * @wmi_hdl: wmi handle
1751  * @evt_buf: event buffer received from firmware
1752  * @event: SAR limit event which is to be populated by data extracted from
1753  *         the @evt_buf buffer
1754  *
1755  * Return: QDF_STATUS_SUCCESS for success or error code
1756  */
1757 QDF_STATUS wmi_unified_extract_sar_limit_event(void *wmi_hdl,
1758 					       uint8_t *evt_buf,
1759 					       struct sar_limit_event *event);
1760 
1761 QDF_STATUS wmi_unified_send_adapt_dwelltime_params_cmd(void *wmi_hdl,
1762 				   struct wmi_adaptive_dwelltime_params *
1763 				   wmi_param);
1764 QDF_STATUS wmi_unified_fw_test_cmd(void *wmi_hdl,
1765 				   struct set_fwtest_params *wmi_fwtest);
1766 
1767 QDF_STATUS wmi_unified_peer_rx_reorder_queue_setup_send(void *wmi_hdl,
1768 					struct rx_reorder_queue_setup_params *param);
1769 QDF_STATUS wmi_unified_peer_rx_reorder_queue_remove_send(void *wmi_hdl,
1770 					struct rx_reorder_queue_remove_params *param);
1771 
1772 QDF_STATUS wmi_extract_service_ready_ext(void *wmi_hdl, uint8_t *evt_buf,
1773 		struct wlan_psoc_host_service_ext_param *param);
1774 QDF_STATUS wmi_extract_hw_mode_cap_service_ready_ext(
1775 			void *wmi_hdl,
1776 			uint8_t *evt_buf, uint8_t hw_mode_idx,
1777 			struct wlan_psoc_host_hw_mode_caps *param);
1778 QDF_STATUS wmi_extract_mac_phy_cap_service_ready_ext(
1779 			void *wmi_hdl,
1780 			uint8_t *evt_buf,
1781 			uint8_t hw_mode_id,
1782 			uint8_t phy_id,
1783 			struct wlan_psoc_host_mac_phy_caps *param);
1784 QDF_STATUS wmi_extract_reg_cap_service_ready_ext(
1785 			void *wmi_hdl,
1786 			uint8_t *evt_buf, uint8_t phy_idx,
1787 			struct wlan_psoc_host_hal_reg_capabilities_ext *param);
1788 
1789 /**
1790  * wmi_extract_dbr_ring_cap_service_ready_ext: Extract direct buffer rx
1791  *                                             capability received through
1792  *                                             extended service ready event
1793  * @wmi_hdl: WMI handle
1794  * @evt_buf: Event buffer
1795  * @idx: Index of the module for which capability is received
1796  * @param: Pointer to direct buffer rx ring cap struct
1797  *
1798  * Return: QDF status of operation
1799  */
1800 QDF_STATUS wmi_extract_dbr_ring_cap_service_ready_ext(
1801 			void *wmi_hdl,
1802 			uint8_t *evt_buf, uint8_t idx,
1803 			struct wlan_psoc_host_dbr_ring_caps *param);
1804 
1805 /**
1806  * wmi_extract_dbr_buf_release_fixed : Extract direct buffer rx fixed param
1807  *                                     from buffer release event
1808  * @wmi_hdl: WMI handle
1809  * @evt_buf: Event buffer
1810  * @param: Pointer to direct buffer rx response struct
1811  *
1812  * Return: QDF status of operation
1813  */
1814 QDF_STATUS wmi_extract_dbr_buf_release_fixed(
1815 			void *wmi_hdl,
1816 			uint8_t *evt_buf,
1817 			struct direct_buf_rx_rsp *param);
1818 
1819 /**
1820  * wmi_extract_dbr_buf_release_entry: Extract direct buffer rx buffer tlv
1821  *
1822  * @wmi_hdl: WMI handle
1823  * @evt_buf: Event buffer
1824  * @idx: Index of the module for which capability is received
1825  * @param: Pointer to direct buffer rx entry
1826  *
1827  * Return: QDF status of operation
1828  */
1829 QDF_STATUS wmi_extract_dbr_buf_release_entry(
1830 			void *wmi_hdl,
1831 			uint8_t *evt_buf, uint8_t idx,
1832 			struct direct_buf_rx_entry *param);
1833 QDF_STATUS wmi_extract_pdev_utf_event(void *wmi_hdl,
1834 				      uint8_t *evt_buf,
1835 				      struct wmi_host_pdev_utf_event *param);
1836 
1837 QDF_STATUS wmi_extract_pdev_qvit_event(void *wmi_hdl,
1838 				      uint8_t *evt_buf,
1839 				      struct wmi_host_pdev_qvit_event *param);
1840 
1841 QDF_STATUS wmi_extract_peer_delete_response_event(void *wmi_hdl,
1842 		uint8_t *evt_buf,
1843 		struct wmi_host_peer_delete_response_event *param);
1844 
1845 QDF_STATUS wmi_extract_chainmask_tables(void *wmi_hdl, uint8_t *evt_buf,
1846 		struct wlan_psoc_host_chainmask_table *chainmask_table);
1847 /**
1848  * wmi_unified_dfs_phyerr_offload_en_cmd() - enable dfs phyerr offload
1849  * @wmi_handle: wmi handle
1850  * @pdev_id: pdev id
1851  *
1852  * Return: QDF_STATUS
1853  */
1854 QDF_STATUS wmi_unified_dfs_phyerr_offload_en_cmd(void *wmi_hdl,
1855 		uint32_t pdev_id);
1856 
1857 /**
1858  * wmi_unified_dfs_phyerr_offload_dis_cmd() - disable dfs phyerr offload
1859  * @wmi_handle: wmi handle
1860  * @pdev_id: pdev id
1861  *
1862  * Return: QDF_STATUS
1863  */
1864 QDF_STATUS wmi_unified_dfs_phyerr_offload_dis_cmd(void *wmi_hdl,
1865 		uint32_t pdev_id);
1866 
1867 QDF_STATUS wmi_unified_set_country_cmd_send(void *wmi_hdl,
1868 				struct set_country *param);
1869 /*
1870  * wmi_unified_set_del_pmkid_cache() - set delete PMKID
1871  * @wmi_hdl: wma handle
1872  * @pmksa: pointer to pmk cache entry
1873  *
1874  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1875  */
1876 QDF_STATUS wmi_unified_set_del_pmkid_cache(void *wmi_hdl,
1877 					struct wmi_unified_pmk_cache *pmksa);
1878 
1879 #if defined(WLAN_FEATURE_FILS_SK)
1880 /*
1881  * wmi_unified_roam_send_hlp_cmd() -send HLP command info
1882  * @wmi_hdl: wma handle
1883  * @req_buf: Pointer to HLP params
1884  *
1885  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1886  */
1887 QDF_STATUS wmi_unified_roam_send_hlp_cmd(void *wmi_hdl,
1888 					struct hlp_params *req_buf);
1889 #endif
1890 
1891 /**
1892  * wmi_unified_send_request_get_rcpi_cmd() - command to request rcpi value
1893  * @wmi_hdl: wma handle
1894  * @get_rcpi_param: rcpi params
1895  *
1896  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
1897  */
1898 QDF_STATUS wmi_unified_send_request_get_rcpi_cmd(void *wmi_hdl,
1899 					struct rcpi_req *get_rcpi_param);
1900 
1901 /**
1902  * wmi_extract_rcpi_response_event - api to extract RCPI event params
1903  * @wmi_handle: wma handle
1904  * @evt_buf: pointer to event buffer
1905  * @res: pointer to hold rcpi response from firmware
1906  *
1907  * Return: QDF_STATUS_SUCCESS for successful event parse
1908  *         else QDF_STATUS_E_INVAL or QDF_STATUS_E_FAILURE
1909  */
1910 QDF_STATUS wmi_extract_rcpi_response_event(void *wmi_hdl, void *evt_buf,
1911 					   struct rcpi_res *res);
1912 
1913 #ifdef WMI_INTERFACE_EVENT_LOGGING
1914 void wmi_print_cmd_log(wmi_unified_t wmi, uint32_t count,
1915 		       qdf_abstract_print *print, void *print_priv);
1916 
1917 void wmi_print_cmd_tx_cmp_log(wmi_unified_t wmi, uint32_t count,
1918 			      qdf_abstract_print *print, void *print_priv);
1919 
1920 void wmi_print_mgmt_cmd_log(wmi_unified_t wmi, uint32_t count,
1921 			    qdf_abstract_print *print, void *print_priv);
1922 
1923 void wmi_print_mgmt_cmd_tx_cmp_log(wmi_unified_t wmi, uint32_t count,
1924 				   qdf_abstract_print *print, void *print_priv);
1925 
1926 void wmi_print_event_log(wmi_unified_t wmi, uint32_t count,
1927 			 qdf_abstract_print *print, void *print_priv);
1928 
1929 void wmi_print_rx_event_log(wmi_unified_t wmi, uint32_t count,
1930 			    qdf_abstract_print *print, void *print_priv);
1931 
1932 void wmi_print_mgmt_event_log(wmi_unified_t wmi, uint32_t count,
1933 			      qdf_abstract_print *print, void *print_priv);
1934 
1935 #endif /* WMI_INTERFACE_EVENT_LOGGING */
1936 
1937 QDF_STATUS wmi_unified_send_dbs_scan_sel_params_cmd(void *wmi_hdl,
1938 				struct wmi_dbs_scan_sel_params *wmi_param);
1939 
1940 QDF_STATUS wmi_unified_send_limit_off_chan_cmd(void *wmi_hdl,
1941 		struct wmi_limit_off_chan_param *wmi_param);
1942 QDF_STATUS wmi_unified_set_arp_stats_req(void *wmi_hdl,
1943 					 struct set_arp_stats *req_buf);
1944 QDF_STATUS wmi_unified_get_arp_stats_req(void *wmi_hdl,
1945 					 struct get_arp_stats *req_buf);
1946 
1947 /**
1948  * wmi_send_bcn_offload_control_cmd - send beacon ofload control cmd to fw
1949  * @wmi_hdl: wmi handle
1950  * @bcn_ctrl_param: pointer to bcn_offload_control param
1951  *
1952  * Return: QDF_STATUS_SUCCESS for success or error code
1953  */
1954 QDF_STATUS wmi_send_bcn_offload_control_cmd(void *wmi_hdl,
1955 			struct bcn_offload_control *bcn_ctrl_param);
1956 /**
1957  * wmi_unified_send_wds_entry_list_cmd() - WMI function to get list of
1958  *  wds entries from FW
1959  * @wmi_hdl: wmi handle
1960  *
1961  * Send WMI_PDEV_WDS_ENTRY_LIST_CMDID parameters to fw.
1962  *
1963  * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
1964  */
1965 
1966 QDF_STATUS wmi_unified_send_dump_wds_table_cmd(void *wmi_hdl);
1967 
1968 /**
1969  * wmi_extract_wds_entry - api to extract wds entry
1970  * @wmi_hdl: wmi handle
1971  * @evt_buf: pointer to event buffer
1972  * @wds_entry: wds entry
1973  * @idx: index to point wds entry in event buffer
1974  *
1975  * Return: QDF_STATUS_SUCCESS for successful event parse
1976  *         else QDF_STATUS_E_INVAL or QDF_STATUS_E_FAILURE
1977  */
1978 
1979 QDF_STATUS wmi_extract_wds_entry(void *wmi_hdl, uint8_t *evt_buf,
1980 			struct wdsentry *wds_entry, u_int32_t idx);
1981 
1982 #ifdef WLAN_FEATURE_NAN_CONVERGENCE
1983 /**
1984  * wmi_unified_ndp_initiator_req_cmd_send - api to send initiator request to FW
1985  * @wmi_hdl: wma handle
1986  * @req: pointer to request buffer
1987  *
1988  * Return: status of operation
1989  */
1990 QDF_STATUS wmi_unified_ndp_initiator_req_cmd_send(void *wmi_hdl,
1991 				struct nan_datapath_initiator_req *req);
1992 
1993 /**
1994  * wmi_unified_ndp_responder_req_cmd_send - api to send responder request to FW
1995  * @wmi_hdl: wma handle
1996  * @req: pointer to request buffer
1997  *
1998  * Return: status of operation
1999  */
2000 QDF_STATUS wmi_unified_ndp_responder_req_cmd_send(void *wmi_hdl,
2001 				struct nan_datapath_responder_req *req);
2002 
2003 /**
2004  * wmi_unified_ndp_end_req_cmd_send - api to send end request to FW
2005  * @wmi_hdl: wma handle
2006  * @req: pointer to request buffer
2007  *
2008  * Return: status of operation
2009  */
2010 QDF_STATUS wmi_unified_ndp_end_req_cmd_send(void *wmi_hdl,
2011 				struct nan_datapath_end_req *req);
2012 
2013 /**
2014  * wmi_extract_ndp_initiator_rsp - api to extract initiator rsp from even buffer
2015  * @wmi_hdl: wma handle
2016  * @data: event buffer
2017  * @rsp: buffer to populate
2018  *
2019  * Return: status of operation
2020  */
2021 QDF_STATUS wmi_extract_ndp_initiator_rsp(wmi_unified_t wmi_handle,
2022 			uint8_t *data, struct nan_datapath_initiator_rsp *rsp);
2023 
2024 /**
2025  * wmi_extract_ndp_ind - api to extract ndp indication struct from even buffer
2026  * @wmi_hdl: wma handle
2027  * @data: event buffer
2028  * @ind: buffer to populate
2029  *
2030  * Return: status of operation
2031  */
2032 QDF_STATUS wmi_extract_ndp_ind(wmi_unified_t wmi_handle, uint8_t *data,
2033 			struct nan_datapath_indication_event *ind);
2034 
2035 /**
2036  * wmi_extract_ndp_confirm - api to extract ndp confim struct from even buffer
2037  * @wmi_hdl: wma handle
2038  * @data: event buffer
2039  * @ev: buffer to populate
2040  *
2041  * Return: status of operation
2042  */
2043 QDF_STATUS wmi_extract_ndp_confirm(wmi_unified_t wmi_handle, uint8_t *data,
2044 			struct nan_datapath_confirm_event *ev);
2045 
2046 /**
2047  * wmi_extract_ndp_responder_rsp - api to extract responder rsp from even buffer
2048  * @wmi_hdl: wma handle
2049  * @data: event buffer
2050  * @rsp: buffer to populate
2051  *
2052  * Return: status of operation
2053  */
2054 QDF_STATUS wmi_extract_ndp_responder_rsp(wmi_unified_t wmi_handle,
2055 			uint8_t *data, struct nan_datapath_responder_rsp *rsp);
2056 
2057 /**
2058  * wmi_extract_ndp_end_rsp - api to extract ndp end rsp from even buffer
2059  * @wmi_hdl: wma handle
2060  * @data: event buffer
2061  * @rsp: buffer to populate
2062  *
2063  * Return: status of operation
2064  */
2065 QDF_STATUS wmi_extract_ndp_end_rsp(wmi_unified_t wmi_handle, uint8_t *data,
2066 			struct nan_datapath_end_rsp_event *rsp);
2067 
2068 /**
2069  * wmi_extract_ndp_end_ind - api to extract ndp end indication from even buffer
2070  * @wmi_hdl: wma handle
2071  * @data: event buffer
2072  * @ind: buffer to populate
2073  *
2074  * Return: status of operation
2075  */
2076 QDF_STATUS wmi_extract_ndp_end_ind(wmi_unified_t wmi_handle, uint8_t *data,
2077 			struct nan_datapath_end_indication_event **ind);
2078 #endif
2079 
2080 /**
2081  * wmi_unified_send_btm_config() - Send BTM config to fw
2082  * @wmi_hdl:  wmi handle
2083  * @params: pointer to wmi_btm_config
2084  *
2085  * Return: QDF_STATUS
2086  */
2087 QDF_STATUS wmi_unified_send_btm_config(void *wmi_hdl,
2088 				       struct wmi_btm_config *params);
2089 
2090 /**
2091  * wmi_unified_send_obss_detection_cfg_cmd() - WMI function to send obss
2092  *  detection configuration to FW.
2093  * @wmi_hdl: wmi handle
2094  * @cfg: obss detection configuration
2095  *
2096  * Send WMI_SAP_OBSS_DETECTION_CFG_CMDID parameters to fw.
2097  *
2098  * Return: QDF_STATUS
2099  */
2100 
2101 QDF_STATUS wmi_unified_send_obss_detection_cfg_cmd(void *wmi_hdl,
2102 			struct wmi_obss_detection_cfg_param *cfg);
2103 
2104 /**
2105  * wmi_unified_extract_obss_detection_info() - WMI function to extract obss
2106  *  detection info from FW.
2107  * @wmi_hdl: wmi handle
2108  * @data: event data from firmware
2109  * @info: Pointer to hold obss detection info
2110  *
2111  * This function is used to extract obss info from firmware.
2112  *
2113  * Return: QDF_STATUS
2114  */
2115 
2116 QDF_STATUS wmi_unified_extract_obss_detection_info(void *wmi_hdl,
2117 						   uint8_t *data,
2118 						   struct wmi_obss_detect_info
2119 						   *info);
2120 /**
2121  * wmi_unified_send_bss_color_change_enable_cmd() - WMI function to send bss
2122  *  color change enable to FW.
2123  * @wmi_hdl: wmi handle
2124  * @vdev_id: vdev ID
2125  * @enable: enable or disable color change handeling within firmware
2126  *
2127  * Send WMI_BSS_COLOR_CHANGE_ENABLE_CMDID parameters to fw,
2128  * thereby firmware updates bss color when AP announces bss color change.
2129  *
2130  * Return: QDF_STATUS
2131  */
2132 
2133 QDF_STATUS wmi_unified_send_bss_color_change_enable_cmd(void *wmi_hdl,
2134 							uint32_t vdev_id,
2135 							bool enable);
2136 
2137 /**
2138  * wmi_unified_send_obss_color_collision_cfg_cmd() - WMI function to send bss
2139  *  color collision detection configuration to FW.
2140  * @wmi_hdl: wmi handle
2141  * @cfg: obss color collision detection configuration
2142  *
2143  * Send WMI_OBSS_COLOR_COLLISION_DET_CONFIG_CMDID parameters to fw.
2144  *
2145  * Return: QDF_STATUS
2146  */
2147 
2148 QDF_STATUS wmi_unified_send_obss_color_collision_cfg_cmd(void *wmi_hdl,
2149 		struct wmi_obss_color_collision_cfg_param *cfg);
2150 
2151 /**
2152  * wmi_unified_extract_obss_color_collision_info() - WMI function to extract
2153  *  obss color collision info from FW.
2154  * @wmi_hdl: wmi handle
2155  * @data: event data from firmware
2156  * @info: Pointer to hold bss color collision info
2157  *
2158  * This function is used to extract bss collision info from firmware.
2159  *
2160  * Return: QDF_STATUS
2161  */
2162 
2163 QDF_STATUS wmi_unified_extract_obss_color_collision_info(void *wmi_hdl,
2164 		uint8_t *data, struct wmi_obss_color_collision_info *info);
2165 
2166 #ifdef WLAN_SUPPORT_GREEN_AP
2167 QDF_STATUS wmi_extract_green_ap_egap_status_info(
2168 		void *wmi_hdl, uint8_t *evt_buf,
2169 		struct wlan_green_ap_egap_status_info *egap_status_info_params);
2170 #endif
2171 
2172 #ifdef WLAN_SUPPORT_FILS
2173 /**
2174  * wmi_unified_fils_vdev_config_send_cmd() - send FILS config cmd to fw
2175  * @wmi_hdl: wmi handle
2176  * @param:   fils config params
2177  *
2178  * Return: QDF_STATUS_SUCCESS for success or error code
2179  */
2180 QDF_STATUS
2181 wmi_unified_fils_vdev_config_send_cmd(void *wmi_hdl,
2182 				      struct config_fils_params *param);
2183 
2184 /**
2185  * wmi_extract_swfda_vdev_id() - api to extract vdev id
2186  * @wmi_hdl: wmi handle
2187  * @evt_buf: pointer to event buffer
2188  * @vdev_id: pointer to vdev id
2189  *
2190  * Return: QDF_STATUS_SUCCESS for success or error code
2191  */
2192 QDF_STATUS wmi_extract_swfda_vdev_id(void *wmi_hdl, void *evt_buf,
2193 				     uint32_t *vdev_id);
2194 
2195 /**
2196  * wmi_unified_fils_discovery_send_cmd() - send FILS discovery cmd to fw
2197  * @wmi_hdl: wmi handle
2198  * @param:   fils discovery params
2199  *
2200  * Return: QDF_STATUS_SUCCESS for success or error code
2201  */
2202 QDF_STATUS wmi_unified_fils_discovery_send_cmd(void *wmi_hdl,
2203 					       struct fd_params *param);
2204 #endif /* WLAN_SUPPORT_FILS */
2205 
2206 /**
2207  * wmi_unified_offload_11k_cmd() - send 11k offload command
2208  * @wmi_hdl: wmi handle
2209  * @params: 11k offload params
2210  *
2211  * This function passes the 11k offload command params to FW
2212  *
2213  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2214  */
2215 QDF_STATUS wmi_unified_offload_11k_cmd(void *wmi_hdl,
2216 				struct wmi_11k_offload_params *params);
2217 /**
2218  * wmi_unified_invoke_neighbor_report_cmd() - send invoke neighbor report cmd
2219  * @wmi_hdl: wmi handle
2220  * @params: invoke neighbor report params
2221  *
2222  * This function passes the invoke neighbor report command to fw
2223  *
2224  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
2225  */
2226 QDF_STATUS wmi_unified_invoke_neighbor_report_cmd(void *wmi_hdl,
2227 			struct wmi_invoke_neighbor_report_params *params);
2228 
2229 #endif /* _WMI_UNIFIED_API_H_ */
2230