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