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