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