xref: /wlan-dirver/qca-wifi-host-cmn/wmi/inc/wmi_unified_priv.h (revision d0c05845839e5f2ba5a8dcebe0cd3e4cd4e8dfcf)
1 /*
2  * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /*
21  * This file contains the API definitions for the Unified Wireless
22  * Module Interface (WMI).
23  */
24 #ifndef _WMI_UNIFIED_PRIV_H_
25 #define _WMI_UNIFIED_PRIV_H_
26 #include <osdep.h>
27 #include "wmi_unified_api.h"
28 #include "wmi_unified_param.h"
29 #include "wlan_scan_ucfg_api.h"
30 #include "qdf_atomic.h"
31 #include <wbuff.h>
32 
33 #ifdef WLAN_FW_OFFLOAD
34 #include "wlan_fwol_public_structs.h"
35 #endif
36 
37 #ifdef DFS_COMPONENT_ENABLE
38 #include <wlan_dfs_public_struct.h>
39 #endif
40 #include <qdf_threads.h>
41 #ifdef WLAN_SUPPORT_GREEN_AP
42 #include "wlan_green_ap_api.h"
43 #endif
44 
45 #ifdef WLAN_FEATURE_NAN
46 #include "nan_public_structs.h"
47 #endif
48 
49 #ifdef WLAN_SUPPORT_TWT
50 #include "wmi_unified_twt_param.h"
51 #endif
52 
53 #ifdef WMI_SMART_ANT_SUPPORT
54 #include "wmi_unified_smart_ant_param.h"
55 #endif
56 
57 #ifdef WMI_DBR_SUPPORT
58 #include "wmi_unified_dbr_param.h"
59 #endif
60 
61 #ifdef WMI_ATF_SUPPORT
62 #include "wmi_unified_atf_param.h"
63 #endif
64 
65 #ifdef WDS_CONV_TARGET_IF_OPS_ENABLE
66 #include "wmi_unified_wds_param.h"
67 #endif
68 
69 #ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
70 #include <wlan_interop_issues_ap_public_structs.h>
71 #endif
72 
73 #ifdef WLAN_CFR_ENABLE
74 #include <wmi_unified_cfr_param.h>
75 #endif
76 
77 #ifdef DCS_INTERFERENCE_DETECTION
78 #include <wlan_dcs_public_structs.h>
79 #endif
80 
81 #ifdef WLAN_FEATURE_PKT_CAPTURE
82 #include "wlan_pkt_capture_public_structs.h"
83 #endif
84 
85 #ifdef WLAN_CONV_SPECTRAL_ENABLE
86 #include "wlan_spectral_public_structs.h"
87 #endif /* WLAN_CONV_SPECTRAL_ENABLE */
88 
89 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
90 #include <wlan_cm_roam_public_struct.h>
91 #endif
92 
93 #ifdef WMI_AP_SUPPORT
94 #include <wmi_unified_ap_params.h>
95 #endif
96 
97 #ifdef WLAN_FEATURE_11BE_MLO
98 #include <wmi_unified_11be_param.h>
99 #include "wlan_mlo_mgr_public_structs.h"
100 #endif
101 
102 #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
103 #include <wlan_twt_public_structs.h>
104 #endif
105 
106 #ifdef WLAN_FEATURE_DBAM_CONFIG
107 #include "wlan_coex_public_structs.h"
108 #endif
109 
110 #define WMI_UNIFIED_MAX_EVENT 0x100
111 
112 #ifdef WMI_EXT_DBG
113 
114 #define WMI_EXT_DBG_DIR			"WMI_EXT_DBG"
115 #define WMI_EXT_DBG_FILE		"wmi_log"
116 #define WMI_EXT_DBG_FILE_PERM		(QDF_FILE_USR_READ | \
117 					 QDF_FILE_GRP_READ | \
118 					 QDF_FILE_OTH_READ)
119 #define WMI_EXT_DBG_QUEUE_SIZE		1024
120 #define WMI_EXT_DBG_DUMP_ROW_SIZE	16
121 #define WMI_EXT_DBG_DUMP_GROUP_SIZE	1
122 
123 
124 /**
125  * enum WMI_MSG_TYPE - WMI message types
126  * @ WMI_MSG_TYPE_CMD - Message is of type WMI command
127  * @ WMI_MSG_TYPE_EVENT - Message is of type WMI event
128  */
129 enum WMI_MSG_TYPE {
130 	WMI_MSG_TYPE_CMD = 0,
131 	WMI_MSG_TYPE_EVENT,
132 };
133 
134 /**
135  * struct wmi_ext_dbg_msg - WMI command/event msg details
136  * @ node - qdf list node of wmi messages
137  * @ len - command/event message length
138  * @ ts - Time of WMI command/event handling
139  * @ WMI_MSG_TYPE - message type
140  * @ bug - command/event buffer
141  */
142 struct wmi_ext_dbg_msg {
143 	qdf_list_node_t node;
144 	uint32_t len;
145 	uint64_t ts;
146 	enum WMI_MSG_TYPE type;
147 	uint8_t buf[0];
148 };
149 #endif /*WMI_EXT_DBG */
150 
151 #define wmi_alert(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_WMI, ## params)
152 #define wmi_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_WMI, ## params)
153 #define wmi_warn(params...) QDF_TRACE_WARN(QDF_MODULE_ID_WMI, ## params)
154 #define wmi_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_WMI, ## params)
155 #define wmi_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_WMI, ## params)
156 
157 #define wmi_nofl_alert(params...) \
158 	QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_WMI, ## params)
159 #define wmi_nofl_err(params...) \
160 	QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_WMI, ## params)
161 #define wmi_nofl_warn(params...) \
162 	QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_WMI, ## params)
163 #define wmi_nofl_info(params...) \
164 	QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_WMI, ## params)
165 #define wmi_nofl_debug(params...) \
166 	QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_WMI, ## params)
167 
168 #define wmi_alert_rl(params...) QDF_TRACE_FATAL_RL(QDF_MODULE_ID_WMI, params)
169 #define wmi_err_rl(params...) QDF_TRACE_ERROR_RL(QDF_MODULE_ID_WMI, params)
170 #define wmi_warn_rl(params...) QDF_TRACE_WARN_RL(QDF_MODULE_ID_WMI, params)
171 #define wmi_info_rl(params...) QDF_TRACE_INFO_RL(QDF_MODULE_ID_WMI, params)
172 #define wmi_debug_rl(params...) QDF_TRACE_DEBUG_RL(QDF_MODULE_ID_WMI, params)
173 
174 #ifdef WMI_INTERFACE_EVENT_LOGGING
175 /* wmi entry size */
176 #ifndef WMI_DEBUG_ENTRY_MAX_LENGTH
177 #define WMI_DEBUG_ENTRY_MAX_LENGTH (16)
178 #endif
179 
180 /* wmi commands */
181 #ifndef WMI_CMD_DEBUG_MAX_ENTRY
182 #define WMI_CMD_DEBUG_MAX_ENTRY (1024)
183 #endif
184 #ifndef WMI_CMD_CMPL_DEBUG_MAX_ENTRY
185 #define WMI_CMD_CMPL_DEBUG_MAX_ENTRY (1024)
186 #endif
187 
188 /* wmi events */
189 #ifndef WMI_EVENT_DEBUG_MAX_ENTRY
190 #define WMI_EVENT_DEBUG_MAX_ENTRY (1024)
191 #endif
192 
193 /* wmi mgmt Tx */
194 #ifndef WMI_MGMT_TX_DEBUG_MAX_ENTRY
195 #define WMI_MGMT_TX_DEBUG_MAX_ENTRY (256)
196 #endif
197 #ifndef WMI_MGMT_TX_CMPL_DEBUG_MAX_ENTRY
198 #define WMI_MGMT_TX_CMPL_DEBUG_MAX_ENTRY (256)
199 #endif
200 
201 /* wmi mgmt Rx */
202 #ifndef WMI_MGMT_RX_DEBUG_MAX_ENTRY
203 #define WMI_MGMT_RX_DEBUG_MAX_ENTRY (256)
204 #endif
205 
206 /* wmi diag rx events max buffer */
207 #ifndef WMI_DIAG_RX_EVENT_DEBUG_MAX_ENTRY
208 #define WMI_DIAG_RX_EVENT_DEBUG_MAX_ENTRY (256)
209 #endif
210 
211 /* wmi filtered command event */
212 #ifdef WMI_INTERFACE_FILTERED_EVENT_LOGGING
213 #ifndef WMI_FILTERED_CMD_EVT_SUPPORTED
214 #define WMI_FILTERED_CMD_EVT_SUPPORTED (10)
215 #endif
216 
217 #ifndef WMI_FILTERED_CMD_EVT_MAX_NUM_ENTRY
218 #define WMI_FILTERED_CMD_EVT_MAX_NUM_ENTRY (1024)
219 #endif
220 #endif /* WMI_INTERFACE_FILTERED_EVENT_LOGGING */
221 
222 /**
223  * struct wmi_command_debug - WMI command log buffer data type
224  * @ command - Store WMI Command id
225  * @ data - Stores WMI command data
226  * @ time - Time of WMI command handling
227  */
228 struct wmi_command_debug {
229 	uint32_t command;
230 	/* WMI cmd data excluding TLV and WMI headers */
231 	uint32_t data[WMI_DEBUG_ENTRY_MAX_LENGTH / sizeof(uint32_t)];
232 	uint64_t time;
233 };
234 
235 /**
236  * struct wmi_command_cmp_debug - WMI command completion log buffer data type
237  * @ command - Store WMI Command id
238  * @ data - Stores WMI command data
239  * @ time - Time of WMI command handling
240  * @ dma_addr - dma address of the WMI buffer
241  * @ phy_addr - physical address of the WMI buffer
242  */
243 struct wmi_command_cmp_debug {
244 	uint32_t command;
245 	/* WMI cmd data excluding TLV and WMI headers */
246 	uint32_t data[WMI_DEBUG_ENTRY_MAX_LENGTH / sizeof(uint32_t)];
247 	uint64_t time;
248 	qdf_dma_addr_t dma_addr;
249 	uint64_t phy_addr;
250 };
251 
252 /**
253  * struct wmi_event_debug - WMI event log buffer data type
254  * @ command - Store WMI Event id
255  * @ data - Stores WMI Event data
256  * @ time - Time of WMI Event handling
257  */
258 struct wmi_event_debug {
259 	uint32_t event;
260 	/* WMI event data excluding TLV header */
261 	uint32_t data[WMI_DEBUG_ENTRY_MAX_LENGTH / sizeof(uint32_t)];
262 	uint64_t time;
263 };
264 
265 /**
266  * struct wmi_command_header - Type for accessing frame data
267  * @ type - 802.11 Frame type
268  * @ subType - 802.11 Frame subtype
269  * @ protVer - 802.11 Version
270  */
271 struct wmi_command_header {
272 #ifndef ANI_LITTLE_BIT_ENDIAN
273 
274 	uint32_t sub_type:4;
275 	uint32_t type:2;
276 	uint32_t prot_ver:2;
277 
278 #else
279 
280 	uint32_t prot_ver:2;
281 	uint32_t type:2;
282 	uint32_t sub_type:4;
283 
284 #endif
285 
286 };
287 
288 /**
289  * struct wmi_log_buf_t - WMI log buffer information type
290  * @buf - Refernce to WMI log buffer
291  * @ length - length of buffer
292  * @ buf_tail_idx - Tail index of buffer
293  * @ p_buf_tail_idx - refernce to buffer tail index. It is added to accommodate
294  * unified design since MCL uses global variable for buffer tail index
295  * @ size - the size of the buffer in number of entries
296  */
297 struct wmi_log_buf_t {
298 	void *buf;
299 	uint32_t length;
300 	uint32_t buf_tail_idx;
301 	uint32_t *p_buf_tail_idx;
302 	uint32_t size;
303 };
304 
305 /**
306  * struct wmi_debug_log_info - Meta data to hold information of all buffers
307  * used for WMI logging
308  * @wmi_command_log_buf_info - Buffer info for WMI Command log
309  * @wmi_command_tx_cmp_log_buf_info - Buffer info for WMI Command Tx completion
310  * log
311  * @wmi_event_log_buf_info - Buffer info for WMI Event log
312  * @wmi_rx_event_log_buf_info - Buffer info for WMI event received log
313  * @wmi_mgmt_command_log_buf_info - Buffer info for WMI Management Command log
314  * @wmi_mgmt_command_tx_cmp_log_buf_info - Buffer info for WMI Management
315  * Command Tx completion log
316  * @wmi_mgmt_event_log_buf_info - Buffer info for WMI Management event log
317  * @wmi_diag_event_log_buf_info - Buffer info for WMI diag event log
318  * @wmi_record_lock - Lock WMI recording
319  * @wmi_logging_enable - Enable/Disable state for WMI logging
320  * @wmi_id_to_name - Function refernce to API to convert Command id to
321  * string name
322  * @wmi_log_debugfs_dir - refernce to debugfs directory
323  * @filtered_wmi_cmds - Buffer to save inputs from user on
324  * which WMI commands to record
325  * @filtered_wmi_cmds_idx - target cmd index
326  * @filtered_wmi_evts - Buffer to save inputs from user on
327  * which WMI event to record
328  * @filtered_wmi_evts_idx - target evt index
329  * @wmi_filtered_command_log - buffer to record user specified WMI commands
330  * @wmi_filtered_event_log - buffer to record user specified WMI events
331  */
332 struct wmi_debug_log_info {
333 	struct wmi_log_buf_t wmi_command_log_buf_info;
334 	struct wmi_log_buf_t wmi_command_tx_cmp_log_buf_info;
335 
336 	struct wmi_log_buf_t wmi_event_log_buf_info;
337 	struct wmi_log_buf_t wmi_rx_event_log_buf_info;
338 
339 	struct wmi_log_buf_t wmi_mgmt_command_log_buf_info;
340 	struct wmi_log_buf_t wmi_mgmt_command_tx_cmp_log_buf_info;
341 	struct wmi_log_buf_t wmi_mgmt_event_log_buf_info;
342 	struct wmi_log_buf_t wmi_diag_event_log_buf_info;
343 
344 	qdf_spinlock_t wmi_record_lock;
345 	bool wmi_logging_enable;
346 	struct dentry *wmi_log_debugfs_dir;
347 
348 #ifdef WMI_INTERFACE_FILTERED_EVENT_LOGGING
349 	uint32_t *filtered_wmi_cmds;
350 	uint32_t filtered_wmi_cmds_idx;
351 	uint32_t *filtered_wmi_evts;
352 	uint32_t filtered_wmi_evts_idx;
353 	struct wmi_log_buf_t *wmi_filtered_command_log;
354 	struct wmi_log_buf_t *wmi_filtered_event_log;
355 #endif
356 };
357 
358 /**
359  * enum WMI_RECORD_TYPE - User specified WMI logging types
360  * @ WMI_CMD - wmi command id
361  * @ WMI_EVT - wmi event id
362  */
363 enum WMI_RECORD_TYPE {
364 	WMI_CMD = 1,
365 	WMI_EVT = 2,
366 };
367 
368 #endif /*WMI_INTERFACE_EVENT_LOGGING */
369 
370 #ifdef WLAN_OPEN_SOURCE
371 struct fwdebug {
372 	struct sk_buff_head fwlog_queue;
373 	struct completion fwlog_completion;
374 	A_BOOL fwlog_open;
375 };
376 #endif /* WLAN_OPEN_SOURCE */
377 
378 /**
379  * struct wmi_wq_dbg_info - WMI WQ debug info
380  * @ wd_msg_type_id - wmi event id
381  * @ wmi_wq - WMI workqueue struct
382  * @ task - WMI workqueue task struct
383  */
384 struct wmi_wq_dbg_info {
385 	uint32_t wd_msg_type_id;
386 	qdf_workqueue_t *wmi_wq;
387 	qdf_thread_t *task;
388 };
389 
390 struct wmi_ops {
391 #if defined(CONN_MGR_ADV_FEATURE) && \
392 	    (defined(WLAN_FEATURE_HOST_ROAM) || \
393 		     defined(WLAN_FEATURE_ROAM_OFFLOAD))
394 QDF_STATUS
395 (*extract_roam_event)(wmi_unified_t wmi_handle, void *evt_buf, uint32_t len,
396 		      struct roam_offload_roam_event *roam_event);
397 #endif
398 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
399 QDF_STATUS
400 (*extract_roam_btm_response_stats)(wmi_unified_t wmi_handle, void *evt_buf,
401 				   struct roam_btm_response_data *dst,
402 				   uint8_t idx);
403 
404 QDF_STATUS
405 (*extract_roam_initial_info)(wmi_unified_t wmi_handle, void *evt_buf,
406 			     struct roam_initial_data *dst, uint8_t idx);
407 
408 QDF_STATUS
409 (*extract_roam_msg_info)(wmi_unified_t wmi_handle, void *evt_buf,
410 			 struct roam_msg_info *dst, uint8_t idx);
411 
412 QDF_STATUS
413 (*extract_roam_frame_info)(wmi_unified_t wmi_handle, void *evt_buf,
414 			   struct roam_frame_stats *dst, uint8_t idx,
415 			   uint8_t num_frames);
416 /**
417  * extract_roam_sync_event  - Extract roam sync event func ptr
418  * @wmi_handle: WMI handle
419  * @evt_buf: Event buffer
420  * @len: evt buffer data len
421  * @synd_ind: roam sync ptr
422  *
423  * This api will allocate memory for roam sync info, extract
424  * the information sent by FW and pass to CM.The memory will be
425  * freed by target_if_cm_roam_sync_event.
426  *
427  * Return: QDF_STATUS
428  */
429 QDF_STATUS
430 (*extract_roam_sync_event)(wmi_unified_t wmi_handle, void *evt_buf,
431 			   uint32_t len,
432 			   struct roam_offload_synch_ind **sync_ind);
433 
434 QDF_STATUS
435 (*extract_roam_sync_frame_event)(wmi_unified_t wmi_handle, void *event,
436 				 uint32_t len,
437 				 struct roam_synch_frame_ind *frame_ptr);
438 
439 QDF_STATUS
440 (*extract_btm_dl_event)(wmi_unified_t wmi_handle,
441 			uint8_t *event, uint32_t data_len,
442 			struct roam_denylist_event **dst_list);
443 QDF_STATUS
444 (*extract_vdev_disconnect_event)(wmi_unified_t wmi_handle,
445 				 uint8_t *event, uint32_t data_len,
446 				 struct vdev_disconnect_event_data *data);
447 QDF_STATUS
448 (*extract_roam_scan_chan_list)(wmi_unified_t wmi_handle,
449 			       uint8_t *event, uint32_t data_len,
450 			       struct cm_roam_scan_ch_resp **data);
451 QDF_STATUS
452 (*extract_roam_stats_event)(wmi_unified_t wmi_handle,
453 			    uint8_t *event, uint32_t data_len,
454 			    struct roam_stats_event **data);
455 QDF_STATUS
456 (*extract_auth_offload_event)(wmi_unified_t wmi_handle,
457 			      uint8_t *event, uint32_t data_len,
458 			      struct auth_offload_event *auth_event);
459 QDF_STATUS
460 (*extract_roam_pmkid_request)(wmi_unified_t wmi_handle,
461 			      uint8_t *event, uint32_t data_len,
462 			      struct roam_pmkid_req_event **list);
463 QDF_STATUS
464 (*extract_roam_candidate_frame)(wmi_unified_t wmi_handle,
465 				uint8_t *event, uint32_t data_len,
466 				struct roam_scan_candidate_frame *data);
467 #ifdef WLAN_VENDOR_HANDOFF_CONTROL
468 /**
469  * extract_roam_vendor_control_param_event  - Extract vendor handoff param event
470  * function pointer
471  * @wmi_handle: WMI handle
472  * @event: Event buffer
473  * @data_len: evt buffer data len
474  * @vendor_handoff_params: vendor handoff param buffer pointer
475  *
476  * Return: QDF_STATUS
477  */
478 QDF_STATUS
479 (*extract_roam_vendor_control_param_event)(wmi_unified_t wmi_handle,
480 		uint8_t *event, uint32_t data_len,
481 		struct roam_vendor_handoff_params **vendor_handoff_params);
482 #endif
483 #endif
484 #ifdef FEATURE_MEC_OFFLOAD
485 QDF_STATUS
486 (*send_pdev_set_mec_timer_cmd)(struct wmi_unified *wmi_handle,
487 			       struct set_mec_timer_params *param);
488 #endif
489 QDF_STATUS (*send_vdev_create_cmd)(wmi_unified_t wmi_handle,
490 				 uint8_t macaddr[QDF_MAC_ADDR_SIZE],
491 				 struct vdev_create_params *param);
492 
493 QDF_STATUS (*send_vdev_delete_cmd)(wmi_unified_t wmi_handle,
494 					  uint8_t if_id);
495 
496 QDF_STATUS (*send_vdev_nss_chain_params_cmd)(wmi_unified_t wmi_handle,
497 					 uint8_t vdev_id,
498 					 struct vdev_nss_chains *user_cfg);
499 
500 QDF_STATUS (*send_vdev_stop_cmd)(wmi_unified_t wmi,
501 					uint8_t vdev_id);
502 
503 QDF_STATUS (*send_vdev_down_cmd)(wmi_unified_t wmi,
504 			uint8_t vdev_id);
505 
506 QDF_STATUS (*send_vdev_start_cmd)(wmi_unified_t wmi,
507 		struct vdev_start_params *req);
508 
509 QDF_STATUS (*send_vdev_set_nac_rssi_cmd)(wmi_unified_t wmi,
510 		struct vdev_scan_nac_rssi_params *req);
511 
512 QDF_STATUS (*send_peer_flush_tids_cmd)(wmi_unified_t wmi,
513 					 uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
514 					 struct peer_flush_params *param);
515 
516 QDF_STATUS (*send_peer_delete_cmd)(wmi_unified_t wmi,
517 				   uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
518 				   struct peer_delete_cmd_params *param);
519 
520 QDF_STATUS (*send_peer_delete_all_cmd)(
521 				wmi_unified_t wmi,
522 				struct peer_delete_all_params *param);
523 
524 QDF_STATUS
525 (*send_peer_unmap_conf_cmd)(wmi_unified_t wmi,
526 			    uint8_t vdev_id,
527 			    uint32_t peer_id_cnt,
528 			    uint16_t *peer_id_list);
529 
530 QDF_STATUS (*send_peer_param_cmd)(wmi_unified_t wmi,
531 				uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
532 				struct peer_set_params *param);
533 
534 QDF_STATUS (*send_vdev_up_cmd)(wmi_unified_t wmi,
535 			     uint8_t bssid[QDF_MAC_ADDR_SIZE],
536 				 struct vdev_up_params *params);
537 
538 QDF_STATUS (*send_peer_create_cmd)(wmi_unified_t wmi,
539 					struct peer_create_params *param);
540 
541 #ifdef WLAN_SUPPORT_GREEN_AP
542 QDF_STATUS (*send_green_ap_ps_cmd)(wmi_unified_t wmi_handle,
543 				   uint32_t value, uint8_t pdev_id);
544 
545 QDF_STATUS (*extract_green_ap_egap_status_info)(
546 		uint8_t *evt_buf,
547 		struct wlan_green_ap_egap_status_info *egap_status_info_params);
548 #endif
549 
550 QDF_STATUS
551 (*send_pdev_utf_cmd)(wmi_unified_t wmi_handle,
552 				struct pdev_utf_params *param,
553 				uint8_t mac_id);
554 QDF_STATUS
555 (*send_pdev_param_cmd)(wmi_unified_t wmi_handle,
556 			   struct pdev_params *param,
557 				uint8_t mac_id);
558 
559 QDF_STATUS
560 (*send_pdev_set_hw_mode_cmd)(wmi_unified_t wmi_handle,
561 			     uint32_t hw_mode_index);
562 
563 QDF_STATUS (*send_suspend_cmd)(wmi_unified_t wmi_handle,
564 				struct suspend_params *param,
565 				uint8_t mac_id);
566 
567 QDF_STATUS (*send_resume_cmd)(wmi_unified_t wmi_handle,
568 				uint8_t mac_id);
569 
570 #ifdef FEATURE_WLAN_D0WOW
571 QDF_STATUS (*send_d0wow_enable_cmd)(wmi_unified_t wmi_handle,
572 				uint8_t mac_id);
573 QDF_STATUS (*send_d0wow_disable_cmd)(wmi_unified_t wmi_handle,
574 				uint8_t mac_id);
575 #endif
576 
577 #if defined(WLAN_FEATURE_ROAM_OFFLOAD) && defined(FEATURE_DENYLIST_MGR)
578 QDF_STATUS
579 (*send_reject_ap_list_cmd)(struct wmi_unified *wmi_handle,
580 			   struct reject_ap_params *reject_params);
581 #endif
582 
583 QDF_STATUS (*send_wow_enable_cmd)(wmi_unified_t wmi_handle,
584 				struct wow_cmd_params *param,
585 				uint8_t mac_id);
586 
587 QDF_STATUS (*send_set_ap_ps_param_cmd)(wmi_unified_t wmi_handle,
588 					   uint8_t *peer_addr,
589 					   struct ap_ps_params *param);
590 
591 QDF_STATUS (*send_set_sta_ps_param_cmd)(wmi_unified_t wmi_handle,
592 					   struct sta_ps_params *param);
593 
594 QDF_STATUS (*send_crash_inject_cmd)(wmi_unified_t wmi_handle,
595 			 struct crash_inject *param);
596 
597 QDF_STATUS
598 (*send_dbglog_cmd)(wmi_unified_t wmi_handle,
599 				struct dbglog_params *dbglog_param);
600 
601 QDF_STATUS (*send_vdev_set_param_cmd)(wmi_unified_t wmi_handle,
602 				struct vdev_set_params *param);
603 
604 QDF_STATUS (*send_vdev_set_mu_snif_cmd)(wmi_unified_t wmi_handle,
605 					struct vdev_set_mu_snif_param *param);
606 
607 QDF_STATUS (*send_vdev_sifs_trigger_cmd)(wmi_unified_t wmi_handle,
608 					 struct sifs_trigger_param *param);
609 
610 QDF_STATUS (*send_stats_request_cmd)(wmi_unified_t wmi_handle,
611 				uint8_t macaddr[QDF_MAC_ADDR_SIZE],
612 				struct stats_request_params *param);
613 
614 #ifdef QCA_SUPPORT_MC_CP_STATS
615 QDF_STATUS (*send_request_peer_stats_info_cmd)(wmi_unified_t wmi_handle,
616 				struct peer_stats_request_params *param);
617 #endif /* QCA_SUPPORT_MC_CP_STATS */
618 
619 QDF_STATUS (*send_packet_log_enable_cmd)(wmi_unified_t wmi_handle,
620 			WMI_HOST_PKTLOG_EVENT PKTLOG_EVENT, uint8_t mac_id);
621 
622 QDF_STATUS (*send_packet_log_disable_cmd)(wmi_unified_t wmi_handle,
623 	uint8_t mac_id);
624 
625 QDF_STATUS (*send_fd_tmpl_cmd)(wmi_unified_t wmi_handle,
626 				struct fils_discovery_tmpl_params *param);
627 
628 QDF_STATUS (*send_beacon_send_cmd)(wmi_unified_t wmi_handle,
629 				struct beacon_params *param);
630 
631 QDF_STATUS (*send_beacon_tmpl_send_cmd)(wmi_unified_t wmi_handle,
632 				struct beacon_tmpl_params *param);
633 
634 QDF_STATUS (*send_peer_assoc_cmd)(wmi_unified_t wmi_handle,
635 				struct peer_assoc_params *param);
636 
637 QDF_STATUS (*send_scan_start_cmd)(wmi_unified_t wmi_handle,
638 				struct scan_req_params *param);
639 
640 QDF_STATUS (*send_scan_stop_cmd)(wmi_unified_t wmi_handle,
641 				struct scan_cancel_param *param);
642 
643 QDF_STATUS (*send_scan_chan_list_cmd)(wmi_unified_t wmi_handle,
644 				struct scan_chan_list_params *param);
645 
646 QDF_STATUS (*send_mgmt_cmd)(wmi_unified_t wmi_handle,
647 				struct wmi_mgmt_params *param);
648 
649 QDF_STATUS (*send_offchan_data_tx_cmd)(wmi_unified_t wmi_handle,
650 				struct wmi_offchan_data_tx_params *param);
651 
652 QDF_STATUS (*send_modem_power_state_cmd)(wmi_unified_t wmi_handle,
653 		uint32_t param_value);
654 
655 QDF_STATUS (*send_set_sta_ps_mode_cmd)(wmi_unified_t wmi_handle,
656 			       uint32_t vdev_id, uint8_t val);
657 
658 QDF_STATUS (*send_idle_roam_monitor_cmd)(wmi_unified_t wmi_handle,
659 					 uint8_t val);
660 
661 QDF_STATUS (*send_get_temperature_cmd)(wmi_unified_t wmi_handle);
662 
663 #ifdef CONVERGED_P2P_ENABLE
664 QDF_STATUS (*send_set_p2pgo_oppps_req_cmd)(wmi_unified_t wmi_handle,
665 		struct p2p_ps_params *oppps);
666 
667 QDF_STATUS (*send_set_p2pgo_noa_req_cmd)(wmi_unified_t wmi_handle,
668 			struct p2p_ps_params *noa);
669 
670 #ifdef FEATURE_P2P_LISTEN_OFFLOAD
671 QDF_STATUS (*send_p2p_lo_start_cmd)(wmi_unified_t wmi_handle,
672 			struct p2p_lo_start *param);
673 
674 QDF_STATUS (*send_p2p_lo_stop_cmd)(wmi_unified_t wmi_handle,
675 			uint8_t vdev_id);
676 #endif /* FEATURE_P2P_LISTEN_OFFLOAD */
677 #endif /* CONVERGED_P2P_ENABLE */
678 
679 QDF_STATUS (*send_set_smps_params_cmd)(wmi_unified_t wmi_handle,
680 			  uint8_t vdev_id,
681 			  int value);
682 
683 QDF_STATUS (*send_set_mimops_cmd)(wmi_unified_t wmi_handle,
684 			uint8_t vdev_id, int value);
685 
686 QDF_STATUS (*send_set_sta_uapsd_auto_trig_cmd)(wmi_unified_t wmi_handle,
687 				struct sta_uapsd_trig_params *param);
688 
689 #ifdef WLAN_FEATURE_DSRC
690 QDF_STATUS (*send_ocb_set_utc_time_cmd)(wmi_unified_t wmi_handle,
691 				struct ocb_utc_param *utc);
692 
693 QDF_STATUS (*send_ocb_get_tsf_timer_cmd)(wmi_unified_t wmi_handle,
694 			  uint8_t vdev_id);
695 
696 QDF_STATUS (*send_ocb_start_timing_advert_cmd)(wmi_unified_t wmi_handle,
697 	struct ocb_timing_advert_param *timing_advert);
698 
699 QDF_STATUS (*send_ocb_stop_timing_advert_cmd)(wmi_unified_t wmi_handle,
700 	struct ocb_timing_advert_param *timing_advert);
701 
702 QDF_STATUS (*send_dcc_get_stats_cmd)(wmi_unified_t wmi_handle,
703 		     struct ocb_dcc_get_stats_param *get_stats_param);
704 
705 QDF_STATUS (*send_dcc_clear_stats_cmd)(wmi_unified_t wmi_handle,
706 				uint32_t vdev_id, uint32_t dcc_stats_bitmap);
707 
708 QDF_STATUS (*send_dcc_update_ndl_cmd)(wmi_unified_t wmi_handle,
709 		       struct ocb_dcc_update_ndl_param *update_ndl_param);
710 
711 QDF_STATUS (*send_ocb_set_config_cmd)(wmi_unified_t wmi_handle,
712 		  struct ocb_config *config);
713 QDF_STATUS (*extract_ocb_chan_config_resp)(wmi_unified_t wmi_hdl,
714 					   void *evt_buf,
715 					   uint32_t *status);
716 QDF_STATUS (*extract_ocb_tsf_timer)(wmi_unified_t wmi_hdl,
717 				    void *evt_buf,
718 				    struct ocb_get_tsf_timer_response *resp);
719 QDF_STATUS (*extract_dcc_update_ndl_resp)(wmi_unified_t wmi_hdl,
720 		void *evt_buf, struct ocb_dcc_update_ndl_response *resp);
721 QDF_STATUS (*extract_dcc_stats)(wmi_unified_t wmi_hdl,
722 				void *evt_buf,
723 				struct ocb_dcc_get_stats_response **response);
724 #endif /* WLAN_FEATURE_DSRC */
725 QDF_STATUS (*send_lro_config_cmd)(wmi_unified_t wmi_handle,
726 	 struct wmi_lro_config_cmd_t *wmi_lro_cmd);
727 
728 QDF_STATUS (*send_set_thermal_mgmt_cmd)(wmi_unified_t wmi_handle,
729 				struct thermal_cmd_params *thermal_info);
730 
731 QDF_STATUS (*send_peer_rate_report_cmd)(wmi_unified_t wmi_handle,
732 	 struct wmi_peer_rate_report_params *rate_report_params);
733 
734 #ifdef WMI_CONCURRENCY_SUPPORT
735 QDF_STATUS (*send_set_mcc_channel_time_quota_cmd)
736 	(wmi_unified_t wmi_handle,
737 	uint32_t adapter_1_chan_freq,
738 	uint32_t adapter_1_quota, uint32_t adapter_2_chan_freq);
739 
740 QDF_STATUS (*send_set_mcc_channel_time_latency_cmd)
741 	(wmi_unified_t wmi_handle,
742 	uint32_t mcc_channel_freq, uint32_t mcc_channel_time_latency);
743 
744 QDF_STATUS (*send_set_enable_disable_mcc_adaptive_scheduler_cmd)(
745 		  wmi_unified_t wmi_handle, uint32_t mcc_adaptive_scheduler,
746 		  uint32_t pdev_id);
747 
748 #ifdef WLAN_FEATURE_MCC_QUOTA
749 QDF_STATUS (*extract_mcc_quota_ev_param)(wmi_unified_t wmi_handle,
750 					 void *evt_buf,
751 					 struct mcc_quota_info *param);
752 #endif
753 #endif /* WMI_CONCURRENCY_SUPPORT */
754 
755 QDF_STATUS (*send_p2p_go_set_beacon_ie_cmd)(wmi_unified_t wmi_handle,
756 				    uint32_t vdev_id, uint8_t *p2p_ie);
757 
758 QDF_STATUS (*send_probe_rsp_tmpl_send_cmd)(wmi_unified_t wmi_handle,
759 			     uint8_t vdev_id,
760 			     struct wmi_probe_resp_params *probe_rsp_info);
761 
762 QDF_STATUS (*send_setup_install_key_cmd)(wmi_unified_t wmi_handle,
763 				struct set_key_params *key_params);
764 
765 QDF_STATUS (*send_reset_passpoint_network_list_cmd)(wmi_unified_t wmi_handle,
766 					struct wifi_passpoint_req_param *req);
767 
768 #ifdef WMI_ROAM_SUPPORT
769 #ifdef FEATURE_LFR_SUBNET_DETECTION
770 QDF_STATUS (*send_set_gateway_params_cmd)(wmi_unified_t wmi_handle,
771 					struct gateway_update_req_param *req);
772 #endif /* FEATURE_LFR_SUBNET_DETECTION */
773 
774 #ifdef FEATURE_RSSI_MONITOR
775 QDF_STATUS (*send_set_rssi_monitoring_cmd)(wmi_unified_t wmi_handle,
776 					struct rssi_monitor_param *req);
777 #endif /* FEATURE_RSSI_MONITOR */
778 
779 QDF_STATUS (*send_roam_scan_offload_rssi_thresh_cmd)(
780 			wmi_unified_t wmi_handle,
781 			struct wlan_roam_offload_scan_rssi_params *roam_req);
782 
783 QDF_STATUS (*send_roam_scan_offload_scan_period_cmd)(
784 				wmi_unified_t wmi_handle,
785 				struct wlan_roam_scan_period_params *params);
786 
787 QDF_STATUS (*send_roam_mawc_params_cmd)(
788 				wmi_unified_t wmi_handle,
789 				struct wlan_roam_mawc_params *params);
790 
791 QDF_STATUS (*send_roam_scan_filter_cmd)(wmi_unified_t wmi_handle,
792 				struct roam_scan_filter_params *roam_req);
793 
794 QDF_STATUS (*send_roam_scan_offload_mode_cmd)(
795 		wmi_unified_t wmi_handle,
796 		struct wlan_roam_scan_offload_params *rso_cfg);
797 
798 QDF_STATUS (*send_roam_scan_offload_ap_profile_cmd)(wmi_unified_t wmi_handle,
799 				    struct ap_profile_params *ap_profile);
800 
801 QDF_STATUS (*send_roam_scan_offload_cmd)(wmi_unified_t wmi_handle,
802 				 uint32_t command, uint32_t vdev_id);
803 
804 QDF_STATUS (*send_roam_scan_offload_chan_list_cmd)(
805 			wmi_unified_t wmi_handle,
806 			struct wlan_roam_scan_channel_list *rso_ch_info);
807 
808 QDF_STATUS (*send_roam_scan_offload_rssi_change_cmd)(
809 				wmi_unified_t wmi_handle,
810 				struct wlan_roam_rssi_change_params *params);
811 
812 QDF_STATUS (*send_per_roam_config_cmd)(wmi_unified_t wmi_handle,
813 		struct wlan_per_roam_config_req *req_buf);
814 
815 QDF_STATUS (*send_offload_11k_cmd)(wmi_unified_t wmi_handle,
816 		struct wlan_roam_11k_offload_params *params);
817 
818 QDF_STATUS (*send_invoke_neighbor_report_cmd)(wmi_unified_t wmi_handle,
819 		struct wmi_invoke_neighbor_report_params *params);
820 
821 QDF_STATUS (*send_roam_bss_load_config)(
822 				wmi_unified_t wmi_handle,
823 				struct wlan_roam_bss_load_config *params);
824 
825 QDF_STATUS (*send_disconnect_roam_params)(wmi_unified_t wmi_handle,
826 			struct wlan_roam_disconnect_params *req);
827 
828 QDF_STATUS (*send_idle_roam_params)(wmi_unified_t wmi_handle,
829 				    struct wlan_roam_idle_params *req);
830 
831 QDF_STATUS (*send_roam_preauth_status)(wmi_unified_t wmi_handle,
832 				struct wmi_roam_auth_status_params *params);
833 
834 QDF_STATUS (*send_btm_config)(wmi_unified_t wmi_handle,
835 			      struct wlan_roam_btm_config *params);
836 
837 QDF_STATUS (*send_limit_off_chan_cmd)(wmi_unified_t wmi_handle,
838 		struct wmi_limit_off_chan_param *limit_off_chan_param);
839 
840 #ifdef WLAN_FEATURE_FILS_SK
841 QDF_STATUS (*send_roam_scan_hlp_cmd) (wmi_unified_t wmi_handle,
842 				struct hlp_params *params);
843 #endif /* WLAN_FEATURE_FILS_SK */
844 
845 #ifdef FEATURE_WLAN_ESE
846 QDF_STATUS (*send_plm_stop_cmd)(wmi_unified_t wmi_handle,
847 		 const struct plm_req_params *plm);
848 
849 QDF_STATUS (*send_plm_start_cmd)(wmi_unified_t wmi_handle,
850 				 const struct plm_req_params *plm);
851 #endif /* FEATURE_WLAN_ESE */
852 
853 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
854 QDF_STATUS (*send_set_ric_req_cmd)(wmi_unified_t wmi_handle, void *msg,
855 			uint8_t is_add_ts);
856 
857 QDF_STATUS (*send_process_roam_synch_complete_cmd)(wmi_unified_t wmi_handle,
858 		 uint8_t vdev_id);
859 
860 #ifdef WLAN_VENDOR_HANDOFF_CONTROL
861 QDF_STATUS (*send_process_roam_vendor_handoff_req_cmd)(wmi_unified_t wmi_handle,
862 					uint8_t vdev_id, uint32_t param_id);
863 #endif
864 
865 QDF_STATUS (*send_roam_invoke_cmd)(wmi_unified_t wmi_handle,
866 		struct roam_invoke_req *roaminvoke);
867 
868 QDF_STATUS (*send_set_roam_trigger_cmd)(wmi_unified_t wmi_handle,
869 					struct wlan_roam_triggers *triggers);
870 #endif /* WLAN_FEATURE_ROAM_OFFLOAD */
871 #endif /* WMI_ROAM_SUPPORT */
872 
873 QDF_STATUS (*send_scan_probe_setoui_cmd)(wmi_unified_t wmi_handle,
874 			  struct scan_mac_oui *psetoui);
875 
876 QDF_STATUS (*send_set_passpoint_network_list_cmd)(wmi_unified_t wmi_handle,
877 					struct wifi_passpoint_req_param *req);
878 
879 QDF_STATUS (*send_set_epno_network_list_cmd)(wmi_unified_t wmi_handle,
880 		struct wifi_enhanced_pno_params *req);
881 
882 QDF_STATUS (*send_extscan_get_capabilities_cmd)(wmi_unified_t wmi_handle,
883 			  struct extscan_capabilities_params *pgetcapab);
884 
885 QDF_STATUS (*send_extscan_get_cached_results_cmd)(wmi_unified_t wmi_handle,
886 			  struct extscan_cached_result_params *pcached_results);
887 
888 QDF_STATUS (*send_extscan_stop_change_monitor_cmd)(wmi_unified_t wmi_handle,
889 			  struct extscan_capabilities_reset_params *reset_req);
890 
891 QDF_STATUS (*send_extscan_start_change_monitor_cmd)(wmi_unified_t wmi_handle,
892 		struct extscan_set_sig_changereq_params *
893 		psigchange);
894 
895 QDF_STATUS (*send_extscan_stop_hotlist_monitor_cmd)(wmi_unified_t wmi_handle,
896 		struct extscan_bssid_hotlist_reset_params *photlist_reset);
897 
898 QDF_STATUS (*send_extscan_start_hotlist_monitor_cmd)(wmi_unified_t wmi_handle,
899 		struct extscan_bssid_hotlist_set_params *params);
900 
901 QDF_STATUS (*send_stop_extscan_cmd)(wmi_unified_t wmi_handle,
902 		  struct extscan_stop_req_params *pstopcmd);
903 
904 QDF_STATUS (*send_start_extscan_cmd)(wmi_unified_t wmi_handle,
905 		    struct wifi_scan_cmd_req_params *pstart);
906 
907 QDF_STATUS (*send_csa_offload_enable_cmd)(wmi_unified_t wmi_handle,
908 			uint8_t vdev_id);
909 
910 QDF_STATUS (*send_pno_stop_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id);
911 
912 QDF_STATUS (*send_pno_start_cmd)(wmi_unified_t wmi_handle,
913 		   struct pno_scan_req_params *pno);
914 
915 QDF_STATUS (*send_obss_disable_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id);
916 
917 QDF_STATUS (*send_nlo_mawc_cmd)(wmi_unified_t wmi_handle,
918 		struct nlo_mawc_params *params);
919 
920 #ifdef IPA_OFFLOAD
921 QDF_STATUS (*send_ipa_offload_control_cmd)(wmi_unified_t wmi_handle,
922 		struct ipa_uc_offload_control_params *ipa_offload);
923 #endif
924 
925 #ifdef WLAN_FEATURE_LINK_LAYER_STATS
926 QDF_STATUS (*send_process_ll_stats_clear_cmd)(wmi_unified_t wmi_handle,
927 				const struct ll_stats_clear_params *clear_req);
928 
929 QDF_STATUS (*send_process_ll_stats_set_cmd)(wmi_unified_t wmi_handle,
930 				const struct ll_stats_set_params *set_req);
931 
932 QDF_STATUS (*send_process_ll_stats_get_cmd)(wmi_unified_t wmi_handle,
933 				const struct ll_stats_get_params *get_req);
934 #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION
935 QDF_STATUS (*send_unified_ll_stats_get_sta_cmd)(wmi_unified_t wmi_handle,
936 				const struct ll_stats_get_params *get_req);
937 #endif
938 #endif
939 
940 QDF_STATUS (*send_congestion_cmd)(wmi_unified_t wmi_handle,
941 				  uint8_t vdev_id);
942 
943 QDF_STATUS (*send_snr_request_cmd)(wmi_unified_t wmi_handle);
944 
945 QDF_STATUS (*send_snr_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id);
946 
947 QDF_STATUS (*send_link_status_req_cmd)(wmi_unified_t wmi_handle,
948 				 struct link_status_params *link_status);
949 #ifdef WLAN_POWER_MANAGEMENT_OFFLOAD
950 QDF_STATUS (*send_add_wow_wakeup_event_cmd)(wmi_unified_t wmi_handle,
951 					uint32_t vdev_id,
952 					uint32_t *bitmap,
953 					bool enable);
954 
955 QDF_STATUS (*send_wow_patterns_to_fw_cmd)(wmi_unified_t wmi_handle,
956 				uint8_t vdev_id, uint8_t ptrn_id,
957 				const uint8_t *ptrn, uint8_t ptrn_len,
958 				uint8_t ptrn_offset, const uint8_t *mask,
959 				uint8_t mask_len, bool user,
960 				uint8_t default_patterns);
961 
962 QDF_STATUS (*send_enable_arp_ns_offload_cmd)(wmi_unified_t wmi_handle,
963 			   struct pmo_arp_offload_params *arp_offload_req,
964 			   struct pmo_ns_offload_params *ns_offload_req,
965 			   uint8_t vdev_id);
966 
967 QDF_STATUS (*send_conf_hw_filter_cmd)(wmi_unified_t wmi,
968 				      struct pmo_hw_filter_params *req);
969 
970 QDF_STATUS (*send_enable_enhance_multicast_offload_cmd)(
971 		wmi_unified_t wmi_handle,
972 		uint8_t vdev_id, bool action);
973 
974 QDF_STATUS (*send_add_clear_mcbc_filter_cmd)(wmi_unified_t wmi_handle,
975 				     uint8_t vdev_id,
976 				     struct qdf_mac_addr multicast_addr,
977 				     bool clearList);
978 
979 QDF_STATUS (*send_multiple_add_clear_mcbc_filter_cmd)(wmi_unified_t wmi_handle,
980 				uint8_t vdev_id,
981 				struct pmo_mcast_filter_params *filter_param);
982 
983 QDF_STATUS (*send_gtk_offload_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id,
984 					   struct pmo_gtk_req *params,
985 					   bool enable_offload,
986 					   uint32_t gtk_offload_opcode);
987 #ifdef WLAN_FEATURE_IGMP_OFFLOAD
988 QDF_STATUS (*send_igmp_offload_cmd)(wmi_unified_t wmi_handle,
989 				    struct pmo_igmp_offload_req *pmo_igmp_req);
990 #endif
991 
992 QDF_STATUS (*send_process_gtk_offload_getinfo_cmd)(wmi_unified_t wmi_handle,
993 				uint8_t vdev_id,
994 				uint64_t offload_req_opcode);
995 
996 QDF_STATUS (*send_wow_sta_ra_filter_cmd)(wmi_unified_t wmi_handle,
997 				   uint8_t vdev_id, uint8_t default_pattern,
998 				   uint16_t rate_limit_interval);
999 
1000 QDF_STATUS (*send_action_frame_patterns_cmd)(wmi_unified_t wmi_handle,
1001 			struct pmo_action_wakeup_set_params *action_params);
1002 
1003 QDF_STATUS (*extract_gtk_rsp_event)(wmi_unified_t wmi_handle,
1004 			void *evt_buf,
1005 			struct pmo_gtk_rsp_params *gtk_rsp_param, uint32_t len);
1006 
1007 QDF_STATUS (*send_wow_delete_pattern_cmd)(wmi_unified_t wmi_handle,
1008 					  uint8_t ptrn_id,
1009 					  uint8_t vdev_id);
1010 
1011 QDF_STATUS (*send_host_wakeup_ind_to_fw_cmd)(wmi_unified_t wmi_handle,
1012 					     bool tx_pending_ind);
1013 
1014 QDF_STATUS (*send_wow_timer_pattern_cmd)(wmi_unified_t wmi_handle,
1015 			uint8_t vdev_id, uint32_t cookie, uint32_t time);
1016 #ifdef FEATURE_WLAN_LPHB
1017 QDF_STATUS (*send_lphb_config_hbenable_cmd)(wmi_unified_t wmi_handle,
1018 				wmi_hb_set_enable_cmd_fixed_param *params);
1019 
1020 QDF_STATUS (*send_lphb_config_tcp_params_cmd)(wmi_unified_t wmi_handle,
1021 				    wmi_hb_set_tcp_params_cmd_fixed_param *lphb_conf_req);
1022 
1023 QDF_STATUS (*send_lphb_config_tcp_pkt_filter_cmd)(wmi_unified_t wmi_handle,
1024 				wmi_hb_set_tcp_pkt_filter_cmd_fixed_param *g_hb_tcp_filter_fp);
1025 
1026 QDF_STATUS (*send_lphb_config_udp_params_cmd)(wmi_unified_t wmi_handle,
1027 				    wmi_hb_set_udp_params_cmd_fixed_param *lphb_conf_req);
1028 
1029 QDF_STATUS (*send_lphb_config_udp_pkt_filter_cmd)(wmi_unified_t wmi_handle,
1030 					wmi_hb_set_udp_pkt_filter_cmd_fixed_param *lphb_conf_req);
1031 #endif /* FEATURE_WLAN_LPHB */
1032 #ifdef WLAN_FEATURE_PACKET_FILTERING
1033 QDF_STATUS (*send_enable_disable_packet_filter_cmd)(wmi_unified_t wmi_handle,
1034 					uint8_t vdev_id, bool enable);
1035 
1036 QDF_STATUS (*send_config_packet_filter_cmd)(wmi_unified_t wmi_handle,
1037 		uint8_t vdev_id, struct pmo_rcv_pkt_fltr_cfg *rcv_filter_param,
1038 		uint8_t filter_id, bool enable);
1039 #endif
1040 
1041 #ifdef WLAN_FEATURE_ICMP_OFFLOAD
1042 QDF_STATUS (*send_icmp_offload_config_cmd)(wmi_unified_t wmi_handle,
1043 			   struct pmo_icmp_offload *pmo_icmp_req);
1044 #endif
1045 #endif /* end of WLAN_POWER_MANAGEMENT_OFFLOAD */
1046 #ifdef WLAN_WMI_BCN
1047 QDF_STATUS (*send_bcn_buf_ll_cmd)(wmi_unified_t wmi_handle,
1048 			wmi_bcn_send_from_host_cmd_fixed_param * param);
1049 #endif
1050 
1051 #if !defined(REMOVE_PKT_LOG) && defined(FEATURE_PKTLOG)
1052 QDF_STATUS (*send_pktlog_wmi_send_cmd)(wmi_unified_t wmi_handle,
1053 				   WMI_PKTLOG_EVENT pktlog_event,
1054 				   WMI_CMD_ID cmd_id, uint8_t user_triggered);
1055 #endif
1056 
1057 #ifdef WLAN_SUPPORT_GREEN_AP
1058 QDF_STATUS (*send_egap_conf_params_cmd)(wmi_unified_t wmi_handle,
1059 			struct wlan_green_ap_egap_params *egap_params);
1060 #endif
1061 
1062 #ifdef WLAN_FEATURE_CIF_CFR
1063 QDF_STATUS (*send_oem_dma_cfg_cmd)(wmi_unified_t wmi_handle,
1064 				   wmi_oem_dma_ring_cfg_req_fixed_param *cfg);
1065 #endif
1066 
1067 QDF_STATUS (*send_start_oem_data_cmd)(wmi_unified_t wmi_handle,
1068 				      uint32_t data_len,
1069 				      uint8_t *data);
1070 
1071 #ifdef FEATURE_OEM_DATA
1072 QDF_STATUS (*send_start_oemv2_data_cmd)(wmi_unified_t wmi_handle,
1073 					struct oem_data *params);
1074 #endif
1075 
1076 QDF_STATUS
1077 (*send_dfs_phyerr_filter_offload_en_cmd)(wmi_unified_t wmi_handle,
1078 			bool dfs_phyerr_filter_offload);
1079 
1080 QDF_STATUS (*send_bss_color_change_enable_cmd)(wmi_unified_t wmi_handle,
1081 					       uint32_t vdev_id,
1082 					       bool enable);
1083 
1084 QDF_STATUS (*send_obss_color_collision_cfg_cmd)(wmi_unified_t wmi_handle,
1085 		struct wmi_obss_color_collision_cfg_param *cfg);
1086 
1087 QDF_STATUS (*extract_obss_color_collision_info)(uint8_t *evt_buf,
1088 		struct wmi_obss_color_collision_info *info);
1089 
1090 QDF_STATUS (*send_peer_based_pktlog_cmd)(wmi_unified_t wmi_handle,
1091 					 uint8_t *macaddr,
1092 					 uint8_t mac_id,
1093 					 uint8_t enb_dsb);
1094 
1095 #ifdef WMI_STA_SUPPORT
1096 QDF_STATUS (*send_del_ts_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id,
1097 				uint8_t ac);
1098 
1099 QDF_STATUS (*send_aggr_qos_cmd)(wmi_unified_t wmi_handle,
1100 		      struct aggr_add_ts_param *aggr_qos_rsp_msg);
1101 
1102 QDF_STATUS (*send_add_ts_cmd)(wmi_unified_t wmi_handle,
1103 		 struct add_ts_param *msg);
1104 
1105 QDF_STATUS (*send_process_add_periodic_tx_ptrn_cmd)(
1106 					wmi_unified_t wmi_handle,
1107 					struct periodic_tx_pattern *pattern,
1108 					uint8_t vdev_id);
1109 
1110 QDF_STATUS (*send_process_del_periodic_tx_ptrn_cmd)(wmi_unified_t wmi_handle,
1111 						    uint8_t vdev_id,
1112 						    uint8_t pattern_id);
1113 
1114 QDF_STATUS (*send_set_auto_shutdown_timer_cmd)(wmi_unified_t wmi_handle,
1115 						  uint32_t timer_val);
1116 
1117 #ifdef WLAN_FEATURE_NAN
1118 QDF_STATUS (*send_nan_req_cmd)(wmi_unified_t wmi_handle,
1119 			struct nan_msg_params *nan_req);
1120 
1121 QDF_STATUS (*send_nan_disable_req_cmd)(wmi_unified_t wmi_handle,
1122 				       struct nan_disable_req *nan_msg);
1123 
1124 QDF_STATUS (*extract_nan_event_rsp)(wmi_unified_t wmi_handle, void *evt_buf,
1125 				    struct nan_event_params *evt_params,
1126 				    uint8_t **msg_buf);
1127 #endif
1128 
1129 QDF_STATUS (*send_process_ch_avoid_update_cmd)(wmi_unified_t wmi_handle);
1130 
1131 QDF_STATUS (*send_process_set_ie_info_cmd)(wmi_unified_t wmi_handle,
1132 				   struct vdev_ie_info_param *ie_info);
1133 
1134 QDF_STATUS (*send_set_base_macaddr_indicate_cmd)(wmi_unified_t wmi_handle,
1135 					 uint8_t *custom_addr);
1136 
1137 QDF_STATUS (*send_pdev_set_pcl_cmd)(wmi_unified_t wmi_handle,
1138 				struct wmi_pcl_chan_weights *msg);
1139 
1140 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
1141 QDF_STATUS (*send_vdev_set_pcl_cmd)(wmi_unified_t wmi_handle,
1142 				    struct set_pcl_cmd_params *params);
1143 
1144 QDF_STATUS (*send_roam_set_param_cmd)(wmi_unified_t wmi_handle,
1145 				      struct vdev_set_params *roam_param);
1146 #endif
1147 
1148 #ifdef WLAN_POLICY_MGR_ENABLE
1149 QDF_STATUS (*send_pdev_set_dual_mac_config_cmd)(wmi_unified_t wmi_handle,
1150 		struct policy_mgr_dual_mac_config *msg);
1151 #endif
1152 
1153 QDF_STATUS (*send_set_led_flashing_cmd)(wmi_unified_t wmi_handle,
1154 				struct flashing_req_params *flashing);
1155 
1156 QDF_STATUS (*send_set_arp_stats_req_cmd)(wmi_unified_t wmi_handle,
1157 					 struct set_arp_stats *req_buf);
1158 
1159 QDF_STATUS (*send_get_arp_stats_req_cmd)(wmi_unified_t wmi_handle,
1160 					 struct get_arp_stats *req_buf);
1161 
1162 QDF_STATUS (*send_set_del_pmkid_cache_cmd) (wmi_unified_t wmi_handle,
1163 		struct wmi_unified_pmk_cache *req_buf);
1164 
1165 QDF_STATUS (*send_adapt_dwelltime_params_cmd)(wmi_unified_t wmi_handle,
1166 			struct wmi_adaptive_dwelltime_params *dwelltime_params);
1167 
1168 QDF_STATUS (*send_dbs_scan_sel_params_cmd)(wmi_unified_t wmi_handle,
1169 			struct wmi_dbs_scan_sel_params *dbs_scan_params);
1170 
1171 QDF_STATUS (*send_vdev_set_gtx_cfg_cmd)(wmi_unified_t wmi_handle,
1172 				  uint32_t if_id,
1173 				  struct wmi_gtx_config *gtx_info);
1174 
1175 QDF_STATUS (*send_set_sta_keep_alive_cmd)(wmi_unified_t wmi_handle,
1176 					  struct sta_keep_alive_params *params);
1177 
1178 QDF_STATUS (*send_set_sta_sa_query_param_cmd)(wmi_unified_t wmi_handle,
1179 					uint8_t vdev_id, uint32_t max_retries,
1180 					uint32_t retry_interval);
1181 
1182 QDF_STATUS (*send_fw_profiling_cmd)(wmi_unified_t wmi_handle,
1183 			uint32_t cmd, uint32_t value1, uint32_t value2);
1184 
1185 QDF_STATUS (*send_nat_keepalive_en_cmd)(wmi_unified_t wmi_handle,
1186 					uint8_t vdev_id);
1187 
1188 QDF_STATUS (*send_process_dhcp_ind_cmd)(wmi_unified_t wmi_handle,
1189 			wmi_peer_set_param_cmd_fixed_param *ta_dhcp_ind);
1190 
1191 QDF_STATUS (*send_get_link_speed_cmd)(wmi_unified_t wmi_handle,
1192 			wmi_mac_addr peer_macaddr);
1193 
1194 QDF_STATUS (*send_wlm_latency_level_cmd)(wmi_unified_t wmi_handle,
1195 				struct wlm_latency_level_param *param);
1196 
1197 QDF_STATUS (*send_sar_limit_cmd)(wmi_unified_t wmi_handle,
1198 				struct sar_limit_cmd_params *params);
1199 
1200 QDF_STATUS (*get_sar_limit_cmd)(wmi_unified_t wmi_handle);
1201 
1202 QDF_STATUS (*extract_sar_limit_event)(wmi_unified_t wmi_handle,
1203 				      uint8_t *evt_buf,
1204 				      struct sar_limit_event *event);
1205 
1206 QDF_STATUS (*extract_sar2_result_event)(void *handle,
1207 					uint8_t *event,
1208 					uint32_t len);
1209 
1210 #ifdef FEATURE_WLAN_TDLS
1211 QDF_STATUS (*send_set_tdls_offchan_mode_cmd)(wmi_unified_t wmi_handle,
1212 			      struct tdls_channel_switch_params *chan_switch_params);
1213 
1214 QDF_STATUS (*send_update_fw_tdls_state_cmd)(wmi_unified_t wmi_handle,
1215 					    struct tdls_info *tdls_param,
1216 					    enum wmi_tdls_state tdls_state);
1217 
1218 QDF_STATUS (*send_update_tdls_peer_state_cmd)(wmi_unified_t wmi_handle,
1219 				struct tdls_peer_update_state *peer_state,
1220 				uint32_t *ch_mhz);
1221 
1222 QDF_STATUS (*extract_vdev_tdls_ev_param)(wmi_unified_t wmi_handle,
1223 		void *evt_buf, struct tdls_event_info *param);
1224 #endif /* FEATURE_WLAN_TDLS */
1225 #endif /* WMI_STA_SUPPORT */
1226 
1227 QDF_STATUS (*send_stats_ext_req_cmd)(wmi_unified_t wmi_handle,
1228 			struct stats_ext_params *preq);
1229 
1230 #ifdef WLAN_FEATURE_EXTWOW_SUPPORT
1231 QDF_STATUS (*send_enable_ext_wow_cmd)(wmi_unified_t wmi_handle,
1232 			struct ext_wow_params *params);
1233 
1234 QDF_STATUS (*send_set_app_type2_params_in_fw_cmd)(wmi_unified_t wmi_handle,
1235 				struct app_type2_params *appType2Params);
1236 
1237 QDF_STATUS (*send_app_type1_params_in_fw_cmd)(wmi_unified_t wmi_handle,
1238 				struct app_type1_params *app_type1_params);
1239 #endif /* WLAN_FEATURE_EXTWOW_SUPPORT */
1240 
1241 QDF_STATUS (*send_process_dhcpserver_offload_cmd)(wmi_unified_t wmi_handle,
1242 				struct dhcp_offload_info_params *params);
1243 
1244 QDF_STATUS (*send_regdomain_info_to_fw_cmd)(wmi_unified_t wmi_handle,
1245 				   uint32_t reg_dmn, uint16_t regdmn2G,
1246 				   uint16_t regdmn5G, uint8_t ctl2G,
1247 				   uint8_t ctl5G);
1248 
1249 QDF_STATUS (*send_process_fw_mem_dump_cmd)(wmi_unified_t wmi_handle,
1250 					struct fw_dump_req_param *mem_dump_req);
1251 
1252 QDF_STATUS (*send_cfg_action_frm_tb_ppdu_cmd)(wmi_unified_t wmi_handle,
1253 				struct cfg_action_frm_tb_ppdu_param *cfg_info);
1254 
1255 QDF_STATUS (*save_fw_version_cmd)(wmi_unified_t wmi_handle, void *evt_buf);
1256 
1257 QDF_STATUS (*check_and_update_fw_version_cmd)(wmi_unified_t wmi_hdl, void *ev);
1258 
1259 QDF_STATUS (*send_log_supported_evt_cmd)(wmi_unified_t wmi_handle,
1260 		uint8_t *event,
1261 		uint32_t len);
1262 
1263 QDF_STATUS (*send_enable_specific_fw_logs_cmd)(wmi_unified_t wmi_handle,
1264 		struct wmi_wifi_start_log *start_log);
1265 
1266 QDF_STATUS (*send_flush_logs_to_fw_cmd)(wmi_unified_t wmi_handle);
1267 
1268 QDF_STATUS (*send_unit_test_cmd)(wmi_unified_t wmi_handle,
1269 				 struct wmi_unit_test_cmd *wmi_utest);
1270 
1271 #ifdef FEATURE_WLAN_APF
1272 QDF_STATUS
1273 (*send_set_active_apf_mode_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id,
1274 				enum wmi_host_active_apf_mode ucast_mode,
1275 				enum wmi_host_active_apf_mode mcast_bcast_mode);
1276 
1277 QDF_STATUS (*send_apf_enable_cmd)(wmi_unified_t wmi_handle, uint32_t vdev_id,
1278 				  bool enable);
1279 
1280 QDF_STATUS (*send_apf_write_work_memory_cmd)(wmi_unified_t wmi_handle,
1281 			struct wmi_apf_write_memory_params *apf_write_params);
1282 
1283 QDF_STATUS (*send_apf_read_work_memory_cmd)(wmi_unified_t wmi_handle,
1284 			struct wmi_apf_read_memory_params *apf_read_params);
1285 
1286 QDF_STATUS (*extract_apf_read_memory_resp_event)(wmi_unified_t wmi_handle,
1287 			void *evt_buf,
1288 			struct wmi_apf_read_memory_resp_event_params *resp);
1289 #endif /* FEATURE_WLAN_APF */
1290 
1291 QDF_STATUS (*send_pdev_get_tpc_config_cmd)(wmi_unified_t wmi_handle,
1292 		uint32_t param);
1293 
1294 #ifdef WMI_ATF_SUPPORT
1295 QDF_STATUS (*send_set_bwf_cmd)(wmi_unified_t wmi_handle,
1296 		struct set_bwf_params *param);
1297 #endif
1298 
1299 QDF_STATUS (*send_pdev_fips_cmd)(wmi_unified_t wmi_handle,
1300 		struct fips_params *param);
1301 
1302 #ifdef WLAN_FEATURE_FIPS_BER_CCMGCM
1303 QDF_STATUS (*send_pdev_fips_extend_cmd)(wmi_unified_t wmi_handle,
1304 					struct fips_extend_params *param);
1305 
1306 QDF_STATUS (*send_pdev_fips_mode_set_cmd)(wmi_unified_t wmi_handle,
1307 					  struct fips_mode_set_params *param);
1308 #endif
1309 
1310 QDF_STATUS (*send_wlan_profile_enable_cmd)(wmi_unified_t wmi_handle,
1311 		struct wlan_profile_params *param);
1312 
1313 #ifdef WLAN_FEATURE_DISA
1314 QDF_STATUS
1315 (*send_encrypt_decrypt_send_cmd)(wmi_unified_t wmi_handle,
1316 				 struct disa_encrypt_decrypt_req_params
1317 				 *params);
1318 #endif
1319 
1320 QDF_STATUS (*send_wlan_profile_trigger_cmd)(wmi_unified_t wmi_handle,
1321 		struct wlan_profile_params *param);
1322 
1323 QDF_STATUS (*send_wlan_profile_hist_intvl_cmd)(wmi_unified_t wmi_handle,
1324 		struct wlan_profile_params *param);
1325 
1326 QDF_STATUS (*send_pdev_set_chan_cmd)(wmi_unified_t wmi_handle,
1327 		struct channel_param *param);
1328 
1329 QDF_STATUS (*send_process_update_edca_param_cmd)(wmi_unified_t wmi_handle,
1330 		uint8_t vdev_id, bool mu_edca_param,
1331 		struct wmi_host_wme_vparams wmm_vparams[WMI_MAX_NUM_AC]);
1332 
1333 QDF_STATUS (*send_set_ratepwr_table_cmd)(wmi_unified_t wmi_handle,
1334 		struct ratepwr_table_params *param);
1335 
1336 QDF_STATUS (*send_get_ratepwr_table_cmd)(wmi_unified_t wmi_handle);
1337 
1338 QDF_STATUS (*send_set_ratepwr_chainmsk_cmd)(wmi_unified_t wmi_handle,
1339 		struct ratepwr_chainmsk_params *param);
1340 
1341 QDF_STATUS (*send_set_macaddr_cmd)(wmi_unified_t wmi_handle,
1342 		struct macaddr_params *param);
1343 
1344 QDF_STATUS (*send_pdev_scan_start_cmd)(wmi_unified_t wmi_handle);
1345 
1346 QDF_STATUS (*send_pdev_scan_end_cmd)(wmi_unified_t wmi_handle);
1347 
1348 QDF_STATUS (*send_set_acparams_cmd)(wmi_unified_t wmi_handle,
1349 		struct acparams_params *param);
1350 
1351 QDF_STATUS (*send_set_vap_dscp_tid_map_cmd)(wmi_unified_t wmi_handle,
1352 		struct vap_dscp_tid_map_params *param);
1353 
1354 QDF_STATUS (*send_proxy_ast_reserve_cmd)(wmi_unified_t wmi_handle,
1355 		struct proxy_ast_reserve_params *param);
1356 
1357 #if defined(WMI_AP_SUPPORT) || defined(WDS_CONV_TARGET_IF_OPS_ENABLE)
1358 QDF_STATUS (*send_peer_add_wds_entry_cmd)(wmi_unified_t wmi_handle,
1359 		struct peer_add_wds_entry_params *param);
1360 
1361 QDF_STATUS (*send_peer_del_wds_entry_cmd)(wmi_unified_t wmi_handle,
1362 		struct peer_del_wds_entry_params *param);
1363 
1364 #ifdef WLAN_FEATURE_MULTI_AST_DEL
1365 QDF_STATUS (*send_peer_del_multi_wds_entries_cmd)(wmi_unified_t wmi_handle,
1366 		struct peer_del_multi_wds_entry_params *param);
1367 #endif
1368 
1369 QDF_STATUS (*send_peer_update_wds_entry_cmd)(wmi_unified_t wmi_handle,
1370 		struct peer_update_wds_entry_params *param);
1371 #endif
1372 
1373 #ifdef WMI_AP_SUPPORT
1374 
1375 QDF_STATUS (*send_set_ctl_table_cmd)(wmi_unified_t wmi_handle,
1376 		struct ctl_table_params *param);
1377 
1378 QDF_STATUS (*send_set_mimogain_table_cmd)(wmi_unified_t wmi_handle,
1379 		struct mimogain_table_params *param);
1380 
1381 QDF_STATUS (*send_packet_power_info_get_cmd)(wmi_unified_t wmi_handle,
1382 		      struct packet_power_info_params *param);
1383 
1384 QDF_STATUS (*send_get_halphy_cal_status_cmd)(wmi_unified_t wmi_handle,
1385 					     struct halphy_cal_status_params *param);
1386 
1387 QDF_STATUS (*send_set_ht_ie_cmd)(wmi_unified_t wmi_handle,
1388 		struct ht_ie_params *param);
1389 
1390 QDF_STATUS (*send_set_vht_ie_cmd)(wmi_unified_t wmi_handle,
1391 		struct vht_ie_params *param);
1392 
1393 QDF_STATUS (*send_set_quiet_mode_cmd)(wmi_unified_t wmi_handle,
1394 		struct set_quiet_mode_params *param);
1395 
1396 QDF_STATUS (*send_set_bcn_offload_quiet_mode_cmd)(wmi_unified_t wmi_handle,
1397 		struct set_bcn_offload_quiet_mode_params *param);
1398 
1399 QDF_STATUS (*send_bcn_offload_control_cmd)(wmi_unified_t wmi_handle,
1400 			struct bcn_offload_control *bcn_ctrl_param);
1401 
1402 QDF_STATUS (*extract_swba_tim_info)(wmi_unified_t wmi_handle, void *evt_buf,
1403 	uint32_t idx, wmi_host_tim_info *tim_info);
1404 
1405 QDF_STATUS (*extract_swba_noa_info)(wmi_unified_t wmi_handle, void *evt_buf,
1406 	    uint32_t idx, wmi_host_p2p_noa_info *p2p_desc);
1407 
1408 QDF_STATUS (*extract_swba_quiet_info)(wmi_unified_t wmi_handle, void *evt_buf,
1409 				      uint32_t idx,
1410 				      wmi_host_quiet_info *quiet_info);
1411 
1412 QDF_STATUS (*extract_offchan_data_tx_compl_param)(wmi_unified_t wmi_handle,
1413 		void *evt_buf,
1414 		struct wmi_host_offchan_data_tx_compl_event *param);
1415 
1416 QDF_STATUS (*extract_pdev_tpc_config_ev_param)(wmi_unified_t wmi_handle,
1417 		void *evt_buf, wmi_host_pdev_tpc_config_event *param);
1418 
1419 #ifdef QCA_RSSI_DB2DBM
1420 QDF_STATUS (*extract_pdev_rssi_dbm_conv_ev_param)(wmi_unified_t wmi_handle,
1421 						  void *evt_buf,
1422 						  struct rssi_db2dbm_param *param);
1423 #endif
1424 
1425 QDF_STATUS (*extract_peer_sta_kickout_ev)(wmi_unified_t wmi_handle,
1426 		void *evt_buf, wmi_host_peer_sta_kickout_event *ev);
1427 
1428 QDF_STATUS (*extract_peer_create_response_event)(
1429 			wmi_unified_t wmi_handle,
1430 			void *evt_buf,
1431 			struct wmi_host_peer_create_response_event *param);
1432 
1433 QDF_STATUS (*extract_peer_delete_response_event)(
1434 			wmi_unified_t wmi_handle,
1435 			void *evt_buf,
1436 			struct wmi_host_peer_delete_response_event *param);
1437 
1438 QDF_STATUS (*extract_pdev_tpc_ev_param)(wmi_unified_t wmi_handle,
1439 		void *evt_buf, wmi_host_pdev_tpc_event *param);
1440 
1441 QDF_STATUS (*extract_nfcal_power_ev_param)(wmi_unified_t wmi_handle,
1442 		void *evt_buf,
1443 		wmi_host_pdev_nfcal_power_all_channels_event *param);
1444 
1445 QDF_STATUS (*extract_wds_addr_event)(wmi_unified_t wmi_handle,
1446 	void *evt_buf, uint16_t len, wds_addr_event_t *wds_ev);
1447 
1448 QDF_STATUS (*extract_peer_sta_ps_statechange_ev)(wmi_unified_t wmi_handle,
1449 	void *evt_buf, wmi_host_peer_sta_ps_statechange_event *ev);
1450 
1451 QDF_STATUS (*extract_inst_rssi_stats_event)(wmi_unified_t wmi_handle,
1452 		void *evt_buf, wmi_host_inst_stats_resp *inst_rssi_resp);
1453 
1454 QDF_STATUS (*extract_pdev_caldata_version_check_ev_param)(
1455 	wmi_unified_t wmi_handle,
1456 	void *evt_buf, wmi_host_pdev_check_cal_version_event *param);
1457 
1458 QDF_STATUS
1459 (*send_peer_set_intra_bss_cmd)(wmi_unified_t wmi_handle,
1460 			       struct wmi_intra_bss_params *param);
1461 
1462 QDF_STATUS
1463 (*send_vdev_set_intra_bss_cmd)(struct wmi_unified *wmi_handle,
1464 			       struct wmi_intra_bss_params *param);
1465 
1466 #ifdef WLAN_SUPPORT_RX_PROTOCOL_TYPE_TAG
1467 QDF_STATUS (*set_rx_pkt_type_routing_tag_cmd)(
1468 	wmi_unified_t wmi_hdl, struct wmi_rx_pkt_protocol_routing_info *param);
1469 #endif /* WLAN_SUPPORT_RX_PROTOCOL_TYPE_TAG */
1470 
1471 QDF_STATUS (*send_peer_vlan_config_cmd)(wmi_unified_t wmi,
1472 					uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
1473 					struct peer_vlan_config_param *param);
1474 
1475 #ifdef WLAN_SUPPORT_FILS
1476 QDF_STATUS (*extract_swfda_vdev_id)(wmi_unified_t wmi_handle, void *evt_buf,
1477 				    uint32_t *vdev_id);
1478 QDF_STATUS (*send_fils_discovery_send_cmd)(wmi_unified_t wmi_handle,
1479 					   struct fd_params *param);
1480 #endif /* WLAN_SUPPORT_FILS */
1481 
1482 QDF_STATUS (*send_set_qboost_param_cmd)(wmi_unified_t wmi_handle,
1483 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1484 		struct set_qboost_params *param);
1485 
1486 QDF_STATUS (*send_mcast_group_update_cmd)(wmi_unified_t wmi_handle,
1487 		struct mcast_group_update_params *param);
1488 
1489 QDF_STATUS (*send_pdev_qvit_cmd)(wmi_unified_t wmi_handle,
1490 		struct pdev_qvit_params *param);
1491 
1492 QDF_STATUS (*send_wmm_update_cmd)(wmi_unified_t wmi_handle,
1493 		struct wmm_update_params *param);
1494 
1495 QDF_STATUS (*extract_mgmt_tx_compl_param)(wmi_unified_t wmi_handle,
1496 		void *evt_buf, wmi_host_mgmt_tx_compl_event *param);
1497 
1498 QDF_STATUS (*extract_chan_info_event)(wmi_unified_t wmi_handle, void *evt_buf,
1499 				   wmi_host_chan_info_event *chan_info);
1500 
1501 QDF_STATUS (*extract_channel_hopping_event)(wmi_unified_t wmi_handle,
1502 		void *evt_buf,
1503 		wmi_host_pdev_channel_hopping_event *ch_hopping);
1504 
1505 QDF_STATUS (*send_peer_chan_width_switch_cmd)(wmi_unified_t wmi_handle,
1506 		struct peer_chan_width_switch_params *param);
1507 
1508 #endif
1509 
1510 QDF_STATUS (*send_set_bridge_mac_addr_cmd)(wmi_unified_t wmi_handle,
1511 		struct set_bridge_mac_addr_params *param);
1512 
1513 QDF_STATUS (*send_phyerr_enable_cmd)(wmi_unified_t wmi_handle);
1514 
1515 QDF_STATUS (*send_phyerr_disable_cmd)(wmi_unified_t wmi_handle);
1516 
1517 #ifdef WMI_SMART_ANT_SUPPORT
1518 QDF_STATUS (*send_set_ant_switch_tbl_cmd)(wmi_unified_t wmi_handle,
1519 		struct ant_switch_tbl_params *param);
1520 
1521 QDF_STATUS (*send_smart_ant_enable_cmd)(wmi_unified_t wmi_handle,
1522 		struct smart_ant_enable_params *param);
1523 
1524 QDF_STATUS (*send_smart_ant_set_rx_ant_cmd)(wmi_unified_t wmi_handle,
1525 		struct smart_ant_rx_ant_params *param);
1526 
1527 QDF_STATUS (*send_smart_ant_set_tx_ant_cmd)(wmi_unified_t wmi_handle,
1528 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1529 		struct smart_ant_tx_ant_params *param);
1530 
1531 QDF_STATUS (*send_smart_ant_set_training_info_cmd)(wmi_unified_t wmi_handle,
1532 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1533 		struct smart_ant_training_info_params *param);
1534 
1535 QDF_STATUS (*send_smart_ant_set_node_config_cmd)(wmi_unified_t wmi_handle,
1536 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1537 		struct smart_ant_node_config_params *param);
1538 #endif
1539 
1540 #ifdef WLAN_IOT_SIM_SUPPORT
1541 QDF_STATUS (*send_simulation_test_cmd)(wmi_unified_t wmi_handle,
1542 				       struct simulation_test_params *param);
1543 #endif
1544 
1545 QDF_STATUS (*send_smart_ant_enable_tx_feedback_cmd)(wmi_unified_t wmi_handle,
1546 		struct smart_ant_enable_tx_feedback_params *param);
1547 
1548 #ifdef WLAN_CONV_SPECTRAL_ENABLE
1549 QDF_STATUS (*extract_pdev_sscan_fw_cmd_fixed_param)(
1550 				wmi_unified_t wmi_handle,
1551 				uint8_t *evt_buf,
1552 				struct spectral_startscan_resp_params *params);
1553 
1554 QDF_STATUS (*extract_pdev_sscan_fft_bin_index)(
1555 			wmi_unified_t wmi_handle,
1556 			uint8_t *evt_buf,
1557 			struct spectral_fft_bin_markers_160_165mhz *params);
1558 
1559 QDF_STATUS (*extract_pdev_spectral_session_chan_info)(
1560 			wmi_unified_t wmi_handle, void *event,
1561 			struct spectral_session_chan_info *chan_info);
1562 
1563 QDF_STATUS (*extract_pdev_spectral_session_detector_info)(
1564 		wmi_unified_t wmi_handle, void *event,
1565 		struct spectral_session_det_info *det_info,
1566 		uint8_t det_info_idx);
1567 
1568 QDF_STATUS (*extract_spectral_caps_fixed_param)(
1569 		wmi_unified_t wmi_handle, void *event,
1570 		struct spectral_capabilities_event_params *param);
1571 
1572 QDF_STATUS (*extract_spectral_scan_bw_caps)(
1573 		wmi_unified_t wmi_handle, void *event,
1574 		struct spectral_scan_bw_capabilities *bw_caps);
1575 
1576 QDF_STATUS (*extract_spectral_fft_size_caps)(
1577 		wmi_unified_t wmi_handle, void *event,
1578 		struct spectral_fft_size_capabilities *fft_size_caps);
1579 #endif /* WLAN_CONV_SPECTRAL_ENABLE */
1580 
1581 QDF_STATUS (*send_vdev_spectral_configure_cmd)(wmi_unified_t wmi_handle,
1582 		struct vdev_spectral_configure_params *param);
1583 
1584 QDF_STATUS (*send_vdev_spectral_enable_cmd)(wmi_unified_t wmi_handle,
1585 		struct vdev_spectral_enable_params *param);
1586 
1587 QDF_STATUS (*send_bss_chan_info_request_cmd)(wmi_unified_t wmi_handle,
1588 		struct bss_chan_info_request_params *param);
1589 
1590 QDF_STATUS (*send_thermal_mitigation_param_cmd)(wmi_unified_t wmi_handle,
1591 		struct thermal_mitigation_params *param);
1592 
1593 QDF_STATUS (*send_vdev_set_neighbour_rx_cmd)(wmi_unified_t wmi_handle,
1594 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1595 		struct set_neighbour_rx_params *param);
1596 
1597 QDF_STATUS (*send_vdev_set_fwtest_param_cmd)(wmi_unified_t wmi_handle,
1598 		struct set_fwtest_params *param);
1599 
1600 QDF_STATUS (*send_vdev_config_ratemask_cmd)(wmi_unified_t wmi_handle,
1601 		struct config_ratemask_params *param);
1602 
1603 QDF_STATUS (*send_vdev_set_custom_aggr_size_cmd)(wmi_unified_t wmi_handle,
1604 		struct set_custom_aggr_size_params *param);
1605 
1606 QDF_STATUS (*send_vdev_set_qdepth_thresh_cmd)(wmi_unified_t wmi_handle,
1607 		struct set_qdepth_thresh_params *param);
1608 
1609 QDF_STATUS (*send_wow_wakeup_cmd)(wmi_unified_t wmi_handle);
1610 
1611 QDF_STATUS (*send_wow_add_wakeup_event_cmd)(wmi_unified_t wmi_handle,
1612 		struct wow_add_wakeup_params *param);
1613 
1614 QDF_STATUS (*send_wow_add_wakeup_pattern_cmd)(wmi_unified_t wmi_handle,
1615 		struct wow_add_wakeup_pattern_params *param);
1616 
1617 QDF_STATUS (*send_wow_remove_wakeup_pattern_cmd)(wmi_unified_t wmi_handle,
1618 		struct wow_remove_wakeup_pattern_params *param);
1619 
1620 QDF_STATUS (*send_pdev_set_regdomain_cmd)(wmi_unified_t wmi_handle,
1621 		struct pdev_set_regdomain_params *param);
1622 
1623 QDF_STATUS (*send_set_beacon_filter_cmd)(wmi_unified_t wmi_handle,
1624 		struct set_beacon_filter_params *param);
1625 
1626 QDF_STATUS (*send_remove_beacon_filter_cmd)(wmi_unified_t wmi_handle,
1627 		struct remove_beacon_filter_params *param);
1628 /*
1629 QDF_STATUS (*send_mgmt_cmd)(wmi_unified_t wmi_handle,
1630 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1631 		struct mgmt_params *param);
1632 		*/
1633 
1634 QDF_STATUS (*send_addba_clearresponse_cmd)(wmi_unified_t wmi_handle,
1635 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1636 		struct addba_clearresponse_params *param);
1637 
1638 QDF_STATUS (*send_addba_send_cmd)(wmi_unified_t wmi_handle,
1639 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1640 		struct addba_send_params *param);
1641 
1642 QDF_STATUS (*send_delba_send_cmd)(wmi_unified_t wmi_handle,
1643 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1644 		struct delba_send_params *param);
1645 
1646 QDF_STATUS (*send_addba_setresponse_cmd)(wmi_unified_t wmi_handle,
1647 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1648 		struct addba_setresponse_params *param);
1649 
1650 QDF_STATUS (*send_singleamsdu_cmd)(wmi_unified_t wmi_handle,
1651 		uint8_t macaddr[QDF_MAC_ADDR_SIZE],
1652 		struct singleamsdu_params *param);
1653 
1654 QDF_STATUS (*send_mu_scan_cmd)(wmi_unified_t wmi_handle,
1655 		struct mu_scan_params *param);
1656 
1657 QDF_STATUS (*send_lteu_config_cmd)(wmi_unified_t wmi_handle,
1658 		struct lteu_config_params *param);
1659 
1660 QDF_STATUS (*send_set_ps_mode_cmd)(wmi_unified_t wmi_handle,
1661 		       struct set_ps_mode_params *param);
1662 QDF_STATUS (*save_service_bitmap)(wmi_unified_t wmi_handle,
1663 		void *evt_buf,  void *bitmap_buf);
1664 QDF_STATUS (*save_ext_service_bitmap)(wmi_unified_t wmi_handle,
1665 		void *evt_buf,  void *bitmap_buf);
1666 bool (*is_service_enabled)(wmi_unified_t wmi_handle,
1667 	uint32_t service_id);
1668 QDF_STATUS (*get_target_cap_from_service_ready)(wmi_unified_t wmi_handle,
1669 	void *evt_buf, struct wlan_psoc_target_capability_info *ev);
1670 
1671 QDF_STATUS (*extract_fw_version)(wmi_unified_t wmi_handle,
1672 				void *ev, struct wmi_host_fw_ver *fw_ver);
1673 
1674 QDF_STATUS (*extract_fw_abi_version)(wmi_unified_t wmi_handle,
1675 				void *ev, struct wmi_host_fw_abi_ver *fw_ver);
1676 
1677 QDF_STATUS (*extract_hal_reg_cap)(
1678 		wmi_unified_t wmi_handle, void *evt_buf,
1679 		struct wlan_psoc_hal_reg_capability *hal_reg_cap);
1680 
1681 QDF_STATUS (*extract_hal_reg_cap_ext2)(
1682 		wmi_unified_t wmi_handle, void *evt_buf, uint8_t phy_idx,
1683 		struct wlan_psoc_host_hal_reg_capabilities_ext2 *hal_reg_cap);
1684 
1685 uint32_t (*extract_num_mem_reqs)(wmi_unified_t wmi_handle,
1686 				 void *evt_buf);
1687 
1688 QDF_STATUS (*extract_host_mem_req)(wmi_unified_t wmi_handle,
1689 				   void *evt_buf, host_mem_req *mem_reqs,
1690 				   uint32_t num_active_peers,
1691 				   uint32_t num_peers,
1692 				   enum wmi_fw_mem_prio fw_prio, uint16_t idx);
1693 
1694 QDF_STATUS (*init_cmd_send)(wmi_unified_t wmi_handle,
1695 				struct wmi_init_cmd_param *param);
1696 
1697 QDF_STATUS (*save_fw_version)(wmi_unified_t wmi_handle, void *evt_buf);
1698 uint32_t (*ready_extract_init_status)(wmi_unified_t wmi_hdl, void *ev);
1699 QDF_STATUS (*ready_extract_mac_addr)(wmi_unified_t wmi_hdl, void *ev,
1700 		uint8_t *macaddr);
1701 wmi_host_mac_addr * (*ready_extract_mac_addr_list)(wmi_unified_t wmi_hdl,
1702 					void *ev, uint8_t *num_mac_addr);
1703 QDF_STATUS (*extract_ready_event_params)(wmi_unified_t wmi_handle,
1704 		void *evt_buf, struct wmi_host_ready_ev_param *ev_param);
1705 
1706 QDF_STATUS (*check_and_update_fw_version)(wmi_unified_t wmi_hdl, void *ev);
1707 uint8_t* (*extract_dbglog_data_len)(wmi_unified_t wmi_handle, void *evt_buf,
1708 		uint32_t *len);
1709 QDF_STATUS (*send_ext_resource_config)(wmi_unified_t wmi_handle,
1710 		wmi_host_ext_resource_config *ext_cfg);
1711 
1712 QDF_STATUS (*send_nf_dbr_dbm_info_get_cmd)(wmi_unified_t wmi_handle,
1713 					   uint8_t mac_id);
1714 
1715 #ifdef WLAN_FEATURE_GPIO_CFG
1716 QDF_STATUS (*send_gpio_config_cmd)(wmi_unified_t wmi_handle,
1717 		      struct gpio_config_params *param);
1718 
1719 QDF_STATUS (*send_gpio_output_cmd)(wmi_unified_t wmi_handle,
1720 		      struct gpio_output_params *param);
1721 #endif
1722 
1723 QDF_STATUS (*send_rtt_meas_req_test_cmd)(wmi_unified_t wmi_handle,
1724 		      struct rtt_meas_req_test_params *param);
1725 
1726 QDF_STATUS (*send_rtt_meas_req_cmd)(wmi_unified_t wmi_handle,
1727 		      struct rtt_meas_req_params *param);
1728 
1729 QDF_STATUS (*send_rtt_keepalive_req_cmd)(wmi_unified_t wmi_handle,
1730 		      struct rtt_keepalive_req_params *param);
1731 
1732 QDF_STATUS (*send_lci_set_cmd)(wmi_unified_t wmi_handle,
1733 		      struct lci_set_params *param);
1734 
1735 QDF_STATUS (*send_lcr_set_cmd)(wmi_unified_t wmi_handle,
1736 		      struct lcr_set_params *param);
1737 
1738 QDF_STATUS (*send_periodic_chan_stats_config_cmd)(wmi_unified_t wmi_handle,
1739 			struct periodic_chan_stats_params *param);
1740 
1741 #ifdef WLAN_ATF_ENABLE
1742 QDF_STATUS (*send_set_atf_cmd)(wmi_unified_t wmi_handle,
1743 			       struct set_atf_params *param);
1744 
1745 QDF_STATUS
1746 (*send_atf_peer_request_cmd)(wmi_unified_t wmi_handle,
1747 			     struct atf_peer_request_params *param);
1748 
1749 QDF_STATUS
1750 (*send_set_atf_grouping_cmd)(wmi_unified_t wmi_handle,
1751 			     struct atf_grouping_params *param);
1752 
1753 QDF_STATUS
1754 (*send_set_atf_group_ac_cmd)(wmi_unified_t wmi_handle,
1755 			     struct atf_group_ac_params *param);
1756 
1757 QDF_STATUS (*extract_atf_peer_stats_ev)(wmi_unified_t wmi_handle,
1758 					void *evt_buf,
1759 					wmi_host_atf_peer_stats_event *ev);
1760 
1761 QDF_STATUS (*extract_atf_token_info_ev)(wmi_unified_t wmi_handle,
1762 					void *evt_buf, uint8_t idx,
1763 					wmi_host_atf_peer_stats_info *atf_info);
1764 #endif
1765 
1766 QDF_STATUS (*send_get_user_position_cmd)(wmi_unified_t wmi_handle,
1767 			uint32_t value);
1768 
1769 QDF_STATUS
1770 (*send_reset_peer_mumimo_tx_count_cmd)(wmi_unified_t wmi_handle,
1771 			uint32_t value);
1772 
1773 QDF_STATUS (*send_get_peer_mumimo_tx_count_cmd)(wmi_unified_t wmi_handle,
1774 			uint32_t value);
1775 
1776 QDF_STATUS
1777 (*send_pdev_caldata_version_check_cmd)(wmi_unified_t wmi_handle,
1778 			uint32_t value);
1779 
1780 QDF_STATUS
1781 (*send_btcoex_wlan_priority_cmd)(wmi_unified_t wmi_handle,
1782 			struct btcoex_cfg_params *param);
1783 
1784 QDF_STATUS
1785 (*send_start_11d_scan_cmd)(wmi_unified_t wmi_handle,
1786 			struct reg_start_11d_scan_req *param);
1787 
1788 QDF_STATUS
1789 (*send_stop_11d_scan_cmd)(wmi_unified_t wmi_handle,
1790 			struct reg_stop_11d_scan_req *param);
1791 
1792 QDF_STATUS
1793 (*send_btcoex_duty_cycle_cmd)(wmi_unified_t wmi_handle,
1794 			struct btcoex_cfg_params *param);
1795 
1796 QDF_STATUS
1797 (*send_coex_ver_cfg_cmd)(wmi_unified_t wmi_handle, coex_ver_cfg_t *param);
1798 
1799 QDF_STATUS
1800 (*send_coex_config_cmd)(wmi_unified_t wmi_handle,
1801 			struct coex_config_params *param);
1802 
1803 #ifdef WLAN_FEATURE_DBAM_CONFIG
1804 QDF_STATUS
1805 (*send_dbam_config_cmd)(wmi_unified_t wmi_handle,
1806 			struct coex_dbam_config_params *param);
1807 QDF_STATUS
1808 (*extract_dbam_config_resp_event)(wmi_unified_t wmi_handle, void *evt_buf,
1809 				  struct coex_dbam_config_resp *resp);
1810 #endif
1811 
1812 #ifdef OL_ATH_SMART_LOGGING
1813 QDF_STATUS
1814 (*send_smart_logging_enable_cmd)(wmi_unified_t wmi_handle, uint32_t param);
1815 
1816 QDF_STATUS
1817 (*send_smart_logging_fatal_cmd)(wmi_unified_t wmi_handle,
1818 				struct wmi_debug_fatal_events *param);
1819 #endif /* OL_ATH_SMART_LOGGING */
1820 
1821 #ifdef DCS_INTERFERENCE_DETECTION
1822 QDF_STATUS (*extract_dcs_interference_type)(
1823 		wmi_unified_t wmi_handle,
1824 		void *evt_buf,
1825 		struct wlan_host_dcs_interference_param *param);
1826 
1827 QDF_STATUS (*extract_dcs_im_tgt_stats)(
1828 		wmi_unified_t wmi_handle,
1829 		void *evt_buf,
1830 		struct wlan_host_dcs_im_tgt_stats *wlan_stat);
1831 
1832 QDF_STATUS (*extract_dcs_awgn_info)(wmi_unified_t wmi_handle, void *evt_buf,
1833 				    struct wlan_host_dcs_awgn_info *awgn_info);
1834 #else
1835 QDF_STATUS (*extract_dcs_interference_type)(wmi_unified_t wmi_handle,
1836 	void *evt_buf, struct wmi_host_dcs_interference_param *param);
1837 
1838 QDF_STATUS (*extract_dcs_cw_int)(wmi_unified_t wmi_handle, void *evt_buf,
1839 	wmi_host_ath_dcs_cw_int *cw_int);
1840 
1841 QDF_STATUS (*extract_dcs_im_tgt_stats)(wmi_unified_t wmi_handle, void *evt_buf,
1842 	wmi_host_dcs_im_tgt_stats_t *wlan_stat);
1843 
1844 QDF_STATUS (*extract_dcs_awgn_info)(
1845 		wmi_unified_t wmi_handle,
1846 		void *evt_buf,
1847 		struct wmi_host_dcs_awgn_info *awgn_info);
1848 #endif
1849 
1850 QDF_STATUS (*extract_fips_event_data)(wmi_unified_t wmi_handle,
1851 	void *evt_buf, struct wmi_host_fips_event_param *param);
1852 
1853 #ifdef WLAN_FEATURE_FIPS_BER_CCMGCM
1854 QDF_STATUS
1855 (*extract_fips_extend_ev_data)(wmi_unified_t wmi_handle,
1856 			       void *evt_buf,
1857 			       struct wmi_host_fips_extend_event_param
1858 			       *param);
1859 #endif
1860 
1861 #ifdef WLAN_FEATURE_DISA
1862 QDF_STATUS
1863 (*extract_encrypt_decrypt_resp_event)(wmi_unified_t wmi_handle,
1864 				      void *evt_buf,
1865 				      struct disa_encrypt_decrypt_resp_params
1866 				      *resp);
1867 #endif
1868 
1869 QDF_STATUS (*extract_vdev_start_resp)(wmi_unified_t wmi_handle, void *evt_buf,
1870 				      struct vdev_start_response *vdev_rsp);
1871 
1872 QDF_STATUS (*extract_vdev_delete_resp)(
1873 				wmi_unified_t wmi_handle, void *evt_buf,
1874 				struct vdev_delete_response *delete_rsp);
1875 
1876 QDF_STATUS (*extract_tbttoffset_update_params)(wmi_unified_t wmi_hdl,
1877 					void *evt_buf, uint8_t idx,
1878 					struct tbttoffset_params *tbtt_param);
1879 
1880 QDF_STATUS (*extract_ext_tbttoffset_update_params)(wmi_unified_t wmi_hdl,
1881 					void *evt_buf, uint8_t idx,
1882 					struct tbttoffset_params *tbtt_param);
1883 
1884 QDF_STATUS (*extract_tbttoffset_num_vdevs)(wmi_unified_t wmi_hdl, void *evt_buf,
1885 					   uint32_t *num_vdevs);
1886 
1887 QDF_STATUS (*extract_ext_tbttoffset_num_vdevs)(wmi_unified_t wmi_hdl,
1888 					       void *evt_buf,
1889 					       uint32_t *num_vdevs);
1890 
1891 QDF_STATUS (*extract_muedca_params_handler)(wmi_unified_t wmi_hdl,
1892 					    void *evt_buf,
1893 					    struct muedca_params *muedca_param_list);
1894 
1895 QDF_STATUS (*extract_mgmt_rx_params)(wmi_unified_t wmi_handle, void *evt_buf,
1896 	struct mgmt_rx_event_params *hdr, uint8_t **bufp);
1897 
1898 QDF_STATUS (*extract_frame_pn_params)(wmi_unified_t wmi_handle, void *evt_buf,
1899 				      struct frame_pn_params *pn_params);
1900 
1901 QDF_STATUS (*extract_is_conn_ap_frame)(wmi_unified_t wmi_handle,
1902 				       void *evt_buf,
1903 				       struct frm_conn_ap *is_conn_ap);
1904 
1905 QDF_STATUS (*extract_vdev_stopped_param)(wmi_unified_t wmi_handle,
1906 		void *evt_buf, uint32_t *vdev_id);
1907 
1908 QDF_STATUS (*extract_vdev_roam_param)(wmi_unified_t wmi_handle, void *evt_buf,
1909 	wmi_host_roam_event *param);
1910 
1911 QDF_STATUS (*extract_vdev_scan_ev_param)(wmi_unified_t wmi_handle,
1912 		void *evt_buf, struct scan_event *param);
1913 
1914 #ifdef FEATURE_WLAN_SCAN_PNO
1915 QDF_STATUS (*extract_nlo_match_ev_param)(wmi_unified_t wmi_handle,
1916 					 void *evt_buf,
1917 					 struct scan_event *param);
1918 
1919 QDF_STATUS (*extract_nlo_complete_ev_param)(wmi_unified_t wmi_handle,
1920 					    void *evt_buf,
1921 					    struct scan_event *param);
1922 #endif
1923 
1924 QDF_STATUS (*extract_mu_ev_param)(wmi_unified_t wmi_handle, void *evt_buf,
1925 	wmi_host_mu_report_event *param);
1926 
1927 QDF_STATUS (*extract_mu_db_entry)(wmi_unified_t wmi_hdl, void *evt_buf,
1928 	uint8_t idx, wmi_host_mu_db_entry *param);
1929 
1930 QDF_STATUS (*extract_mumimo_tx_count_ev_param)(wmi_unified_t wmi_handle,
1931 	void *evt_buf, wmi_host_peer_txmu_cnt_event *param);
1932 
1933 QDF_STATUS (*extract_peer_gid_userpos_list_ev_param)(wmi_unified_t wmi_handle,
1934 	void *evt_buf, wmi_host_peer_gid_userpos_list_event *param);
1935 
1936 QDF_STATUS
1937 (*extract_esp_estimation_ev_param)(wmi_unified_t wmi_handle, void *evt_buf,
1938 				   struct esp_estimation_event *param);
1939 
1940 QDF_STATUS (*extract_gpio_input_ev_param)(wmi_unified_t wmi_handle,
1941 	void *evt_buf, uint32_t *gpio_num);
1942 
1943 QDF_STATUS (*extract_pdev_reserve_ast_ev_param)(wmi_unified_t wmi_handle,
1944 		void *evt_buf, struct wmi_host_proxy_ast_reserve_param *param);
1945 
1946 QDF_STATUS (*extract_pdev_generic_buffer_ev_param)(wmi_unified_t wmi_handle,
1947 		void *evt_buf, wmi_host_pdev_generic_buffer_event *param);
1948 
1949 QDF_STATUS (*extract_pdev_csa_switch_count_status)(wmi_unified_t wmi_handle,
1950 		void *evt_buf, struct pdev_csa_switch_count_status *param);
1951 
1952 QDF_STATUS (*extract_swba_num_vdevs)(wmi_unified_t wmi_handle, void *evt_buf,
1953 	uint32_t *num_vdevs, uint32_t *num_quiet_triggered_vdevs);
1954 
1955 #ifdef CONVERGED_P2P_ENABLE
1956 #ifdef FEATURE_P2P_LISTEN_OFFLOAD
1957 QDF_STATUS (*extract_p2p_lo_stop_ev_param)(wmi_unified_t wmi_handle,
1958 	void *evt_buf, struct p2p_lo_event *param);
1959 #endif
1960 
1961 QDF_STATUS (*extract_p2p_noa_ev_param)(wmi_unified_t wmi_handle,
1962 	void *evt_buf, struct p2p_noa_info *param);
1963 
1964 QDF_STATUS (*set_mac_addr_rx_filter)(wmi_unified_t wmi_handle,
1965 				     struct p2p_set_mac_filter *param);
1966 QDF_STATUS
1967 (*extract_mac_addr_rx_filter_evt_param)(wmi_unified_t wmi_handle,
1968 					void *evt_buf,
1969 					struct p2p_set_mac_filter_evt *param);
1970 #endif
1971 
1972 #ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
1973 QDF_STATUS
1974 (*extract_interop_issues_ap_ev_param)(wmi_unified_t wmi_handle, void *evt_buf,
1975 				  struct wlan_interop_issues_ap_event *param);
1976 QDF_STATUS
1977 (*send_set_rap_ps_cmd)(wmi_unified_t wmi_handle,
1978 		       struct wlan_interop_issues_ap_info *interop_issues_ap);
1979 #endif
1980 
1981 QDF_STATUS (*extract_peer_ratecode_list_ev)(wmi_unified_t wmi_handle,
1982 					    void *evt_buf, uint8_t *peer_mac,
1983 					    uint32_t *pdev_id,
1984 					    wmi_sa_rate_cap *rate_cap);
1985 
1986 QDF_STATUS (*extract_comb_phyerr)(wmi_unified_t wmi_handle, void *evt_buf,
1987 	uint16_t datalen, uint16_t *buf_offset, wmi_host_phyerr_t *phyerr);
1988 
1989 QDF_STATUS (*extract_single_phyerr)(wmi_unified_t wmi_handle, void *evt_buf,
1990 	uint16_t datalen, uint16_t *buf_offset, wmi_host_phyerr_t *phyerr);
1991 
1992 QDF_STATUS (*extract_composite_phyerr)(wmi_unified_t wmi_handle, void *evt_buf,
1993 	uint16_t datalen, wmi_host_phyerr_t *phyerr);
1994 
1995 QDF_STATUS (*extract_rtt_hdr)(wmi_unified_t wmi_handle, void *evt_buf,
1996 	wmi_host_rtt_event_hdr *ev);
1997 
1998 QDF_STATUS (*extract_rtt_ev)(wmi_unified_t wmi_handle, void *evt_buf,
1999 	wmi_host_rtt_meas_event *ev, uint8_t *hdump, uint16_t hdump_len);
2000 
2001 QDF_STATUS (*extract_rtt_error_report_ev)(wmi_unified_t wmi_handle,
2002 		void *evt_buf, wmi_host_rtt_error_report_event *ev);
2003 
2004 QDF_STATUS (*extract_all_stats_count)(wmi_unified_t wmi_handle, void *evt_buf,
2005 			   wmi_host_stats_event *stats_param);
2006 #ifdef WLAN_FEATURE_BIG_DATA_STATS
2007 QDF_STATUS (*extract_big_data_stats)(
2008 			   wmi_unified_t wmi_handle, void *evt_buf,
2009 			   struct big_data_stats_event *stats_param);
2010 #endif
2011 QDF_STATUS (*extract_pdev_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2012 			 uint32_t index, wmi_host_pdev_stats *pdev_stats);
2013 
2014 QDF_STATUS (*extract_pmf_bcn_protect_stats)(wmi_unified_t wmi_handle,
2015 		void *evt_buf, wmi_host_pmf_bcn_protect_stats *pmf_bcn_stats);
2016 
2017 QDF_STATUS (*extract_unit_test)(wmi_unified_t wmi_handle, void *evt_buf,
2018 		wmi_unit_test_event *unit_test, uint32_t maxspace);
2019 
2020 QDF_STATUS (*extract_pdev_ext_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2021 		 uint32_t index, wmi_host_pdev_ext_stats *pdev_ext_stats);
2022 
2023 QDF_STATUS (*extract_vdev_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2024 			 uint32_t index, wmi_host_vdev_stats *vdev_stats);
2025 
2026 QDF_STATUS (*extract_per_chain_rssi_stats)(wmi_unified_t wmi_handle,
2027 			void *evt_buf, uint32_t index,
2028 			struct wmi_host_per_chain_rssi_stats *rssi_stats);
2029 
2030 QDF_STATUS (*extract_peer_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2031 			 uint32_t index, wmi_host_peer_stats *peer_stats);
2032 
2033 QDF_STATUS (*extract_bcnflt_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2034 			 uint32_t index, wmi_host_bcnflt_stats *bcnflt_stats);
2035 
2036 QDF_STATUS (*extract_peer_extd_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2037 		 uint32_t index, wmi_host_peer_extd_stats *peer_extd_stats);
2038 
2039 QDF_STATUS (*extract_peer_retry_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2040 	    uint32_t index,
2041 	    struct wmi_host_peer_retry_stats *peer_retry_stats);
2042 
2043 QDF_STATUS (*extract_peer_adv_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2044 				     struct wmi_host_peer_adv_stats
2045 				     *peer_adv_stats);
2046 
2047 QDF_STATUS (*extract_chan_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2048 			 uint32_t index, wmi_host_chan_stats *chan_stats);
2049 
2050 #ifdef WLAN_FEATURE_MIB_STATS
2051 QDF_STATUS (*extract_mib_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2052 				struct mib_stats_metrics *mib_stats);
2053 #endif
2054 
2055 QDF_STATUS (*extract_thermal_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2056 	    uint32_t *temp, enum thermal_throttle_level *level,
2057 	    uint32_t *therm_throt_levels,
2058 	    struct thermal_throt_level_stats *tt_temp_range_stats_event,
2059 	    uint32_t *pdev_id);
2060 
2061 QDF_STATUS (*extract_thermal_level_stats)(wmi_unified_t wmi_handle,
2062 		void *evt_buf, uint8_t idx, uint32_t *levelcount,
2063 		uint32_t *dccount);
2064 
2065 QDF_STATUS (*extract_profile_ctx)(wmi_unified_t wmi_handle, void *evt_buf,
2066 				   wmi_host_wlan_profile_ctx_t *profile_ctx);
2067 
2068 QDF_STATUS (*extract_profile_data)(wmi_unified_t wmi_handle, void *evt_buf,
2069 				uint8_t idx,
2070 				wmi_host_wlan_profile_t *profile_data);
2071 
2072 QDF_STATUS (*extract_bss_chan_info_event)(wmi_unified_t wmi_handle,
2073 		void *evt_buf,
2074 		wmi_host_pdev_bss_chan_info_event *bss_chan_info);
2075 
2076 QDF_STATUS (*extract_tx_data_traffic_ctrl_ev)(wmi_unified_t wmi_handle,
2077 		void *evt_buf, wmi_host_tx_data_traffic_ctrl_event *ev);
2078 
2079 QDF_STATUS (*extract_vdev_extd_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2080 		uint32_t index, wmi_host_vdev_extd_stats *vdev_extd_stats);
2081 
2082 QDF_STATUS (*extract_vdev_nac_rssi_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2083 		struct wmi_host_vdev_nac_rssi_event *vdev_nac_rssi_stats);
2084 
2085 QDF_STATUS (*extract_bcn_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2086 		uint32_t index, wmi_host_bcn_stats *bcn_stats);
2087 
2088 #ifdef QCA_SUPPORT_MC_CP_STATS
2089 QDF_STATUS (*extract_peer_stats_count)(wmi_unified_t wmi_handle, void *evt_buf,
2090 				       wmi_host_stats_event *stats_param);
2091 
2092 QDF_STATUS (*extract_peer_stats_info)(wmi_unified_t wmi_handle, void *evt_buf,
2093 		uint32_t index, wmi_host_peer_stats_info *peer_stats_info);
2094 #endif /* QCA_SUPPORT_MC_CP_STATS */
2095 
2096 QDF_STATUS
2097 (*extract_vdev_prb_fils_stats)(wmi_unified_t wmi_handle,
2098 			       void *evt_buf, uint32_t index,
2099 			       struct wmi_host_vdev_prb_fils_stats *vdev_stats);
2100 
2101 #ifdef OL_ATH_SMART_LOGGING
2102 QDF_STATUS (*extract_smartlog_event)(wmi_unified_t wmi_handle, void *evt_buf,
2103 				     struct wmi_debug_fatal_events *event);
2104 #endif /* OL_ATH_SMART_LOGGING */
2105 QDF_STATUS (*send_power_dbg_cmd)(wmi_unified_t wmi_handle,
2106 				struct wmi_power_dbg_params *param);
2107 
2108 QDF_STATUS (*send_multiple_vdev_restart_req_cmd)(wmi_unified_t wmi_handle,
2109 				struct multiple_vdev_restart_params *param);
2110 QDF_STATUS (*send_multiple_vdev_set_param_cmd)(
2111 		wmi_unified_t wmi_handle,
2112 		struct multiple_vdev_set_param *param);
2113 #ifdef QCA_SUPPORT_AGILE_DFS
2114 QDF_STATUS
2115 (*send_adfs_ocac_abort_cmd)(wmi_unified_t wmi_handle,
2116 			    struct vdev_adfs_abort_params *param);
2117 
2118 QDF_STATUS (*send_adfs_ch_cfg_cmd)(wmi_unified_t wmi_handle,
2119 				   struct vdev_adfs_ch_cfg_params *param);
2120 #endif
2121 QDF_STATUS (*send_fw_test_cmd)(wmi_unified_t wmi_handle,
2122 			       struct set_fwtest_params *wmi_fwtest);
2123 
2124 QDF_STATUS (*send_wfa_test_cmd)(wmi_unified_t wmi_handle,
2125 				struct set_wfatest_params *wmi_wfatest);
2126 #ifdef WLAN_FEATURE_ACTION_OUI
2127 QDF_STATUS (*send_action_oui_cmd)(wmi_unified_t wmi_handle,
2128 				  struct action_oui_request *req);
2129 #endif /* WLAN_FEATURE_ACTION_OUI */
2130 
2131 QDF_STATUS (*send_peer_rx_reorder_queue_setup_cmd)(wmi_unified_t wmi_handle,
2132 		struct rx_reorder_queue_setup_params *param);
2133 
2134 QDF_STATUS (*send_peer_rx_reorder_queue_remove_cmd)(wmi_unified_t wmi_handle,
2135 		struct rx_reorder_queue_remove_params *param);
2136 
2137 QDF_STATUS (*extract_service_ready_ext)(
2138 			wmi_unified_t wmi_handle,
2139 			uint8_t *evt_buf,
2140 			struct wlan_psoc_host_service_ext_param *param);
2141 
2142 QDF_STATUS (*extract_service_ready_ext2)(
2143 			wmi_unified_t wmi_handle,
2144 			uint8_t *evt_buf,
2145 			struct wlan_psoc_host_service_ext2_param *param);
2146 
2147 QDF_STATUS (*extract_dbs_or_sbs_service_ready_ext2)(
2148 			wmi_unified_t wmi_handle, uint8_t *event,
2149 			uint32_t *sbs_lower_band_end_freq);
2150 
2151 QDF_STATUS (*extract_hw_mode_cap_service_ready_ext)(
2152 			wmi_unified_t wmi_handle,
2153 			uint8_t *evt_buf, uint8_t hw_mode_idx,
2154 			struct wlan_psoc_host_hw_mode_caps *param);
2155 
2156 QDF_STATUS (*extract_mac_phy_cap_service_ready_ext)(
2157 			wmi_unified_t wmi_handle,
2158 			uint8_t *evt_buf,
2159 			uint8_t hw_mode_id,
2160 			uint8_t phy_id,
2161 			struct wlan_psoc_host_mac_phy_caps *param);
2162 
2163 QDF_STATUS (*extract_mac_phy_cap_service_ready_ext2)(
2164 			wmi_unified_t wmi_handle,
2165 			uint8_t *evt_buf,
2166 			uint8_t hw_mode_id,
2167 			uint8_t phy_id,
2168 			uint8_t phy_idx,
2169 			struct wlan_psoc_host_mac_phy_caps_ext2 *mac_phy_cap);
2170 
2171 QDF_STATUS (*extract_reg_cap_service_ready_ext)(
2172 			wmi_unified_t wmi_handle,
2173 			uint8_t *evt_buf, uint8_t phy_idx,
2174 			struct wlan_psoc_host_hal_reg_capabilities_ext *param);
2175 
2176 QDF_STATUS (*extract_dbr_ring_cap_service_ready_ext)(
2177 			wmi_unified_t wmi_handle,
2178 			uint8_t *evt_buf, uint8_t idx,
2179 			struct wlan_psoc_host_dbr_ring_caps *param);
2180 
2181 QDF_STATUS (*extract_dbr_ring_cap_service_ready_ext2)(
2182 			wmi_unified_t wmi_handle,
2183 			uint8_t *evt_buf, uint8_t idx,
2184 			struct wlan_psoc_host_dbr_ring_caps *param);
2185 
2186 QDF_STATUS (*extract_scan_radio_cap_service_ready_ext2)(
2187 			wmi_unified_t wmi_handle,
2188 			uint8_t *evt_buf, uint8_t idx,
2189 			struct wlan_psoc_host_scan_radio_caps *param);
2190 
2191 QDF_STATUS (*extract_sw_cal_ver_ext2)(wmi_unified_t wmi_handle,
2192 				      uint8_t *event,
2193 				      struct wmi_host_sw_cal_ver *cal);
2194 
2195 QDF_STATUS (*extract_scaling_params_service_ready_ext)(
2196 			wmi_unified_t wmi_handle,
2197 			uint8_t *evt_buf, uint8_t idx,
2198 			struct wlan_psoc_host_spectral_scaling_params *param);
2199 
2200 QDF_STATUS (*extract_sar_cap_service_ready_ext)(
2201 		wmi_unified_t wmi_handle,
2202 		uint8_t *evt_buf,
2203 		struct wlan_psoc_host_service_ext_param *ext_param);
2204 
2205 #ifdef WLAN_SUPPORT_TWT
2206 QDF_STATUS (*extract_twt_cap_service_ready_ext2)(
2207 		wmi_unified_t wmi_handle,
2208 		uint8_t *evt_buf,
2209 		struct wmi_twt_cap_bitmap_params *var);
2210 #endif
2211 
2212 #ifdef WMI_DBR_SUPPORT
2213 QDF_STATUS (*send_dbr_cfg_cmd)(wmi_unified_t wmi_handle,
2214 				   struct direct_buf_rx_cfg_req *cfg);
2215 
2216 QDF_STATUS (*extract_dbr_buf_release_fixed)(
2217 			wmi_unified_t wmi_handle,
2218 			uint8_t *evt_buf,
2219 			struct direct_buf_rx_rsp *param);
2220 
2221 QDF_STATUS (*extract_dbr_buf_release_entry)(
2222 			wmi_unified_t wmi_handle,
2223 			uint8_t *evt_buf, uint8_t idx,
2224 			struct direct_buf_rx_entry *param);
2225 
2226 QDF_STATUS (*extract_dbr_buf_metadata)(
2227 			wmi_unified_t wmi_handle,
2228 			uint8_t *evt_buf, uint8_t idx,
2229 			struct direct_buf_rx_metadata *param);
2230 #endif
2231 
2232 QDF_STATUS (*extract_pdev_utf_event)(wmi_unified_t wmi_hdl,
2233 				     uint8_t *evt_buf,
2234 				     struct wmi_host_pdev_utf_event *param);
2235 
2236 QDF_STATUS (*extract_pdev_qvit_event)(wmi_unified_t wmi_hdl,
2237 				     uint8_t *evt_buf,
2238 				     struct wmi_host_pdev_qvit_event *param);
2239 
2240 uint16_t (*wmi_set_htc_tx_tag)(wmi_unified_t wmi_handle,
2241 				wmi_buf_t buf, uint32_t cmd_id);
2242 
2243 QDF_STATUS (*extract_vdev_peer_delete_all_resp)(
2244 		wmi_unified_t wmi_handle,
2245 		void *evt_buf,
2246 		struct peer_delete_all_response *peer_delete_all_rsp);
2247 
2248 QDF_STATUS (*extract_vdev_peer_delete_all_response_event)(
2249 		wmi_unified_t wmi_handle,
2250 		void *evt_buf,
2251 		struct peer_delete_all_response *param);
2252 
2253 bool (*is_management_record)(uint32_t cmd_id);
2254 bool (*is_diag_event)(uint32_t event_id);
2255 uint8_t *(*wmi_id_to_name)(uint32_t cmd_id);
2256 QDF_STATUS (*send_dfs_phyerr_offload_en_cmd)(wmi_unified_t wmi_handle,
2257 		uint32_t pdev_id);
2258 QDF_STATUS (*send_dfs_phyerr_offload_dis_cmd)(wmi_unified_t wmi_handle,
2259 		uint32_t pdev_id);
2260 QDF_STATUS (*extract_reg_chan_list_update_event)(wmi_unified_t wmi_handle,
2261 						 uint8_t *evt_buf,
2262 						 struct cur_regulatory_info
2263 						 *reg_info,
2264 						 uint32_t len);
2265 #ifdef CONFIG_BAND_6GHZ
2266 QDF_STATUS (*extract_reg_chan_list_ext_update_event)(wmi_unified_t wmi_handle,
2267 						     uint8_t *evt_buf,
2268 						     struct cur_regulatory_info
2269 						     *reg_info,
2270 						     uint32_t len);
2271 #ifdef CONFIG_AFC_SUPPORT
2272 QDF_STATUS
2273 (*extract_afc_event)(wmi_unified_t wmi_handle,
2274 		     uint8_t *evt_buf,
2275 		     struct afc_regulatory_info *reg_info,
2276 		     uint32_t len);
2277 #endif
2278 #endif
2279 
2280 QDF_STATUS (*extract_reg_11d_new_country_event)(wmi_unified_t wmi_handle,
2281 		uint8_t *evt_buf,
2282 		struct reg_11d_new_country *reg_11d_country,
2283 		uint32_t len);
2284 
2285 QDF_STATUS (*extract_reg_ch_avoid_event)(wmi_unified_t wmi_handle,
2286 		uint8_t *evt_buf,
2287 		struct ch_avoid_ind_type *ch_avoid_event,
2288 		uint32_t len);
2289 
2290 #ifdef WLAN_SUPPORT_RF_CHARACTERIZATION
2291 QDF_STATUS (*extract_num_rf_characterization_entries)(wmi_unified_t wmi_hdl,
2292 				uint8_t *evt_buf,
2293 				uint32_t *num_rf_characterization_entries);
2294 
2295 
2296 QDF_STATUS (*extract_rf_characterization_entries)(wmi_unified_t wmi_handle,
2297 	uint8_t *evt_buf,
2298 	uint32_t num_rf_characterization_entries,
2299 	struct wmi_host_rf_characterization_event_param *rf_characterization_entries);
2300 #endif
2301 
2302 QDF_STATUS (*extract_chainmask_tables)(wmi_unified_t wmi_handle,
2303 		uint8_t *evt_buf,
2304 		struct wlan_psoc_host_chainmask_table *chainmask_table);
2305 
2306 QDF_STATUS (*send_get_rcpi_cmd)(wmi_unified_t wmi_handle,
2307 				struct rcpi_req *get_rcpi_param);
2308 
2309 QDF_STATUS (*extract_rcpi_response_event)(wmi_unified_t wmi_handle,
2310 					  void *evt_buf,
2311 					  struct rcpi_res *res);
2312 
2313 QDF_STATUS (*extract_dfs_cac_complete_event)(wmi_unified_t wmi_handle,
2314 		uint8_t *evt_buf,
2315 		uint32_t *vdev_id,
2316 		uint32_t len);
2317 QDF_STATUS
2318 (*extract_dfs_ocac_complete_event)(wmi_unified_t wmi_handle,
2319 				   uint8_t *evt_buf,
2320 				   struct vdev_adfs_complete_status *oca_stats);
2321 
2322 QDF_STATUS (*extract_dfs_radar_detection_event)(wmi_unified_t wmi_handle,
2323 		uint8_t *evt_buf,
2324 		struct radar_found_info *radar_found,
2325 		uint32_t len);
2326 QDF_STATUS (*extract_wlan_radar_event_info)(wmi_unified_t wmi_handle,
2327 		uint8_t *evt_buf,
2328 		struct radar_event_info *wlan_radar_event,
2329 		uint32_t len);
2330 
2331 QDF_STATUS (*send_set_country_cmd)(wmi_unified_t wmi_handle,
2332 				struct set_country *param);
2333 
2334 uint32_t (*convert_pdev_id_host_to_target)(wmi_unified_t wmi_handle,
2335 					   uint32_t pdev_id);
2336 uint32_t (*convert_pdev_id_target_to_host)(wmi_unified_t wmi_handle,
2337 					   uint32_t pdev_id);
2338 uint32_t (*convert_phy_id_host_to_target)(wmi_unified_t wmi_handle,
2339 					  uint32_t phy_id);
2340 uint32_t (*convert_phy_id_target_to_host)(wmi_unified_t wmi_handle,
2341 					  uint32_t phy_id);
2342 uint32_t (*convert_host_vdev_param_tlv)(uint32_t param_id);
2343 
2344 /*
2345  * For MCL, convert_pdev_id_host_to_target returns legacy pdev id value.
2346  * But in converged firmware, WMI_SET_CURRENT_COUNTRY_CMDID expects target
2347  * mapping of pdev_id to give only one WMI_REG_CHAN_LIST_CC_EVENTID.
2348  * wmi_pdev_id_conversion_enable cannot be used since it overwrites
2349  * convert_pdev_id_host_to_target which effects legacy cases.
2350  * Below two commands: convert_host_pdev_id_to_target and
2351  * convert_target_pdev_id_to_host should be used for any WMI
2352  * command/event where FW expects target/host mapping of pdev_id respectively.
2353  */
2354 uint32_t (*convert_host_pdev_id_to_target)(wmi_unified_t wmi_handle,
2355 					   uint32_t pdev_id);
2356 uint32_t (*convert_target_pdev_id_to_host)(wmi_unified_t wmi_handle,
2357 					   uint32_t pdev_id);
2358 
2359 uint32_t (*convert_host_phy_id_to_target)(wmi_unified_t wmi_handle,
2360 					  uint32_t phy_id);
2361 uint32_t (*convert_target_phy_id_to_host)(wmi_unified_t wmi_handle,
2362 					  uint32_t phy_id);
2363 
2364 QDF_STATUS (*send_user_country_code_cmd)(wmi_unified_t wmi_handle,
2365 		uint8_t pdev_id, struct cc_regdmn_s *rd);
2366 
2367 QDF_STATUS (*send_wds_entry_list_cmd)(wmi_unified_t wmi_handle);
2368 QDF_STATUS (*extract_wds_entry)(wmi_unified_t wmi_handle,
2369 		uint8_t *evt_buf,
2370 		struct wdsentry *wds_entry,
2371 		u_int32_t idx);
2372 
2373 #ifdef WLAN_FEATURE_NAN
2374 QDF_STATUS (*send_ndp_initiator_req_cmd)(wmi_unified_t wmi_handle,
2375 				struct nan_datapath_initiator_req *req);
2376 QDF_STATUS (*send_ndp_responder_req_cmd)(wmi_unified_t wmi_handle,
2377 				struct nan_datapath_responder_req *req);
2378 QDF_STATUS (*send_ndp_end_req_cmd)(wmi_unified_t wmi_handle,
2379 				struct nan_datapath_end_req *req);
2380 QDF_STATUS (*send_terminate_all_ndps_req_cmd)(wmi_unified_t wmi_handle,
2381 					      uint32_t vdev_id);
2382 
2383 QDF_STATUS (*extract_ndp_initiator_rsp)(wmi_unified_t wmi_handle,
2384 		uint8_t *data, struct nan_datapath_initiator_rsp *rsp);
2385 QDF_STATUS (*extract_ndp_ind)(wmi_unified_t wmi_handle,
2386 		uint8_t *data, struct nan_datapath_indication_event *ind);
2387 QDF_STATUS (*extract_nan_msg)(uint8_t *data,
2388 			      struct nan_dump_msg *msg);
2389 QDF_STATUS (*extract_ndp_confirm)(wmi_unified_t wmi_handle,
2390 		uint8_t *data, struct nan_datapath_confirm_event *ev);
2391 QDF_STATUS (*extract_ndp_responder_rsp)(wmi_unified_t wmi_handle,
2392 		uint8_t *data, struct nan_datapath_responder_rsp *rsp);
2393 QDF_STATUS (*extract_ndp_end_rsp)(wmi_unified_t wmi_handle,
2394 		uint8_t *data, struct nan_datapath_end_rsp_event *rsp);
2395 QDF_STATUS (*extract_ndp_end_ind)(wmi_unified_t wmi_handle,
2396 		uint8_t *data, struct nan_datapath_end_indication_event **ind);
2397 QDF_STATUS (*extract_ndp_sch_update)(wmi_unified_t wmi_handle,
2398 		uint8_t *data, struct nan_datapath_sch_update_event *ind);
2399 QDF_STATUS (*extract_ndp_host_event)(wmi_unified_t wmi_handle, uint8_t *data,
2400 		struct nan_datapath_host_event *evt);
2401 #endif /* WLAN_FEATURE_NAN */
2402 
2403 QDF_STATUS (*send_obss_detection_cfg_cmd)(wmi_unified_t wmi_handle,
2404 		struct wmi_obss_detection_cfg_param *obss_cfg_param);
2405 QDF_STATUS (*extract_obss_detection_info)(uint8_t *evt_buf,
2406 					  struct wmi_obss_detect_info *info);
2407 #if defined(WLAN_SUPPORT_FILS) || defined(CONFIG_BAND_6GHZ)
2408 QDF_STATUS (*send_vdev_fils_enable_cmd)(wmi_unified_t wmi_handle,
2409 					struct config_fils_params *param);
2410 #endif
2411 
2412 QDF_STATUS
2413 (*send_roam_scan_stats_cmd)(wmi_unified_t wmi_handle,
2414 			    struct wmi_roam_scan_stats_req *params);
2415 
2416 QDF_STATUS
2417 (*extract_roam_scan_stats_res_evt)(wmi_unified_t wmi_handle,
2418 				   void *evt_buf,
2419 				   uint32_t *vdev_id,
2420 				   struct wmi_roam_scan_stats_res **res_param);
2421 QDF_STATUS
2422 (*extract_offload_bcn_tx_status_evt)(wmi_unified_t wmi_handle,
2423 				     void *evt_buf, uint32_t *vdev_id,
2424 				     uint32_t *tx_status);
2425 
2426 QDF_STATUS
2427 (*extract_roam_trigger_stats)(wmi_unified_t wmi_handle,
2428 			      void *evt_buf,
2429 			      struct wmi_roam_trigger_info *trig,
2430 			      uint8_t idx, uint8_t btm_idx);
2431 
2432 QDF_STATUS
2433 (*extract_roam_scan_stats)(wmi_unified_t wmi_handle,
2434 			   void *evt_buf,
2435 			   struct wmi_roam_scan_data *dst, uint8_t idx,
2436 			   uint8_t chan_idx, uint8_t ap_idx);
2437 
2438 QDF_STATUS
2439 (*extract_roam_result_stats)(wmi_unified_t wmi_handle,
2440 			     void *evt_buf,
2441 			     struct wmi_roam_result *dst,
2442 			     uint8_t idx);
2443 
2444 QDF_STATUS
2445 (*extract_roam_11kv_stats)(wmi_unified_t wmi_handle,
2446 			   void *evt_buf,
2447 			   struct wmi_neighbor_report_data *dst,
2448 			   uint8_t idx, uint8_t rpt_idx);
2449 
2450 void (*wmi_pdev_id_conversion_enable)(wmi_unified_t wmi_handle,
2451 				      uint32_t *pdev_map,
2452 				      uint8_t size);
2453 void (*send_time_stamp_sync_cmd)(wmi_unified_t wmi_handle);
2454 void (*wmi_free_allocated_event)(uint32_t cmd_event_id,
2455 				void **wmi_cmd_struct_ptr);
2456 int (*wmi_check_and_pad_event)(void *os_handle, void *param_struc_ptr,
2457 				uint32_t param_buf_len,
2458 				uint32_t wmi_cmd_event_id,
2459 				void **wmi_cmd_struct_ptr);
2460 int (*wmi_check_command_params)(void *os_handle, void *param_struc_ptr,
2461 				uint32_t param_buf_len,
2462 				uint32_t wmi_cmd_event_id);
2463 #if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
2464 QDF_STATUS (*send_twt_enable_cmd)(wmi_unified_t wmi_handle,
2465 			struct twt_enable_param *params);
2466 
2467 QDF_STATUS (*send_twt_disable_cmd)(wmi_unified_t wmi_handle,
2468 			struct twt_disable_param *params);
2469 
2470 QDF_STATUS (*send_twt_add_dialog_cmd)(wmi_unified_t wmi_handle,
2471 			struct twt_add_dialog_param *params);
2472 
2473 QDF_STATUS (*send_twt_del_dialog_cmd)(wmi_unified_t wmi_handle,
2474 			struct twt_del_dialog_param *params);
2475 
2476 QDF_STATUS (*send_twt_pause_dialog_cmd)(wmi_unified_t wmi_handle,
2477 			struct twt_pause_dialog_cmd_param *params);
2478 
2479 QDF_STATUS (*send_twt_nudge_dialog_cmd)(wmi_unified_t wmi_handle,
2480 			struct twt_nudge_dialog_cmd_param *params);
2481 
2482 QDF_STATUS (*send_twt_resume_dialog_cmd)(wmi_unified_t wmi_handle,
2483 			struct twt_resume_dialog_cmd_param *params);
2484 #ifdef WLAN_SUPPORT_BCAST_TWT
2485 QDF_STATUS (*send_twt_btwt_invite_sta_cmd)(wmi_unified_t wmi_handle,
2486 			struct twt_btwt_invite_sta_cmd_param *params);
2487 
2488 QDF_STATUS (*send_twt_btwt_remove_sta_cmd)(wmi_unified_t wmi_handle,
2489 			struct twt_btwt_remove_sta_cmd_param *params);
2490 #endif
2491 
2492 QDF_STATUS (*extract_twt_enable_comp_event)(wmi_unified_t wmi_handle,
2493 		uint8_t *evt_buf,
2494 		struct twt_enable_complete_event_param *params);
2495 
2496 QDF_STATUS (*extract_twt_disable_comp_event)(wmi_unified_t wmi_handle,
2497 		uint8_t *evt_buf,
2498 		struct twt_disable_complete_event_param *params);
2499 
2500 QDF_STATUS (*extract_twt_add_dialog_comp_event)(wmi_unified_t wmi_handle,
2501 		uint8_t *evt_buf,
2502 		struct twt_add_dialog_complete_event_param *params);
2503 
2504 QDF_STATUS (*extract_twt_add_dialog_comp_additional_params)
2505 		(
2506 		 wmi_unified_t wmi_handle, uint8_t *evt_buf,
2507 		 uint32_t evt_buf_len, uint32_t idx,
2508 		 struct twt_add_dialog_additional_params *additional_params
2509 		);
2510 
2511 QDF_STATUS (*extract_twt_del_dialog_comp_event)(wmi_unified_t wmi_handle,
2512 		uint8_t *evt_buf,
2513 		struct twt_del_dialog_complete_event_param *params);
2514 
2515 QDF_STATUS (*extract_twt_pause_dialog_comp_event)(wmi_unified_t wmi_handle,
2516 		uint8_t *evt_buf,
2517 		struct twt_pause_dialog_complete_event_param *params);
2518 
2519 QDF_STATUS (*extract_twt_nudge_dialog_comp_event)(wmi_unified_t wmi_handle,
2520 		uint8_t *evt_buf,
2521 		struct twt_nudge_dialog_complete_event_param *params);
2522 
2523 QDF_STATUS (*extract_twt_resume_dialog_comp_event)(wmi_unified_t wmi_handle,
2524 		uint8_t *evt_buf,
2525 		struct twt_resume_dialog_complete_event_param *params);
2526 
2527 QDF_STATUS (*extract_twt_notify_event)(wmi_unified_t wmi_handle,
2528 		uint8_t *evt_buf,
2529 		struct twt_notify_event_param *params);
2530 QDF_STATUS (*extract_twt_ack_comp_event)(wmi_unified_t wmi_handle,
2531 		uint8_t *evt_buf,
2532 		struct twt_ack_complete_event_param *params);
2533 #ifdef WLAN_SUPPORT_BCAST_TWT
2534 QDF_STATUS (*extract_twt_btwt_invite_sta_comp_event)(wmi_unified_t wmi_handle,
2535 		uint8_t *evt_buf,
2536 		struct twt_btwt_invite_sta_complete_event_param *params);
2537 
2538 QDF_STATUS (*extract_twt_btwt_remove_sta_comp_event)(wmi_unified_t wmi_handle,
2539 		uint8_t *evt_buf,
2540 		struct twt_btwt_remove_sta_complete_event_param *params);
2541 #endif
2542 
2543 QDF_STATUS(*extract_twt_session_stats_event)
2544 		(
2545 		 wmi_unified_t wmi_handle,
2546 		 uint8_t *evt_buf,
2547 		 struct twt_session_stats_event_param *params
2548 		);
2549 QDF_STATUS(*extract_twt_session_stats_data)
2550 		(
2551 		 wmi_unified_t wmi_handle,
2552 		 uint8_t *evt_buf,
2553 		 struct twt_session_stats_event_param *params,
2554 		 struct twt_session_stats_info *session,
2555 		 uint32_t idx
2556 		);
2557 
2558 #elif defined(WLAN_SUPPORT_TWT)
2559 QDF_STATUS (*send_twt_enable_cmd)(wmi_unified_t wmi_handle,
2560 			struct wmi_twt_enable_param *params);
2561 
2562 QDF_STATUS (*send_twt_disable_cmd)(wmi_unified_t wmi_handle,
2563 			struct wmi_twt_disable_param *params);
2564 
2565 QDF_STATUS (*send_twt_add_dialog_cmd)(wmi_unified_t wmi_handle,
2566 			struct wmi_twt_add_dialog_param *params);
2567 
2568 QDF_STATUS (*send_twt_del_dialog_cmd)(wmi_unified_t wmi_handle,
2569 			struct wmi_twt_del_dialog_param *params);
2570 
2571 QDF_STATUS (*send_twt_pause_dialog_cmd)(wmi_unified_t wmi_handle,
2572 			struct wmi_twt_pause_dialog_cmd_param *params);
2573 
2574 QDF_STATUS (*send_twt_nudge_dialog_cmd)(wmi_unified_t wmi_handle,
2575 			struct wmi_twt_nudge_dialog_cmd_param *params);
2576 
2577 QDF_STATUS (*send_twt_resume_dialog_cmd)(wmi_unified_t wmi_handle,
2578 			struct wmi_twt_resume_dialog_cmd_param *params);
2579 
2580 #ifdef WLAN_SUPPORT_BCAST_TWT
2581 QDF_STATUS (*send_twt_btwt_invite_sta_cmd)(wmi_unified_t wmi_handle,
2582 			struct wmi_twt_btwt_invite_sta_cmd_param *params);
2583 
2584 QDF_STATUS (*send_twt_btwt_remove_sta_cmd)(wmi_unified_t wmi_handle,
2585 			struct wmi_twt_btwt_remove_sta_cmd_param *params);
2586 #endif
2587 
2588 QDF_STATUS (*extract_twt_enable_comp_event)(wmi_unified_t wmi_handle,
2589 		uint8_t *evt_buf,
2590 		struct wmi_twt_enable_complete_event_param *params);
2591 
2592 QDF_STATUS (*extract_twt_disable_comp_event)(wmi_unified_t wmi_handle,
2593 		uint8_t *evt_buf,
2594 		struct wmi_twt_disable_complete_event *params);
2595 
2596 QDF_STATUS (*extract_twt_add_dialog_comp_event)(wmi_unified_t wmi_handle,
2597 		uint8_t *evt_buf,
2598 		struct wmi_twt_add_dialog_complete_event_param *params);
2599 
2600 QDF_STATUS (*extract_twt_add_dialog_comp_additional_params)
2601 		(
2602 		 wmi_unified_t wmi_handle, uint8_t *evt_buf,
2603 		 uint32_t evt_buf_len, uint32_t idx,
2604 		 struct wmi_twt_add_dialog_additional_params *additional_params
2605 		);
2606 
2607 QDF_STATUS (*extract_twt_del_dialog_comp_event)(wmi_unified_t wmi_handle,
2608 		uint8_t *evt_buf,
2609 		struct wmi_twt_del_dialog_complete_event_param *params);
2610 
2611 QDF_STATUS (*extract_twt_pause_dialog_comp_event)(wmi_unified_t wmi_handle,
2612 		uint8_t *evt_buf,
2613 		struct wmi_twt_pause_dialog_complete_event_param *params);
2614 
2615 QDF_STATUS (*extract_twt_nudge_dialog_comp_event)(wmi_unified_t wmi_handle,
2616 		uint8_t *evt_buf,
2617 		struct wmi_twt_nudge_dialog_complete_event_param *params);
2618 
2619 QDF_STATUS (*extract_twt_resume_dialog_comp_event)(wmi_unified_t wmi_handle,
2620 		uint8_t *evt_buf,
2621 		struct wmi_twt_resume_dialog_complete_event_param *params);
2622 
2623 QDF_STATUS (*extract_twt_notify_event)(wmi_unified_t wmi_handle,
2624 		uint8_t *evt_buf,
2625 		struct wmi_twt_notify_event_param *params);
2626 QDF_STATUS (*extract_twt_ack_comp_event)(wmi_unified_t wmi_handle,
2627 		uint8_t *evt_buf,
2628 		struct wmi_twt_ack_complete_event_param *params);
2629 #ifdef WLAN_SUPPORT_BCAST_TWT
2630 QDF_STATUS (*extract_twt_btwt_invite_sta_comp_event)(wmi_unified_t wmi_handle,
2631 		uint8_t *evt_buf,
2632 		struct wmi_twt_btwt_invite_sta_complete_event_param *params);
2633 
2634 QDF_STATUS (*extract_twt_btwt_remove_sta_comp_event)(wmi_unified_t wmi_handle,
2635 		uint8_t *evt_buf,
2636 		struct wmi_twt_btwt_remove_sta_complete_event_param *params);
2637 #endif
2638 
2639 QDF_STATUS(*extract_twt_session_stats_event)
2640 		(
2641 		 wmi_unified_t wmi_handle,
2642 		 uint8_t *evt_buf,
2643 		 struct wmi_twt_session_stats_event_param *params
2644 		);
2645 QDF_STATUS(*extract_twt_session_stats_data)
2646 		(
2647 		 wmi_unified_t wmi_handle,
2648 		 uint8_t *evt_buf,
2649 		 struct wmi_twt_session_stats_event_param *params,
2650 		 struct wmi_host_twt_session_stats_info *session,
2651 		 uint32_t idx
2652 		);
2653 #endif
2654 
2655 #ifdef QCA_SUPPORT_CP_STATS
2656 QDF_STATUS (*extract_cca_stats)(wmi_unified_t wmi_handle, void *evt_buf,
2657 				struct wmi_host_congestion_stats *stats);
2658 #endif /* QCA_SUPPORT_CP_STATS */
2659 
2660 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
2661 QDF_STATUS (*send_dfs_average_radar_params_cmd)(
2662 		wmi_unified_t wmi_handle,
2663 		struct dfs_radar_found_params *params);
2664 
2665 QDF_STATUS (*extract_dfs_status_from_fw)(wmi_unified_t wmi_handle,
2666 					 void *evt_buf,
2667 					 uint32_t *dfs_status_check);
2668 #endif
2669 
2670 
2671 #ifdef OBSS_PD
2672 QDF_STATUS (*send_obss_spatial_reuse_set)(wmi_unified_t wmi_handle,
2673 		struct wmi_host_obss_spatial_reuse_set_param
2674 		*obss_spatial_reuse_param);
2675 
2676 QDF_STATUS (*send_obss_spatial_reuse_set_def_thresh)(wmi_unified_t wmi_handle,
2677 		struct wmi_host_obss_spatial_reuse_set_def_thresh
2678 		*obss_spatial_reuse_param);
2679 
2680 QDF_STATUS (*send_self_srg_bss_color_bitmap_set)(
2681 	wmi_unified_t wmi_handle, uint32_t bitmap_0,
2682 	uint32_t bitmap_1, uint8_t pdev_id);
2683 
2684 QDF_STATUS (*send_self_srg_partial_bssid_bitmap_set)(
2685 	wmi_unified_t wmi_handle, uint32_t bitmap_0,
2686 	uint32_t bitmap_1, uint8_t pdev_id);
2687 
2688 QDF_STATUS (*send_self_srg_obss_color_enable_bitmap)(
2689 	wmi_unified_t wmi_handle, uint32_t bitmap_0,
2690 	uint32_t bitmap_1, uint8_t pdev_id);
2691 
2692 QDF_STATUS (*send_self_srg_obss_bssid_enable_bitmap)(
2693 	wmi_unified_t wmi_handle, uint32_t bitmap_0,
2694 	uint32_t bitmap_1, uint8_t pdev_id);
2695 
2696 QDF_STATUS (*send_self_non_srg_obss_color_enable_bitmap)(
2697 	wmi_unified_t wmi_handle, uint32_t bitmap_0,
2698 	uint32_t bitmap_1, uint8_t pdev_id);
2699 
2700 QDF_STATUS (*send_self_non_srg_obss_bssid_enable_bitmap)(
2701 	wmi_unified_t wmi_handle, uint32_t bitmap_0,
2702 	uint32_t bitmap_1, uint8_t pdev_id);
2703 #endif
2704 
2705 QDF_STATUS
2706 (*extract_ctl_failsafe_check_ev_param)(
2707 		wmi_unified_t wmi_handle,
2708 		void *evt_buf,
2709 		struct wmi_host_pdev_ctl_failsafe_event *param);
2710 
2711 QDF_STATUS (*send_peer_del_all_wds_entries_cmd)(wmi_unified_t wmi_handle,
2712 		struct peer_del_all_wds_entries_params *param);
2713 
2714 #ifdef WLAN_CFR_ENABLE
2715 QDF_STATUS
2716 (*extract_cfr_peer_tx_event_param)(wmi_unified_t wmi_handle, void *evt_buf,
2717 				   wmi_cfr_peer_tx_event_param *peer_tx_event);
2718 
2719 QDF_STATUS (*send_peer_cfr_capture_cmd)(wmi_unified_t wmi_handle,
2720 					struct peer_cfr_params *param);
2721 #ifdef WLAN_ENH_CFR_ENABLE
2722 QDF_STATUS (*send_cfr_rcc_cmd)(wmi_unified_t wmi_handle,
2723 			  struct cfr_rcc_param *cfg);
2724 #endif
2725 #endif
2726 
2727 #ifdef WMI_AP_SUPPORT
2728 QDF_STATUS (*send_vdev_pcp_tid_map_cmd)(wmi_unified_t wmi_handle,
2729 					struct vap_pcp_tid_map_params *param);
2730 QDF_STATUS (*send_vdev_tidmap_prec_cmd)(wmi_unified_t wmi_handle,
2731 					struct vap_tidmap_prec_params *param);
2732 QDF_STATUS (*send_peer_ft_roam_cmd)(wmi_unified_t wmi_handle,
2733 				    uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
2734 				    uint8_t vdev_id);
2735 #endif
2736 QDF_STATUS (*send_mws_coex_status_req_cmd)(wmi_unified_t wmi_handle,
2737 					   uint32_t vdev_id, uint32_t cmd_id);
2738 
2739 #ifdef WIFI_POS_CONVERGED
2740 QDF_STATUS (*extract_oem_response_param)
2741 		(wmi_unified_t wmi_hdl, void *resp_buf,
2742 		 struct wmi_oem_response_param *oem_resp_param);
2743 #endif /* WIFI_POS_CONVERGED */
2744 
2745 #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT)
2746 QDF_STATUS (*extract_pasn_peer_create_req_event)
2747 			(wmi_unified_t wmi_handle,
2748 			 void *evt_buf,
2749 			 struct wifi_pos_pasn_peer_data *dst);
2750 
2751 QDF_STATUS (*extract_pasn_peer_delete_req_event)
2752 			(wmi_unified_t wmi_handle,
2753 			 void *evt_buf,
2754 			 struct wifi_pos_pasn_peer_data *dst);
2755 
2756 QDF_STATUS (*send_rtt_pasn_auth_status_cmd)
2757 			(wmi_unified_t wmi_handle,
2758 			 struct wlan_pasn_auth_status *data);
2759 
2760 QDF_STATUS (*send_rtt_pasn_deauth_cmd)(wmi_unified_t wmi_handle,
2761 				       struct qdf_mac_addr *peer_mac);
2762 #endif
2763 
2764 QDF_STATUS (*extract_hw_mode_resp_event)(wmi_unified_t wmi_handle,
2765 					 void *evt_buf, uint32_t *cmd_status);
2766 
2767 #ifdef WLAN_FEATURE_ELNA
2768 QDF_STATUS (*send_set_elna_bypass_cmd)(wmi_unified_t wmi_handle,
2769 				       struct set_elna_bypass_request *req);
2770 QDF_STATUS (*send_get_elna_bypass_cmd)(wmi_unified_t wmi_handle,
2771 				       struct get_elna_bypass_request *req);
2772 QDF_STATUS (*extract_get_elna_bypass_resp)(wmi_unified_t wmi_handle,
2773 					 void *resp_buf,
2774 					 struct get_elna_bypass_response *resp);
2775 #endif /* WLAN_FEATURE_ELNA */
2776 
2777 #ifdef WLAN_SEND_DSCP_UP_MAP_TO_FW
2778 QDF_STATUS (*send_dscp_tid_map_cmd)(wmi_unified_t wmi_handle,
2779 				     uint32_t *dscp_to_tid_map);
2780 #endif
2781 
2782 #ifdef WLAN_FEATURE_MDNS_OFFLOAD
2783 QDF_STATUS (*send_set_mdns_config_cmd)(wmi_unified_t wmi_handle,
2784 				       struct mdns_config_info *mdns_info);
2785 #endif /* WLAN_FEATURE_MDNS_OFFLOAD */
2786 
2787 #ifdef THERMAL_STATS_SUPPORT
2788 QDF_STATUS (*send_get_thermal_stats_cmd)(wmi_unified_t wmi_handle,
2789 					 enum thermal_stats_request_type req,
2790 					 uint8_t temp_offset);
2791 #endif /* THERMAL_STATS_SUPPORT */
2792 
2793 QDF_STATUS (*send_pdev_get_pn_cmd)(wmi_unified_t wmi_handle,
2794 				   struct peer_request_pn_param *pn_params);
2795 QDF_STATUS (*extract_get_pn_data)(wmi_unified_t wmi_handle,
2796 				  void *evt_buf,
2797 				  struct wmi_host_get_pn_event *param);
2798 QDF_STATUS (*send_pdev_get_rxpn_cmd)(wmi_unified_t wmi_handle,
2799 				     struct peer_request_rxpn_param *pn_params);
2800 QDF_STATUS (*extract_get_rxpn_data)(wmi_unified_t wmi_handle,
2801 				    void *evt_buf,
2802 				    struct wmi_host_get_rxpn_event *param);
2803 #ifdef FEATURE_ANI_LEVEL_REQUEST
2804 QDF_STATUS (*send_ani_level_cmd)(wmi_unified_t wmi_handle, uint32_t *freqs,
2805 				 uint8_t num_freqs);
2806 
2807 QDF_STATUS (*extract_ani_level)(uint8_t *evt_buf,
2808 				struct wmi_host_ani_level_event **info,
2809 				uint32_t *num_freqs);
2810 #endif /* FEATURE_ANI_LEVEL_REQUEST */
2811 
2812 QDF_STATUS (*extract_multi_vdev_restart_resp_event)(
2813 		wmi_unified_t wmi_handle, void *evt_buf,
2814 		struct multi_vdev_restart_resp *restart_rsp);
2815 
2816 #ifdef WLAN_FEATURE_PKT_CAPTURE
2817 QDF_STATUS (*extract_vdev_mgmt_offload_event)(
2818 				void *handle,
2819 				void *event_buf,
2820 				struct mgmt_offload_event_params *params);
2821 #endif /* WLAN_FEATURE_PKT_CAPTURE */
2822 
2823 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2
2824 QDF_STATUS (*extract_smart_monitor_event)(
2825 				void *handle,
2826 				void *event_buf,
2827 				struct smu_event_params *params);
2828 #endif /* WLAN_FEATURE_PKT_CAPTURE_V2 */
2829 
2830 QDF_STATUS (*multisoc_tbtt_sync_cmd)(wmi_unified_t wmi_handle,
2831 				     struct rnr_tbtt_multisoc_sync_param *param);
2832 
2833 #ifdef FEATURE_WLAN_TIME_SYNC_FTM
2834 QDF_STATUS (*send_wlan_time_sync_ftm_trigger_cmd)(wmi_unified_t wmi_handle,
2835 						  uint32_t vdev_id,
2836 						  bool burst_mode);
2837 
2838 QDF_STATUS (*send_wlan_ts_qtime_cmd)(wmi_unified_t wmi_handle,
2839 				     uint32_t vdev_id,
2840 				     uint64_t lpass_ts);
2841 
2842 QDF_STATUS (*extract_time_sync_ftm_start_stop_event)(
2843 				wmi_unified_t wmi_hdl, void *evt_buf,
2844 				struct ftm_time_sync_start_stop_params *param);
2845 
2846 QDF_STATUS (*extract_time_sync_ftm_offset_event)(
2847 					wmi_unified_t wmi_hdl, void *evt_buf,
2848 					struct ftm_time_sync_offset *param);
2849 #endif /* FEATURE_WLAN_TIME_SYNC_FTM */
2850 QDF_STATUS (*send_roam_scan_ch_list_req_cmd)(wmi_unified_t wmi_hdl,
2851 					     uint32_t vdev_id);
2852 
2853 QDF_STATUS (*send_injector_config_cmd)(wmi_unified_t wmi_handle,
2854 				struct wmi_host_injector_frame_params *params);
2855 
2856 QDF_STATUS (*send_cp_stats_cmd)(wmi_unified_t wmi_handle,
2857 				void *buf_ptr, uint32_t buf_len);
2858 
2859 QDF_STATUS (*send_halphy_stats_cmd)(wmi_unified_t wmi_handle,
2860 				    void *buf_ptr, uint32_t buf_len);
2861 
2862 QDF_STATUS (*extract_cp_stats_more_pending)(wmi_unified_t wmi_handle,
2863 					    void *evt_buf,
2864 					    uint32_t *more_flag);
2865 QDF_STATUS (*extract_halphy_stats_end_of_event)(wmi_unified_t wmi_handle,
2866 						void *evt_buf,
2867 						uint32_t *end_of_event_flag);
2868 QDF_STATUS (*extract_halphy_stats_event_count)(wmi_unified_t wmi_handle,
2869 					       void *evt_buf,
2870 					       uint32_t *event_count_flag);
2871 #ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
2872 QDF_STATUS
2873 (*extract_infra_cp_stats)(wmi_unified_t wmi_handle,
2874 			  void *evt_buf, uint32_t evt_buf_len,
2875 			  struct infra_cp_stats_event *params);
2876 
2877 QDF_STATUS
2878 (*send_infra_cp_stats_request_cmd)(wmi_unified_t wmi_handle,
2879 				   struct infra_cp_stats_cmd_info *param);
2880 #endif /* WLAN_SUPPORT_INFRA_CTRL_PATH_STATS */
2881 
2882 QDF_STATUS (*send_vdev_tsf_tstamp_action_cmd)(wmi_unified_t wmi,
2883 					      uint8_t vdev_id);
2884 
2885 QDF_STATUS (*extract_vdev_tsf_report_event)(wmi_unified_t wmi_handle,
2886 					    void *evt_buf,
2887 					    struct wmi_host_tsf_event *param);
2888 #ifdef WMI_AP_SUPPORT
2889 QDF_STATUS (*set_radio_tx_mode_select_cmd)(
2890 				wmi_unified_t wmi,
2891 				struct wmi_pdev_enable_tx_mode_selection *param);
2892 QDF_STATUS (*send_lcr_cmd)(wmi_unified_t wmi_handle,
2893 			   struct wmi_wifi_pos_lcr_info *lcr_info);
2894 QDF_STATUS (*send_lci_cmd)(wmi_unified_t wmi_handle,
2895 			   struct wifi_pos_lci_info *lci_info);
2896 #if !defined(CNSS_GENL) && defined(WLAN_RTT_MEASUREMENT_NOTIFICATION)
2897 QDF_STATUS (*extract_measreq_chan_info)(uint32_t data_len, uint8_t *data,
2898 					struct rtt_channel_info *chinfo);
2899 #endif
2900 
2901 #ifdef WLAN_SUPPORT_MESH_LATENCY
2902 QDF_STATUS (*config_vdev_tid_latency_info_cmd)(
2903 				wmi_unified_t wmi,
2904 				struct wmi_vdev_tid_latency_config_params
2905 				*param);
2906 QDF_STATUS (*config_peer_latency_info_cmd)(
2907 				wmi_unified_t wmi,
2908 				struct wmi_peer_latency_config_params
2909 				*param);
2910 #endif
2911 #endif
2912 
2913 QDF_STATUS (*send_set_tpc_power_cmd)(wmi_unified_t wmi_handle,
2914 				     uint8_t vdev_id,
2915 				     struct reg_tpc_power_info *param);
2916 
2917 #ifdef CONFIG_AFC_SUPPORT
2918 QDF_STATUS
2919 (*send_afc_cmd)(wmi_unified_t wmi_handle, uint8_t pdev_id,
2920 		struct reg_afc_resp_rx_ind_info *param);
2921 #endif
2922 
2923 #ifdef WLAN_FEATURE_BIG_DATA_STATS
2924 QDF_STATUS (*send_big_data_stats_request_cmd)(
2925 				wmi_unified_t wmi_handle,
2926 				struct stats_request_params *param);
2927 #endif
2928 QDF_STATUS (*extract_dpd_status_ev_param)(wmi_unified_t wmi_handle,
2929 					  void *evt_buf,
2930 					  struct wmi_host_pdev_get_dpd_status_event *param);
2931 
2932 QDF_STATUS (*extract_halphy_cal_status_ev_param)(wmi_unified_t wmi_handle,
2933 						 void *evt_buf,
2934 						 struct wmi_host_pdev_get_halphy_cal_status_event *param);
2935 
2936 QDF_STATUS
2937 (*extract_install_key_comp_event)(wmi_unified_t wmi_handle,
2938 				  void *evt_buf, uint32_t len,
2939 				  struct wmi_install_key_comp_event *param);
2940 
2941 QDF_STATUS (*send_vdev_set_ltf_key_seed_cmd)
2942 			(wmi_unified_t wmi_handle,
2943 			 struct wlan_crypto_ltf_keyseed_data *data);
2944 
2945 #ifdef WLAN_ENH_CFR_ENABLE
2946 QDF_STATUS
2947 (*extract_cfr_phase_param)(wmi_unified_t wmi_handle,
2948 			   void *evt_buf,
2949 			   struct wmi_cfr_phase_delta_param *param);
2950 #endif
2951 
2952 QDF_STATUS (*send_set_halphy_cal)(wmi_unified_t wmi_handle,
2953 				  struct wmi_host_send_set_halphy_cal_info *param);
2954 
2955 QDF_STATUS
2956 (*extract_halphy_cal_ev_param)(wmi_unified_t wmi_handle,
2957 			       void *evt_buf,
2958 			       struct wmi_host_pdev_set_halphy_cal_event *param);
2959 
2960 QDF_STATUS (*extract_mgmt_rx_ext_params)(wmi_unified_t wmi_handle,
2961 					 void *evt_buf,
2962 					 struct mgmt_rx_event_ext_params *params);
2963 
2964 #ifdef WLAN_MGMT_RX_REO_SUPPORT
2965 QDF_STATUS (*extract_mgmt_rx_fw_consumed)(wmi_unified_t wmi_handle,
2966 					  void *evt_buf,
2967 					  struct mgmt_rx_reo_params *params);
2968 
2969 QDF_STATUS (*extract_mgmt_rx_reo_params)(wmi_unified_t wmi_handle,
2970 					 void *evt_buf,
2971 					 struct mgmt_rx_reo_params *params);
2972 
2973 QDF_STATUS (*send_mgmt_rx_reo_filter_config_cmd)(
2974 					wmi_unified_t wmi_handle,
2975 					uint8_t pdev_id,
2976 					struct mgmt_rx_reo_filter *filter);
2977 #endif
2978 
2979 #ifdef WLAN_FEATURE_11BE_MLO
2980 QDF_STATUS (*mlo_setup_cmd_send)(wmi_unified_t wmi_handle,
2981 				 struct wmi_mlo_setup_params *params);
2982 QDF_STATUS (*mlo_teardown_cmd_send)(wmi_unified_t wmi_handle,
2983 				    struct wmi_mlo_teardown_params *params);
2984 QDF_STATUS (*mlo_ready_cmd_send)(wmi_unified_t wmi_handle,
2985 				 struct wmi_mlo_ready_params *params);
2986 QDF_STATUS
2987 (*extract_mlo_setup_cmpl_event)(wmi_unified_t wmi_handle,
2988 				uint8_t *buf,
2989 				struct wmi_mlo_setup_complete_params *params);
2990 QDF_STATUS
2991 (*extract_mlo_teardown_cmpl_event)(wmi_unified_t wmi_handle,
2992 				   uint8_t *buf,
2993 				   struct wmi_mlo_teardown_cmpl_params *param);
2994 QDF_STATUS
2995 (*send_mlo_link_set_active_cmd)(wmi_unified_t wmi_handle,
2996 				struct mlo_link_set_active_param *param);
2997 
2998 QDF_STATUS
2999 (*extract_mlo_link_set_active_resp)(wmi_unified_t wmi_handle,
3000 				    void *evt_buf,
3001 				    struct mlo_link_set_active_resp *resp);
3002 #endif
3003 
3004 #ifdef WLAN_FEATURE_SON
3005 QDF_STATUS
3006 (*extract_inst_rssi_stats_resp)(wmi_unified_t wmi_handle, void *evt_buf,
3007 			struct wmi_host_inst_rssi_stats_resp *inst_rssi_resp);
3008 #endif
3009 
3010 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
3011 QDF_STATUS (*send_set_mac_address_cmd)(wmi_unified_t wmi,
3012 				       struct set_mac_addr_params *params);
3013 QDF_STATUS (*extract_update_mac_address_event)(wmi_unified_t wmi_handle,
3014 					       void *evt_buf, uint8_t *vdev_id,
3015 					       uint8_t *status);
3016 #endif
3017 
3018 QDF_STATUS
3019 (*send_soc_tqm_reset_enable_disable_cmd)(wmi_unified_t wmi_handle,
3020 					 uint32_t enable);
3021 
3022 #ifdef CONFIG_SAWF_DEF_QUEUES
3023 QDF_STATUS
3024 (*send_set_rate_upper_cap_cmd)(wmi_unified_t wmi_handle, uint8_t pdev_id,
3025 			       struct wmi_rc_params *param);
3026 QDF_STATUS
3027 (*send_set_rate_retry_mcs_drop_cmd)(wmi_unified_t wmi_handle, uint8_t pdev_id,
3028 				    struct wmi_rc_params *param);
3029 QDF_STATUS
3030 (*send_set_mcs_probe_intvl_cmd)(wmi_unified_t wmi_handle, uint8_t pdev_id,
3031 				struct wmi_rc_params *param);
3032 QDF_STATUS
3033 (*send_set_nss_probe_intvl_cmd)(wmi_unified_t wmi_handle, uint8_t pdev_id,
3034 				struct wmi_rc_params *param);
3035 QDF_STATUS
3036 (*send_sawf_create_cmd)(wmi_unified_t wmi, struct wmi_sawf_params *params);
3037 QDF_STATUS
3038 (*send_sawf_disable_cmd)(wmi_unified_t wmi, uint32_t svc_id);
3039 #endif
3040 
3041 #ifdef WLAN_FEATURE_11BE_MLO
3042 QDF_STATUS (*extract_quiet_offload_event)(
3043 				wmi_unified_t wmi_handle, void *evt_buf,
3044 				struct vdev_sta_quiet_event *quiet_event);
3045 #endif
3046 
3047 #ifdef WLAN_SUPPORT_PPEDS
3048 QDF_STATUS
3049 (*peer_ppe_ds_param_send)(wmi_unified_t wmi_handle,
3050 			  struct peer_ppe_ds_param *param);
3051 #endif /* WLAN_SUPPORT_PPEDS */
3052 
3053 QDF_STATUS
3054 (*send_vdev_pn_mgmt_rxfilter_cmd)(wmi_unified_t wmi_handle,
3055 				  struct vdev_pn_mgmt_rxfilter_params *params);
3056 
3057 #ifdef WLAN_FEATURE_11BE
3058 QDF_STATUS (*send_mlo_peer_tid_to_link_map)(
3059 		wmi_unified_t wmi_handle,
3060 		struct wmi_host_tid_to_link_map_params *params);
3061 #endif /* WLAN_FEATURE_11BE */
3062 
3063 QDF_STATUS
3064 (*extract_pktlog_decode_info_event)(wmi_unified_t wmi_handle, void *evt_buf,
3065 				    uint8_t *pdev_id, uint8_t *software_image,
3066 				    uint8_t *chip_info,
3067 				    uint32_t *pktlog_json_version);
3068 
3069 QDF_STATUS
3070 (*send_peer_filter_set_tx_cmd)(wmi_unified_t wmi_handle,
3071 			       uint8_t macaddr[],
3072 			       struct set_tx_peer_filter *param);
3073 
3074 QDF_STATUS
3075 (*extract_pdev_telemetry_stats)(
3076 		wmi_unified_t wmi_handle, void *evt_buf,
3077 		struct wmi_host_pdev_telemetry_stats *pdev_stats);
3078 #ifdef WLAN_FEATURE_PEER_TXQ_FLUSH_CONF
3079 QDF_STATUS
3080 (*send_peer_txq_flush_config_cmd)(wmi_unified_t wmi_handle,
3081 				  struct peer_txq_flush_config_params *param);
3082 #endif
3083 };
3084 
3085 /* Forward declartion for psoc*/
3086 struct wlan_objmgr_psoc;
3087 
3088 /**
3089  * struct wmi_init_cmd - Saved wmi INIT command
3090  * @buf: Buffer containing the wmi INIT command
3091  * @buf_len: Length of the buffer
3092  */
3093 struct wmi_cmd_init {
3094 	wmi_buf_t buf;
3095 	uint32_t buf_len;
3096 };
3097 
3098 /**
3099  * @abi_version_0: WMI Major and Minor versions
3100  * @abi_version_1: WMI change revision
3101  * @abi_version_ns_0: ABI version namespace first four dwords
3102  * @abi_version_ns_1: ABI version namespace second four dwords
3103  * @abi_version_ns_2: ABI version namespace third four dwords
3104  * @abi_version_ns_3: ABI version namespace fourth four dwords
3105  */
3106 struct wmi_host_abi_version {
3107 	uint32_t abi_version_0;
3108 	uint32_t abi_version_1;
3109 	uint32_t abi_version_ns_0;
3110 	uint32_t abi_version_ns_1;
3111 	uint32_t abi_version_ns_2;
3112 	uint32_t abi_version_ns_3;
3113 };
3114 
3115 /* number of debugfs entries used */
3116 #ifdef WMI_INTERFACE_FILTERED_EVENT_LOGGING
3117 /* filtered logging added 4 more entries */
3118 #define NUM_DEBUG_INFOS 13
3119 #else
3120 #define NUM_DEBUG_INFOS 9
3121 #endif
3122 
3123 struct wmi_unified {
3124 	void *scn_handle;    /* handle to device */
3125 	osdev_t  osdev; /* handle to use OS-independent services */
3126 	struct wbuff_mod_handle *wbuff_handle; /* handle to wbuff */
3127 	qdf_atomic_t pending_cmds;
3128 	HTC_ENDPOINT_ID wmi_endpoint_id;
3129 	uint16_t max_msg_len;
3130 	uint32_t *event_id;
3131 	wmi_unified_event_handler *event_handler;
3132 	struct wmi_unified_exec_ctx *ctx;
3133 	HTC_HANDLE htc_handle;
3134 	qdf_spinlock_t eventq_lock;
3135 	qdf_nbuf_queue_t event_queue;
3136 	qdf_work_t rx_event_work;
3137 	qdf_workqueue_t *wmi_rx_work_queue;
3138 	qdf_workqueue_t *wmi_rx_diag_work_queue;
3139 	qdf_spinlock_t diag_eventq_lock;
3140 	qdf_nbuf_queue_t diag_event_queue;
3141 	qdf_work_t rx_diag_event_work;
3142 	uint32_t wmi_rx_diag_events_dropped;
3143 	int wmi_stop_in_progress;
3144 	struct wmi_host_abi_version fw_abi_version;
3145 	struct wmi_host_abi_version final_abi_vers;
3146 	uint32_t num_of_diag_events_logs;
3147 	uint32_t *events_logs_list;
3148 #ifdef WLAN_OPEN_SOURCE
3149 	struct fwdebug dbglog;
3150 	struct dentry *debugfs_phy;
3151 #endif /* WLAN_OPEN_SOURCE */
3152 
3153 #ifdef WMI_INTERFACE_EVENT_LOGGING
3154 	struct wmi_debug_log_info log_info;
3155 #endif /*WMI_INTERFACE_EVENT_LOGGING */
3156 
3157 	qdf_atomic_t is_target_suspended;
3158 	qdf_atomic_t is_target_suspend_acked;
3159 #ifdef WLAN_FEATURE_WMI_SEND_RECV_QMI
3160 	bool is_qmi_stats_enabled;
3161 #endif
3162 
3163 #ifdef FEATURE_RUNTIME_PM
3164 	qdf_atomic_t runtime_pm_inprogress;
3165 #endif
3166 	qdf_atomic_t is_wow_bus_suspended;
3167 	bool tag_crash_inject;
3168 	bool tgt_force_assert_enable;
3169 	enum wmi_target_type target_type;
3170 	struct wmi_ops *ops;
3171 	bool use_cookie;
3172 	bool wmi_stopinprogress;
3173 	uint32_t *wmi_events;
3174 	uint32_t *services;
3175 	struct wmi_soc *soc;
3176 	uint16_t wmi_max_cmds;
3177 	struct dentry *debugfs_de[NUM_DEBUG_INFOS];
3178 	qdf_atomic_t critical_events_in_flight;
3179 #ifdef WMI_EXT_DBG
3180 	int wmi_ext_dbg_msg_queue_size;
3181 	qdf_list_t wmi_ext_dbg_msg_queue;
3182 	qdf_spinlock_t wmi_ext_dbg_msg_queue_lock;
3183 	qdf_dentry_t wmi_ext_dbg_dentry;
3184 #endif /*WMI_EXT_DBG*/
3185 	uint32_t *cmd_pdev_id_map;
3186 	uint32_t *evt_pdev_id_map;
3187 	uint32_t *cmd_phy_id_map;
3188 	uint32_t *evt_phy_id_map;
3189 #ifdef WMI_INTERFACE_SEQUENCE_CHECK
3190 	/* wmi sequence stop */
3191 	bool wmi_sequence_stop;
3192 	/* wmi next transmit sequence number */
3193 	uint32_t wmi_sequence;
3194 	/* wmi completion expected sequence number */
3195 	uint32_t wmi_exp_sequence;
3196 	qdf_spinlock_t wmi_seq_lock;
3197 #endif /*WMI_INTERFACE_SEQUENCE_CHECK*/
3198 
3199 	qdf_atomic_t num_stats_over_qmi;
3200 };
3201 
3202 #define WMI_MAX_RADIOS 3
3203 struct wmi_soc {
3204 	struct wlan_objmgr_psoc *wmi_psoc;
3205 	void *scn_handle;    /* handle to device */
3206 	qdf_atomic_t num_pdevs;
3207 	enum wmi_target_type target_type;
3208 	bool is_async_ep;
3209 	HTC_HANDLE htc_handle;
3210 	uint32_t event_id[WMI_UNIFIED_MAX_EVENT];
3211 	wmi_unified_event_handler event_handler[WMI_UNIFIED_MAX_EVENT];
3212 	uint32_t max_event_idx;
3213 	struct wmi_unified_exec_ctx ctx[WMI_UNIFIED_MAX_EVENT];
3214 	qdf_spinlock_t ctx_lock;
3215 	struct wmi_unified *wmi_pdev[WMI_MAX_RADIOS];
3216 	HTC_ENDPOINT_ID wmi_endpoint_id[WMI_MAX_RADIOS];
3217 	uint16_t max_msg_len[WMI_MAX_RADIOS];
3218 	struct wmi_ops *ops;
3219 	const uint32_t *svc_ids;
3220 #if defined(WLAN_FEATURE_WMI_DIAG_OVER_CE7) || \
3221 	defined(WLAN_DIAG_AND_DBR_OVER_SEPARATE_CE)
3222 	HTC_ENDPOINT_ID wmi_diag_endpoint_id;
3223 #endif
3224 #if defined(WLAN_DIAG_AND_DBR_OVER_SEPARATE_CE)
3225 	HTC_ENDPOINT_ID wmi_dbr_endpoint_id;
3226 #endif
3227 	uint32_t wmi_events[wmi_events_max];
3228 	/* WMI service bitmap received from target */
3229 	uint32_t *wmi_service_bitmap;
3230 	uint32_t *wmi_ext_service_bitmap;
3231 	uint32_t *wmi_ext2_service_bitmap;
3232 	uint32_t services[wmi_services_max];
3233 	uint16_t wmi_max_cmds;
3234 	uint32_t soc_idx;
3235 	uint32_t cmd_pdev_id_map[WMI_MAX_RADIOS];
3236 	uint32_t evt_pdev_id_map[WMI_MAX_RADIOS];
3237 	uint32_t cmd_phy_id_map[WMI_MAX_RADIOS];
3238 	uint32_t evt_phy_id_map[WMI_MAX_RADIOS];
3239 	bool is_pdev_is_map_enable;
3240 	bool is_phy_id_map_enable;
3241 #ifdef WMI_INTERFACE_EVENT_LOGGING
3242 	uint32_t buf_offset_command;
3243 	uint32_t buf_offset_event;
3244 #endif /*WMI_INTERFACE_EVENT_LOGGING */
3245 };
3246 
3247 /**
3248  * struct wmi_process_fw_event_params - fw event parameters
3249  * @wmi_handle: wmi handle
3250  * @evt_buf: event buffer
3251  */
3252 struct wmi_process_fw_event_params {
3253 	void *wmi_handle;
3254 	void *evt_buf;
3255 };
3256 
3257 /**
3258  * wmi_mtrace() - Wrappper function for qdf_mtrace api
3259  * @message_id: 32-Bit Wmi message ID
3260  * @vdev_id: Vdev ID
3261  * @data: Actual message contents
3262  *
3263  * This function converts the 32-bit WMI message ID in 15-bit message ID
3264  * format for qdf_mtrace as in qdf_mtrace message there are only 15
3265  * bits reserved for message ID.
3266  * out of these 15-bits, 8-bits (From MSB) specifies the WMI_GRP_ID
3267  * and remaining 7-bits specifies the actual WMI command. With this
3268  * notation there can be maximum 256 groups and each group can have
3269  * max 128 commands can be supported.
3270  *
3271  * Return: None
3272  */
3273 void wmi_mtrace(uint32_t message_id, uint16_t vdev_id, uint32_t data);
3274 
3275 void wmi_unified_register_module(enum wmi_target_type target_type,
3276 			void (*wmi_attach)(wmi_unified_t wmi_handle));
3277 void wmi_tlv_init(void);
3278 void wmi_non_tlv_init(void);
3279 #ifdef WMI_NON_TLV_SUPPORT
3280 /* ONLY_NON_TLV_TARGET:TLV attach dummy function definition for case when
3281  * driver supports only NON-TLV target (WIN mainline) */
3282 #define wmi_tlv_attach(x) qdf_print("TLV Unavailable")
3283 #else
3284 void wmi_tlv_attach(wmi_unified_t wmi_handle);
3285 #endif
3286 void wmi_non_tlv_attach(wmi_unified_t wmi_handle);
3287 
3288 #ifdef FEATURE_WLAN_EXTSCAN
3289 void wmi_extscan_attach_tlv(struct wmi_unified *wmi_handle);
3290 #else
3291 static inline void wmi_extscan_attach_tlv(struct wmi_unified *wmi_handle)
3292 {
3293 }
3294 #endif
3295 
3296 #ifdef WMI_SMART_ANT_SUPPORT
3297 void wmi_smart_ant_attach_tlv(struct wmi_unified *wmi_handle);
3298 #else
3299 static inline void wmi_smart_ant_attach_tlv(struct wmi_unified *wmi_handle)
3300 {
3301 }
3302 #endif
3303 
3304 #ifdef WMI_DBR_SUPPORT
3305 void wmi_dbr_attach_tlv(struct wmi_unified *wmi_handle);
3306 #else
3307 static inline void wmi_dbr_attach_tlv(struct wmi_unified *wmi_handle)
3308 {
3309 }
3310 #endif
3311 
3312 #ifdef WMI_ATF_SUPPORT
3313 void wmi_atf_attach_tlv(struct wmi_unified *wmi_handle);
3314 #else
3315 static inline void wmi_atf_attach_tlv(struct wmi_unified *wmi_handle)
3316 {
3317 }
3318 #endif
3319 
3320 #ifdef WMI_AP_SUPPORT
3321 void wmi_ap_attach_tlv(struct wmi_unified *wmi_handle);
3322 #else
3323 static inline void wmi_ap_attach_tlv(struct wmi_unified *wmi_handle)
3324 {
3325 }
3326 #endif
3327 
3328 #ifdef WLAN_FEATURE_DSRC
3329 void wmi_ocb_attach_tlv(wmi_unified_t wmi_handle);
3330 #else
3331 static inline void wmi_ocb_attach_tlv(wmi_unified_t wmi_handle)
3332 {
3333 }
3334 #endif
3335 
3336 #ifdef WLAN_FEATURE_NAN
3337 void wmi_nan_attach_tlv(wmi_unified_t wmi_handle);
3338 #else
3339 static inline void wmi_nan_attach_tlv(wmi_unified_t wmi_handle)
3340 {
3341 }
3342 #endif
3343 
3344 #ifdef FEATURE_P2P_LISTEN_OFFLOAD
3345 void wmi_p2p_listen_offload_attach_tlv(wmi_unified_t wmi_handle);
3346 #else
3347 static inline
3348 void wmi_p2p_listen_offload_attach_tlv(wmi_unified_t wmi_handle)
3349 {
3350 }
3351 #endif
3352 
3353 #ifdef CONVERGED_P2P_ENABLE
3354 void wmi_p2p_attach_tlv(wmi_unified_t wmi_handle);
3355 #else
3356 static inline void wmi_p2p_attach_tlv(struct wmi_unified *wmi_handle)
3357 {
3358 }
3359 #endif
3360 
3361 #ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
3362 void wmi_interop_issues_ap_attach_tlv(wmi_unified_t wmi_handle);
3363 #else
3364 static inline void
3365 wmi_interop_issues_ap_attach_tlv(struct wmi_unified *wmi_handle)
3366 {
3367 }
3368 #endif
3369 
3370 #ifdef DCS_INTERFERENCE_DETECTION
3371 void wmi_dcs_attach_tlv(wmi_unified_t wmi_handle);
3372 #else
3373 static inline void
3374 wmi_dcs_attach_tlv(struct wmi_unified *wmi_handle)
3375 {
3376 }
3377 #endif
3378 
3379 #ifdef FEATURE_LFR_SUBNET_DETECTION
3380 void wmi_lfr_subnet_detection_attach_tlv(wmi_unified_t wmi_handle);
3381 #else
3382 static inline
3383 void wmi_lfr_subnet_detection_attach_tlv(struct wmi_unified *wmi_handle)
3384 {
3385 }
3386 #endif
3387 
3388 #ifdef FEATURE_RSSI_MONITOR
3389 void wmi_rssi_monitor_attach_tlv(wmi_unified_t wmi_handle);
3390 #else
3391 static inline
3392 void wmi_rssi_monitor_attach_tlv(struct wmi_unified *wmi_handle)
3393 {
3394 }
3395 #endif
3396 
3397 #ifdef FEATURE_WLAN_ESE
3398 void wmi_ese_attach_tlv(wmi_unified_t wmi_handle);
3399 #else
3400 static inline void wmi_ese_attach_tlv(struct wmi_unified *wmi_handle)
3401 {
3402 }
3403 #endif
3404 
3405 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
3406 void wmi_roam_offload_attach_tlv(wmi_unified_t wmi_handle);
3407 #else
3408 static inline
3409 void wmi_roam_offload_attach_tlv(struct wmi_unified *wmi_handle)
3410 {
3411 }
3412 #endif
3413 
3414 #ifdef WLAN_FEATURE_FILS_SK
3415 void wmi_fils_sk_attach_tlv(wmi_unified_t wmi_handle);
3416 #else
3417 static inline void wmi_fils_sk_attach_tlv(struct wmi_unified *wmi_handle)
3418 {
3419 }
3420 #endif
3421 
3422 #ifdef WMI_ROAM_SUPPORT
3423 void wmi_roam_attach_tlv(struct wmi_unified *wmi_handle);
3424 #else
3425 static inline void wmi_roam_attach_tlv(struct wmi_unified *wmi_handle)
3426 {
3427 }
3428 #endif
3429 
3430 #ifdef WMI_CONCURRENCY_SUPPORT
3431 void wmi_concurrency_attach_tlv(struct wmi_unified *wmi_handle);
3432 #else
3433 static inline void wmi_concurrency_attach_tlv(struct wmi_unified *wmi_handle)
3434 {
3435 }
3436 #endif
3437 
3438 #ifdef FEATURE_WLAN_D0WOW
3439 void wmi_d0wow_attach_tlv(struct wmi_unified *wmi_handle);
3440 #else
3441 static inline void wmi_d0wow_attach_tlv(struct wmi_unified *wmi_handle)
3442 {
3443 }
3444 #endif
3445 
3446 #ifdef FEATURE_WLAN_RA_FILTERING
3447 void wmi_ra_filtering_attach_tlv(struct wmi_unified *wmi_handle);
3448 #else
3449 static inline
3450 void wmi_ra_filtering_attach_tlv(struct wmi_unified *wmi_handle)
3451 {
3452 }
3453 #endif
3454 
3455 #ifdef FEATURE_WLAN_LPHB
3456 void wmi_lphb_attach_tlv(struct wmi_unified *wmi_handle);
3457 #else
3458 static inline void wmi_lphb_attach_tlv(struct wmi_unified *wmi_handle)
3459 {
3460 }
3461 #endif
3462 
3463 #ifdef WLAN_FEATURE_PACKET_FILTERING
3464 void wmi_packet_filtering_attach_tlv(struct wmi_unified *wmi_handle);
3465 #else
3466 static inline
3467 void wmi_packet_filtering_attach_tlv(struct wmi_unified *wmi_handle)
3468 {
3469 }
3470 #endif
3471 
3472 #ifdef WLAN_FEATURE_EXTWOW_SUPPORT
3473 void wmi_extwow_attach_tlv(struct wmi_unified *wmi_handle);
3474 #else
3475 static inline void wmi_extwow_attach_tlv(struct wmi_unified *wmi_handle)
3476 {
3477 }
3478 #endif
3479 
3480 #ifdef WLAN_POWER_MANAGEMENT_OFFLOAD
3481 void wmi_pmo_attach_tlv(struct wmi_unified *wmi_handle);
3482 #else
3483 static inline void wmi_pmo_attach_tlv(struct wmi_unified *wmi_handle)
3484 {
3485 }
3486 #endif
3487 
3488 #ifdef FEATURE_WLAN_TDLS
3489 void wmi_tdls_attach_tlv(struct wmi_unified *wmi_handle);
3490 #else
3491 static inline void wmi_tdls_attach_tlv(struct wmi_unified *wmi_handle)
3492 {
3493 }
3494 #endif
3495 
3496 #ifdef WLAN_POLICY_MGR_ENABLE
3497 void wmi_policy_mgr_attach_tlv(struct wmi_unified *wmi_handle);
3498 #else
3499 static inline
3500 void wmi_policy_mgr_attach_tlv(struct wmi_unified *wmi_handle)
3501 {
3502 }
3503 #endif
3504 
3505 #if defined(WLAN_FEATURE_ROAM_OFFLOAD) && defined(FEATURE_DENYLIST_MGR)
3506 void wmi_denylist_mgr_attach_tlv(struct wmi_unified *wmi_handle);
3507 #else
3508 static inline
3509 void wmi_denylist_mgr_attach_tlv(struct wmi_unified *wmi_handle)
3510 {
3511 }
3512 #endif
3513 
3514 #ifdef WMI_STA_SUPPORT
3515 void wmi_sta_attach_tlv(struct wmi_unified *wmi_handle);
3516 #else
3517 static inline void wmi_sta_attach_tlv(struct wmi_unified *wmi_handle)
3518 {
3519 }
3520 #endif
3521 
3522 #ifdef WLAN_WMI_BCN
3523 void wmi_bcn_attach_tlv(wmi_unified_t wmi_handle);
3524 #else
3525 static inline void wmi_bcn_attach_tlv(wmi_unified_t wmi_handle)
3526 {
3527 }
3528 #endif
3529 
3530 /**
3531  * wmi_fwol_attach_tlv() - attach fw offload tlv handlers
3532  * @wmi_handle: wmi handle
3533  *
3534  * Return: void
3535  */
3536 #ifdef WLAN_FW_OFFLOAD
3537 void wmi_fwol_attach_tlv(wmi_unified_t wmi_handle);
3538 #else
3539 static inline void wmi_fwol_attach_tlv(wmi_unified_t wmi_handle)
3540 {
3541 }
3542 #endif
3543 
3544 /**
3545  * wmi_gpio_attach_tlv() - attach gpio tlv handlers
3546  * @wmi_handle: wmi handle
3547  *
3548  * Return: void
3549  */
3550 #ifdef WLAN_FEATURE_GPIO_CFG
3551 void wmi_gpio_attach_tlv(wmi_unified_t wmi_handle);
3552 #else
3553 static inline void
3554 wmi_gpio_attach_tlv(struct wmi_unified *wmi_handle)
3555 {
3556 }
3557 #endif
3558 
3559 /**
3560  * wmi_align() - provides word aligned parameter
3561  * @param: parameter to be aligned
3562  *
3563  * Return: word aligned parameter
3564  */
3565 static inline uint32_t wmi_align(uint32_t param)
3566 {
3567 	return roundup(param, sizeof(uint32_t));
3568 }
3569 
3570 /**
3571  * wmi_vdev_map_to_vdev_id() - Provides vdev id corresponding to idx
3572  *                             from vdev map
3573  * @vdev_map: Bitmask containing information of active vdev ids
3574  * @idx: Index referring to the i'th bit set from LSB in vdev map
3575  *
3576  * This API returns the vdev id for the i'th bit set from LSB in vdev map.
3577  * Index runs through 1 from maximum number of vdevs set in the vdev map
3578  *
3579  * Return: vdev id of the vdev object
3580  */
3581 static inline uint32_t wmi_vdev_map_to_vdev_id(uint32_t vdev_map,
3582 					       uint32_t idx)
3583 {
3584 	uint32_t vdev_count = 0, vdev_set = 0, vdev_id = WLAN_INVALID_VDEV_ID;
3585 
3586 	while (vdev_map) {
3587 		vdev_set += (vdev_map & 0x1);
3588 		if (vdev_set == (idx+1)) {
3589 			vdev_id = vdev_count;
3590 			break;
3591 		}
3592 		vdev_map >>= 1;
3593 		vdev_count++;
3594 	}
3595 
3596 	return vdev_id;
3597 }
3598 
3599 /**
3600  * wmi_vdev_map_to_num_vdevs() - Provides number of vdevs active based on the
3601  *                               vdev map received from FW
3602  * @vdev_map: Bitmask containing information of active vdev ids
3603  *
3604  * Return: Number of vdevs set in the vdev bit mask
3605  */
3606 static inline uint32_t wmi_vdev_map_to_num_vdevs(uint32_t vdev_map)
3607 {
3608 	uint32_t num_vdevs = 0;
3609 
3610 	while (vdev_map) {
3611 		num_vdevs += (vdev_map & 0x1);
3612 		vdev_map >>= 1;
3613 	}
3614 
3615 	return num_vdevs;
3616 }
3617 
3618 #ifdef WMI_EXT_DBG
3619 
3620 /**
3621  * wmi_ext_dbg_msg_get() - Allocate memory for wmi debug msg
3622  *
3623  * @buflen: Length of WMI message buffer
3624  *
3625  * Return: Allocated msg buffer else NULL on failure.
3626  */
3627 static inline struct wmi_ext_dbg_msg *wmi_ext_dbg_msg_get(uint32_t buflen)
3628 {
3629 	return qdf_mem_malloc(sizeof(struct wmi_ext_dbg_msg) + buflen);
3630 }
3631 
3632 /**
3633  * wmi_ext_dbg_msg_put() - Free wmi debug msg buffer
3634  *
3635  * @msg: wmi message buffer to be freed
3636  *
3637  * Return: none
3638  */
3639 static inline void wmi_ext_dbg_msg_put(struct wmi_ext_dbg_msg *msg)
3640 {
3641 	qdf_mem_free(msg);
3642 }
3643 
3644 #endif /*WMI_EXT_DBG */
3645 
3646 #ifdef WLAN_CFR_ENABLE
3647 void wmi_cfr_attach_tlv(struct wmi_unified *wmi_handle);
3648 #else
3649 static inline void wmi_cfr_attach_tlv(struct wmi_unified *wmi_handle)
3650 {
3651 }
3652 #endif
3653 
3654 #ifdef QCA_SUPPORT_CP_STATS
3655 void wmi_cp_stats_attach_tlv(struct wmi_unified *wmi_handle);
3656 #else
3657 static inline void wmi_cp_stats_attach_tlv(struct wmi_unified *wmi_handle)
3658 {
3659 }
3660 #endif /* QCA_SUPPORT_CP_STATS */
3661 
3662 #ifdef QCA_SUPPORT_MC_CP_STATS
3663 void wmi_mc_cp_stats_attach_tlv(struct wmi_unified *wmi_handle);
3664 #else
3665 static inline void wmi_mc_cp_stats_attach_tlv(struct wmi_unified *wmi_handle)
3666 {
3667 }
3668 #endif /* QCA_SUPPORT_MC_CP_STATS */
3669 
3670 /*
3671  * wmi_map_ch_width() - map wmi channel width to host channel width
3672  * @wmi_width: wmi channel width
3673  *
3674  * Return: host channel width, enum phy_ch_width
3675  */
3676 enum phy_ch_width wmi_map_ch_width(A_UINT32 wmi_width);
3677 #endif
3678