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