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