1 /* 2 * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 #include "wmi_unified_priv.h" 21 #include "wmi_unified_param.h" 22 #include "qdf_module.h" 23 #include "cdp_txrx_cmn_struct.h" 24 #include <wmi_unified_vdev_api.h> 25 26 static const wmi_host_channel_width mode_to_width[WMI_HOST_MODE_MAX] = { 27 [WMI_HOST_MODE_11A] = WMI_HOST_CHAN_WIDTH_20, 28 [WMI_HOST_MODE_11G] = WMI_HOST_CHAN_WIDTH_20, 29 [WMI_HOST_MODE_11B] = WMI_HOST_CHAN_WIDTH_20, 30 [WMI_HOST_MODE_11GONLY] = WMI_HOST_CHAN_WIDTH_20, 31 [WMI_HOST_MODE_11NA_HT20] = WMI_HOST_CHAN_WIDTH_20, 32 [WMI_HOST_MODE_11NG_HT20] = WMI_HOST_CHAN_WIDTH_20, 33 [WMI_HOST_MODE_11AC_VHT20] = WMI_HOST_CHAN_WIDTH_20, 34 [WMI_HOST_MODE_11AC_VHT20_2G] = WMI_HOST_CHAN_WIDTH_20, 35 [WMI_HOST_MODE_11NA_HT40] = WMI_HOST_CHAN_WIDTH_40, 36 [WMI_HOST_MODE_11NG_HT40] = WMI_HOST_CHAN_WIDTH_40, 37 [WMI_HOST_MODE_11AC_VHT40] = WMI_HOST_CHAN_WIDTH_40, 38 [WMI_HOST_MODE_11AC_VHT40_2G] = WMI_HOST_CHAN_WIDTH_40, 39 [WMI_HOST_MODE_11AC_VHT80] = WMI_HOST_CHAN_WIDTH_80, 40 [WMI_HOST_MODE_11AC_VHT80_2G] = WMI_HOST_CHAN_WIDTH_80, 41 #if CONFIG_160MHZ_SUPPORT 42 [WMI_HOST_MODE_11AC_VHT80_80] = WMI_HOST_CHAN_WIDTH_80P80, 43 [WMI_HOST_MODE_11AC_VHT160] = WMI_HOST_CHAN_WIDTH_160, 44 #endif 45 46 #if SUPPORT_11AX 47 [WMI_HOST_MODE_11AX_HE20] = WMI_HOST_CHAN_WIDTH_20, 48 [WMI_HOST_MODE_11AX_HE40] = WMI_HOST_CHAN_WIDTH_40, 49 [WMI_HOST_MODE_11AX_HE80] = WMI_HOST_CHAN_WIDTH_80, 50 [WMI_HOST_MODE_11AX_HE80_80] = WMI_HOST_CHAN_WIDTH_80P80, 51 [WMI_HOST_MODE_11AX_HE160] = WMI_HOST_CHAN_WIDTH_160, 52 [WMI_HOST_MODE_11AX_HE20_2G] = WMI_HOST_CHAN_WIDTH_20, 53 [WMI_HOST_MODE_11AX_HE40_2G] = WMI_HOST_CHAN_WIDTH_40, 54 [WMI_HOST_MODE_11AX_HE80_2G] = WMI_HOST_CHAN_WIDTH_80, 55 #endif 56 #ifdef WLAN_FEATURE_11BE 57 [WMI_HOST_MODE_11BE_EHT20] = WMI_HOST_CHAN_WIDTH_20, 58 [WMI_HOST_MODE_11BE_EHT40] = WMI_HOST_CHAN_WIDTH_40, 59 [WMI_HOST_MODE_11BE_EHT80] = WMI_HOST_CHAN_WIDTH_80, 60 [WMI_HOST_MODE_11BE_EHT320] = WMI_HOST_CHAN_WIDTH_320, 61 [WMI_HOST_MODE_11BE_EHT160] = WMI_HOST_CHAN_WIDTH_160, 62 [WMI_HOST_MODE_11BE_EHT20_2G] = WMI_HOST_CHAN_WIDTH_20, 63 [WMI_HOST_MODE_11BE_EHT40_2G] = WMI_HOST_CHAN_WIDTH_40, 64 #endif 65 }; 66 67 QDF_STATUS wmi_unified_soc_set_hw_mode_cmd(wmi_unified_t wmi_handle, 68 uint32_t hw_mode_index) 69 { 70 if (wmi_handle->ops->send_pdev_set_hw_mode_cmd) 71 return wmi_handle->ops->send_pdev_set_hw_mode_cmd( 72 wmi_handle, 73 hw_mode_index); 74 75 return QDF_STATUS_E_FAILURE; 76 } 77 78 QDF_STATUS wmi_unified_vdev_create_send(wmi_unified_t wmi_handle, 79 uint8_t macaddr[QDF_MAC_ADDR_SIZE], 80 struct vdev_create_params *param) 81 { 82 if (wmi_handle->ops->send_vdev_create_cmd) 83 return wmi_handle->ops->send_vdev_create_cmd(wmi_handle, 84 macaddr, param); 85 86 return QDF_STATUS_E_FAILURE; 87 } 88 89 QDF_STATUS wmi_unified_vdev_delete_send(wmi_unified_t wmi_handle, 90 uint8_t if_id) 91 { 92 if (wmi_handle->ops->send_vdev_delete_cmd) 93 return wmi_handle->ops->send_vdev_delete_cmd(wmi_handle, 94 if_id); 95 96 return QDF_STATUS_E_FAILURE; 97 } 98 99 QDF_STATUS 100 wmi_unified_vdev_nss_chain_params_send(wmi_unified_t wmi_handle, 101 uint8_t vdev_id, 102 struct vdev_nss_chains *user_cfg) 103 { 104 if (wmi_handle->ops->send_vdev_nss_chain_params_cmd) 105 return wmi_handle->ops->send_vdev_nss_chain_params_cmd( 106 wmi_handle, 107 vdev_id, 108 user_cfg); 109 110 return QDF_STATUS_E_FAILURE; 111 } 112 113 QDF_STATUS wmi_unified_vdev_stop_send(wmi_unified_t wmi_handle, 114 uint8_t vdev_id) 115 { 116 if (wmi_handle->ops->send_vdev_stop_cmd) 117 return wmi_handle->ops->send_vdev_stop_cmd(wmi_handle, 118 vdev_id); 119 120 return QDF_STATUS_E_FAILURE; 121 } 122 123 QDF_STATUS wmi_unified_vdev_down_send(wmi_unified_t wmi_handle, 124 uint8_t vdev_id) 125 { 126 if (wmi_handle->ops->send_vdev_down_cmd) 127 return wmi_handle->ops->send_vdev_down_cmd(wmi_handle, vdev_id); 128 129 return QDF_STATUS_E_FAILURE; 130 } 131 132 QDF_STATUS wmi_unified_vdev_start_send(wmi_unified_t wmi_handle, 133 struct vdev_start_params *req) 134 { 135 if (wmi_handle->ops->send_vdev_start_cmd) 136 return wmi_handle->ops->send_vdev_start_cmd(wmi_handle, req); 137 138 return QDF_STATUS_E_FAILURE; 139 } 140 141 QDF_STATUS 142 wmi_unified_vdev_set_nac_rssi_send(wmi_unified_t wmi_handle, 143 struct vdev_scan_nac_rssi_params *req) 144 { 145 if (wmi_handle->ops->send_vdev_set_nac_rssi_cmd) 146 return wmi_handle->ops->send_vdev_set_nac_rssi_cmd(wmi_handle, req); 147 148 return QDF_STATUS_E_FAILURE; 149 } 150 151 QDF_STATUS 152 wmi_unified_peer_flush_tids_send(wmi_unified_t wmi_handle, 153 uint8_t peer_addr[QDF_MAC_ADDR_SIZE], 154 struct peer_flush_params *param) 155 { 156 if (wmi_handle->ops->send_peer_flush_tids_cmd) 157 return wmi_handle->ops->send_peer_flush_tids_cmd(wmi_handle, 158 peer_addr, param); 159 160 return QDF_STATUS_E_FAILURE; 161 } 162 163 #ifdef WLAN_FEATURE_PEER_TXQ_FLUSH_CONF 164 QDF_STATUS 165 wmi_unified_peer_txq_flush_config_send(wmi_unified_t wmi_handle, 166 struct peer_txq_flush_config_params *pr) 167 { 168 struct wmi_ops *ops = wmi_handle->ops; 169 170 if (ops->send_peer_txq_flush_config_cmd) 171 return ops->send_peer_txq_flush_config_cmd(wmi_handle, pr); 172 173 return QDF_STATUS_E_FAILURE; 174 } 175 #endif 176 177 QDF_STATUS wmi_unified_peer_delete_send(wmi_unified_t wmi_handle, 178 uint8_t peer_addr[QDF_MAC_ADDR_SIZE], 179 struct peer_delete_cmd_params *param) 180 { 181 if (wmi_handle->ops->send_peer_delete_cmd) 182 return wmi_handle->ops->send_peer_delete_cmd( 183 wmi_handle, 184 peer_addr, param); 185 186 return QDF_STATUS_E_FAILURE; 187 } 188 189 QDF_STATUS wmi_unified_peer_delete_all_send( 190 wmi_unified_t wmi_hdl, 191 struct peer_delete_all_params *param) 192 { 193 if (wmi_hdl->ops->send_peer_delete_all_cmd) 194 return wmi_hdl->ops->send_peer_delete_all_cmd(wmi_hdl, param); 195 196 return QDF_STATUS_E_FAILURE; 197 } 198 199 QDF_STATUS wmi_set_peer_param_send(wmi_unified_t wmi_handle, 200 uint8_t peer_addr[QDF_MAC_ADDR_SIZE], 201 struct peer_set_params *param) 202 { 203 if (wmi_handle->ops->send_peer_param_cmd) 204 return wmi_handle->ops->send_peer_param_cmd(wmi_handle, 205 peer_addr, param); 206 207 return QDF_STATUS_E_FAILURE; 208 } 209 210 QDF_STATUS wmi_unified_vdev_up_send(wmi_unified_t wmi_handle, 211 uint8_t bssid[QDF_MAC_ADDR_SIZE], 212 struct vdev_up_params *params) 213 { 214 if (wmi_handle->ops->send_vdev_up_cmd) 215 return wmi_handle->ops->send_vdev_up_cmd(wmi_handle, bssid, 216 params); 217 218 return QDF_STATUS_E_FAILURE; 219 } 220 221 QDF_STATUS wmi_unified_peer_create_send(wmi_unified_t wmi_handle, 222 struct peer_create_params *param) 223 { 224 if (wmi_handle->ops->send_peer_create_cmd) 225 return wmi_handle->ops->send_peer_create_cmd(wmi_handle, param); 226 227 return QDF_STATUS_E_FAILURE; 228 } 229 230 QDF_STATUS wmi_unified_peer_rx_reorder_queue_setup_send( 231 wmi_unified_t wmi_handle, 232 struct rx_reorder_queue_setup_params *param) 233 { 234 if (wmi_handle->ops->send_peer_rx_reorder_queue_setup_cmd) 235 return wmi_handle->ops->send_peer_rx_reorder_queue_setup_cmd( 236 wmi_handle, param); 237 238 return QDF_STATUS_E_FAILURE; 239 } 240 241 QDF_STATUS wmi_unified_peer_rx_reorder_queue_remove_send( 242 wmi_unified_t wmi_handle, 243 struct rx_reorder_queue_remove_params *param) 244 { 245 if (wmi_handle->ops->send_peer_rx_reorder_queue_remove_cmd) 246 return wmi_handle->ops->send_peer_rx_reorder_queue_remove_cmd( 247 wmi_handle, param); 248 249 return QDF_STATUS_E_FAILURE; 250 } 251 252 #ifdef WLAN_SUPPORT_GREEN_AP 253 QDF_STATUS wmi_unified_green_ap_ps_send(wmi_unified_t wmi_handle, 254 uint32_t value, uint8_t pdev_id) 255 { 256 if (wmi_handle->ops->send_green_ap_ps_cmd) 257 return wmi_handle->ops->send_green_ap_ps_cmd(wmi_handle, value, 258 pdev_id); 259 260 return QDF_STATUS_E_FAILURE; 261 } 262 #else 263 QDF_STATUS wmi_unified_green_ap_ps_send(wmi_unified_t wmi_handle, 264 uint32_t value, uint8_t pdev_id) 265 { 266 return QDF_STATUS_SUCCESS; 267 } 268 #endif /* WLAN_SUPPORT_GREEN_AP */ 269 270 QDF_STATUS 271 wmi_unified_pdev_utf_cmd_send(wmi_unified_t wmi_handle, 272 struct pdev_utf_params *param, 273 uint8_t mac_id) 274 { 275 if (wmi_handle->ops->send_pdev_utf_cmd) 276 return wmi_handle->ops->send_pdev_utf_cmd(wmi_handle, param, 277 mac_id); 278 279 return QDF_STATUS_E_FAILURE; 280 } 281 282 QDF_STATUS 283 wmi_unified_pdev_param_send(wmi_unified_t wmi_handle, 284 struct pdev_params *param, 285 uint8_t mac_id) 286 { 287 if (wmi_handle->ops->send_pdev_param_cmd) 288 return wmi_handle->ops->send_pdev_param_cmd(wmi_handle, param, 289 mac_id); 290 291 return QDF_STATUS_E_FAILURE; 292 } 293 294 QDF_STATUS 295 wmi_unified_multiple_pdev_param_send(wmi_unified_t wmi_handle, 296 struct set_multiple_pdev_vdev_param *params) 297 { 298 if (wmi_handle->ops->send_multiple_pdev_param_cmd) 299 return wmi_handle->ops->send_multiple_pdev_param_cmd(wmi_handle, 300 params); 301 302 return QDF_STATUS_E_FAILURE; 303 } 304 305 QDF_STATUS 306 wmi_unified_multiple_vdev_param_send(wmi_unified_t wmi_handle, 307 struct set_multiple_pdev_vdev_param *params) 308 { 309 if (wmi_handle->ops->send_multiple_vdev_param_cmd) 310 return wmi_handle->ops->send_multiple_vdev_param_cmd(wmi_handle, 311 params); 312 return QDF_STATUS_E_FAILURE; 313 } 314 315 QDF_STATUS wmi_unified_suspend_send(wmi_unified_t wmi_handle, 316 struct suspend_params *param, 317 uint8_t mac_id) 318 { 319 if (wmi_handle->ops->send_suspend_cmd) 320 return wmi_handle->ops->send_suspend_cmd(wmi_handle, param, 321 mac_id); 322 323 return QDF_STATUS_E_FAILURE; 324 } 325 326 QDF_STATUS wmi_unified_resume_send(wmi_unified_t wmi_handle, 327 uint8_t mac_id) 328 { 329 if (wmi_handle->ops->send_resume_cmd) 330 return wmi_handle->ops->send_resume_cmd(wmi_handle, 331 mac_id); 332 333 return QDF_STATUS_E_FAILURE; 334 } 335 336 QDF_STATUS wmi_unified_wow_enable_send(wmi_unified_t wmi_handle, 337 struct wow_cmd_params *param, 338 uint8_t mac_id) 339 { 340 if (wmi_handle->ops->send_wow_enable_cmd) 341 return wmi_handle->ops->send_wow_enable_cmd(wmi_handle, param, 342 mac_id); 343 344 return QDF_STATUS_E_FAILURE; 345 } 346 347 QDF_STATUS wmi_unified_wow_wakeup_send(wmi_unified_t wmi_handle) 348 { 349 if (wmi_handle->ops->send_wow_wakeup_cmd) 350 return wmi_handle->ops->send_wow_wakeup_cmd(wmi_handle); 351 352 return QDF_STATUS_E_FAILURE; 353 } 354 355 QDF_STATUS 356 wmi_unified_wow_add_wakeup_event_send(wmi_unified_t wmi_handle, 357 struct wow_add_wakeup_params *param) 358 { 359 if (wmi_handle->ops->send_wow_add_wakeup_event_cmd) 360 return wmi_handle->ops->send_wow_add_wakeup_event_cmd( 361 wmi_handle, 362 param); 363 364 return QDF_STATUS_E_FAILURE; 365 } 366 367 QDF_STATUS 368 wmi_unified_wow_add_wakeup_pattern_send( 369 wmi_unified_t wmi_handle, 370 struct wow_add_wakeup_pattern_params *param) 371 { 372 if (wmi_handle->ops->send_wow_add_wakeup_pattern_cmd) 373 return wmi_handle->ops->send_wow_add_wakeup_pattern_cmd( 374 wmi_handle, 375 param); 376 377 return QDF_STATUS_E_FAILURE; 378 } 379 380 QDF_STATUS 381 wmi_unified_wow_remove_wakeup_pattern_send( 382 wmi_unified_t wmi_handle, 383 struct wow_remove_wakeup_pattern_params *param) 384 { 385 if (wmi_handle->ops->send_wow_remove_wakeup_pattern_cmd) 386 return wmi_handle->ops->send_wow_remove_wakeup_pattern_cmd( 387 wmi_handle, 388 param); 389 390 return QDF_STATUS_E_FAILURE; 391 } 392 393 QDF_STATUS wmi_unified_ap_ps_cmd_send(wmi_unified_t wmi_handle, 394 uint8_t *peer_addr, 395 struct ap_ps_params *param) 396 { 397 if (wmi_handle->ops->send_set_ap_ps_param_cmd) 398 return wmi_handle->ops->send_set_ap_ps_param_cmd(wmi_handle, 399 peer_addr, 400 param); 401 402 return QDF_STATUS_E_FAILURE; 403 } 404 405 QDF_STATUS wmi_unified_sta_ps_cmd_send(wmi_unified_t wmi_handle, 406 struct sta_ps_params *param) 407 { 408 if (wmi_handle->ops->send_set_sta_ps_param_cmd) 409 return wmi_handle->ops->send_set_sta_ps_param_cmd(wmi_handle, 410 param); 411 412 return QDF_STATUS_E_FAILURE; 413 } 414 415 QDF_STATUS wmi_crash_inject(wmi_unified_t wmi_handle, 416 struct crash_inject *param) 417 { 418 if (wmi_handle->ops->send_crash_inject_cmd) 419 return wmi_handle->ops->send_crash_inject_cmd(wmi_handle, 420 param); 421 422 return QDF_STATUS_E_FAILURE; 423 } 424 425 QDF_STATUS 426 wmi_unified_dbglog_cmd_send(wmi_unified_t wmi_handle, 427 struct dbglog_params *dbglog_param) 428 { 429 if (wmi_handle->ops->send_dbglog_cmd) 430 return wmi_handle->ops->send_dbglog_cmd(wmi_handle, 431 dbglog_param); 432 433 return QDF_STATUS_E_FAILURE; 434 } 435 qdf_export_symbol(wmi_unified_dbglog_cmd_send); 436 437 QDF_STATUS 438 wmi_unified_vdev_set_param_send(wmi_unified_t wmi_handle, 439 struct vdev_set_params *param) 440 { 441 if (wmi_handle->ops->send_vdev_set_param_cmd) 442 return wmi_handle->ops->send_vdev_set_param_cmd(wmi_handle, 443 param); 444 445 return QDF_STATUS_E_FAILURE; 446 } 447 448 #ifdef WLAN_FEATURE_ROAM_OFFLOAD 449 QDF_STATUS 450 wmi_unified_roam_set_param_send(wmi_unified_t wmi_handle, 451 struct vdev_set_params *roam_param) 452 { 453 if (wmi_handle->ops->send_roam_set_param_cmd) 454 return wmi_handle->ops->send_roam_set_param_cmd(wmi_handle, 455 roam_param); 456 457 return QDF_STATUS_E_FAILURE; 458 } 459 #endif 460 QDF_STATUS 461 wmi_unified_vdev_set_mu_snif_send(wmi_unified_t wmi_handle, 462 struct vdev_set_mu_snif_param *param) 463 { 464 if (wmi_handle->ops->send_vdev_set_mu_snif_cmd) 465 return wmi_handle->ops->send_vdev_set_mu_snif_cmd(wmi_handle, 466 param); 467 468 return QDF_STATUS_E_FAILURE; 469 } 470 471 QDF_STATUS wmi_unified_sifs_trigger_send(wmi_unified_t wmi_handle, 472 struct sifs_trigger_param *param) 473 { 474 if (wmi_handle->ops->send_vdev_sifs_trigger_cmd) 475 return wmi_handle->ops->send_vdev_sifs_trigger_cmd(wmi_handle, 476 param); 477 478 return QDF_STATUS_E_FAILURE; 479 } 480 481 QDF_STATUS 482 wmi_unified_packet_log_enable_send(wmi_unified_t wmi_handle, 483 WMI_HOST_PKTLOG_EVENT PKTLOG_EVENT, 484 uint8_t mac_id) 485 { 486 if (wmi_handle->ops->send_packet_log_enable_cmd) 487 return wmi_handle->ops->send_packet_log_enable_cmd(wmi_handle, 488 PKTLOG_EVENT, mac_id); 489 490 return QDF_STATUS_E_FAILURE; 491 } 492 493 QDF_STATUS wmi_unified_peer_based_pktlog_send(wmi_unified_t wmi_handle, 494 uint8_t *macaddr, 495 uint8_t mac_id, 496 uint8_t enb_dsb) 497 { 498 if (wmi_handle->ops->send_peer_based_pktlog_cmd) 499 return wmi_handle->ops->send_peer_based_pktlog_cmd 500 (wmi_handle, macaddr, mac_id, enb_dsb); 501 502 return QDF_STATUS_E_FAILURE; 503 } 504 505 QDF_STATUS wmi_unified_packet_log_disable_send(wmi_unified_t wmi_handle, 506 uint8_t mac_id) 507 { 508 if (wmi_handle->ops->send_packet_log_disable_cmd) 509 return wmi_handle->ops->send_packet_log_disable_cmd(wmi_handle, 510 mac_id); 511 512 return QDF_STATUS_E_FAILURE; 513 } 514 515 QDF_STATUS 516 wmi_unified_fd_tmpl_send_cmd(wmi_unified_t wmi_handle, 517 struct fils_discovery_tmpl_params *param) 518 { 519 if (wmi_handle->ops->send_fd_tmpl_cmd) 520 return wmi_handle->ops->send_fd_tmpl_cmd(wmi_handle, 521 param); 522 523 return QDF_STATUS_E_FAILURE; 524 } 525 526 QDF_STATUS 527 wmi_unified_beacon_tmpl_send_cmd(wmi_unified_t wmi_handle, 528 struct beacon_tmpl_params *param) 529 { 530 if (wmi_handle->ops->send_beacon_tmpl_send_cmd) 531 return wmi_handle->ops->send_beacon_tmpl_send_cmd(wmi_handle, 532 param); 533 534 return QDF_STATUS_E_FAILURE; 535 } 536 537 QDF_STATUS 538 wmi_unified_peer_assoc_send(wmi_unified_t wmi_handle, 539 struct peer_assoc_params *param) 540 { 541 if (wmi_handle->ops->send_peer_assoc_cmd) 542 return wmi_handle->ops->send_peer_assoc_cmd(wmi_handle, 543 param); 544 545 return QDF_STATUS_E_FAILURE; 546 } 547 548 QDF_STATUS 549 wmi_unified_scan_start_cmd_send(wmi_unified_t wmi_handle, 550 struct scan_req_params *param) 551 { 552 if (wmi_handle->ops->send_scan_start_cmd) 553 return wmi_handle->ops->send_scan_start_cmd(wmi_handle, 554 param); 555 556 return QDF_STATUS_E_FAILURE; 557 } 558 559 QDF_STATUS 560 wmi_unified_scan_stop_cmd_send(wmi_unified_t wmi_handle, 561 struct scan_cancel_param *param) 562 { 563 if (wmi_handle->ops->send_scan_stop_cmd) 564 return wmi_handle->ops->send_scan_stop_cmd(wmi_handle, 565 param); 566 567 return QDF_STATUS_E_FAILURE; 568 } 569 570 QDF_STATUS 571 wmi_unified_scan_chan_list_cmd_send(wmi_unified_t wmi_handle, 572 struct scan_chan_list_params *param) 573 { 574 if (wmi_handle->ops->send_scan_chan_list_cmd) 575 return wmi_handle->ops->send_scan_chan_list_cmd(wmi_handle, 576 param); 577 578 return QDF_STATUS_E_FAILURE; 579 } 580 581 QDF_STATUS wmi_mgmt_unified_cmd_send(wmi_unified_t wmi_handle, 582 struct wmi_mgmt_params *param) 583 { 584 if (wmi_handle->ops->send_mgmt_cmd) 585 return wmi_handle->ops->send_mgmt_cmd(wmi_handle, 586 param); 587 588 return QDF_STATUS_E_FAILURE; 589 } 590 591 QDF_STATUS 592 wmi_offchan_data_tx_cmd_send(wmi_unified_t wmi_handle, 593 struct wmi_offchan_data_tx_params *param) 594 { 595 if (wmi_handle->ops->send_offchan_data_tx_cmd) 596 return wmi_handle->ops->send_offchan_data_tx_cmd(wmi_handle, 597 param); 598 599 return QDF_STATUS_E_FAILURE; 600 } 601 602 QDF_STATUS wmi_unified_modem_power_state(wmi_unified_t wmi_handle, 603 uint32_t param_value) 604 { 605 if (wmi_handle->ops->send_modem_power_state_cmd) 606 return wmi_handle->ops->send_modem_power_state_cmd(wmi_handle, 607 param_value); 608 609 return QDF_STATUS_E_FAILURE; 610 } 611 612 QDF_STATUS wmi_unified_set_sta_ps_mode(wmi_unified_t wmi_handle, 613 uint32_t vdev_id, uint8_t val) 614 { 615 if (wmi_handle->ops->send_set_sta_ps_mode_cmd) 616 return wmi_handle->ops->send_set_sta_ps_mode_cmd(wmi_handle, 617 vdev_id, val); 618 619 return QDF_STATUS_E_FAILURE; 620 } 621 622 QDF_STATUS 623 wmi_unified_send_idle_trigger_monitor(wmi_unified_t wmi_handle, uint8_t val) 624 { 625 if (wmi_handle->ops->send_idle_roam_monitor_cmd) 626 return wmi_handle->ops->send_idle_roam_monitor_cmd(wmi_handle, 627 val); 628 629 return QDF_STATUS_E_FAILURE; 630 } 631 632 QDF_STATUS wmi_unified_set_mimops(wmi_unified_t wmi_handle, uint8_t vdev_id, 633 int value) 634 { 635 if (wmi_handle->ops->send_set_mimops_cmd) 636 return wmi_handle->ops->send_set_mimops_cmd(wmi_handle, 637 vdev_id, value); 638 639 return QDF_STATUS_E_FAILURE; 640 } 641 642 QDF_STATUS wmi_unified_set_smps_params(wmi_unified_t wmi_handle, 643 uint8_t vdev_id, 644 int value) 645 { 646 if (wmi_handle->ops->send_set_smps_params_cmd) 647 return wmi_handle->ops->send_set_smps_params_cmd(wmi_handle, 648 vdev_id, value); 649 650 return QDF_STATUS_E_FAILURE; 651 } 652 653 QDF_STATUS wmi_unified_get_temperature(wmi_unified_t wmi_handle) 654 { 655 if (wmi_handle->ops->send_get_temperature_cmd) 656 return wmi_handle->ops->send_get_temperature_cmd(wmi_handle); 657 658 return QDF_STATUS_E_FAILURE; 659 } 660 661 QDF_STATUS 662 wmi_unified_set_sta_uapsd_auto_trig_cmd(wmi_unified_t wmi_handle, 663 struct sta_uapsd_trig_params *param) 664 { 665 if (wmi_handle->ops->send_set_sta_uapsd_auto_trig_cmd) 666 return wmi_handle->ops->send_set_sta_uapsd_auto_trig_cmd(wmi_handle, 667 param); 668 669 return QDF_STATUS_E_FAILURE; 670 } 671 672 QDF_STATUS 673 wmi_unified_set_thermal_mgmt_cmd(wmi_unified_t wmi_handle, 674 struct thermal_cmd_params *thermal_info) 675 { 676 if (wmi_handle->ops->send_set_thermal_mgmt_cmd) 677 return wmi_handle->ops->send_set_thermal_mgmt_cmd(wmi_handle, 678 thermal_info); 679 680 return QDF_STATUS_E_FAILURE; 681 } 682 683 QDF_STATUS 684 wmi_unified_lro_config_cmd(wmi_unified_t wmi_handle, 685 struct wmi_lro_config_cmd_t *wmi_lro_cmd) 686 { 687 if (wmi_handle->ops->send_lro_config_cmd) 688 return wmi_handle->ops->send_lro_config_cmd(wmi_handle, 689 wmi_lro_cmd); 690 691 return QDF_STATUS_E_FAILURE; 692 } 693 694 QDF_STATUS 695 wmi_unified_peer_rate_report_cmd( 696 wmi_unified_t wmi_handle, 697 struct wmi_peer_rate_report_params *rate_report_params) 698 { 699 if (wmi_handle->ops->send_peer_rate_report_cmd) 700 return wmi_handle->ops->send_peer_rate_report_cmd(wmi_handle, 701 rate_report_params); 702 703 return QDF_STATUS_E_FAILURE; 704 } 705 706 QDF_STATUS 707 wmi_unified_process_update_edca_param( 708 wmi_unified_t wmi_handle, 709 uint8_t vdev_id, 710 bool mu_edca_param, 711 struct wmi_host_wme_vparams wmm_vparams[WMI_MAX_NUM_AC]) 712 { 713 if (wmi_handle->ops->send_process_update_edca_param_cmd) 714 return wmi_handle->ops->send_process_update_edca_param_cmd(wmi_handle, 715 vdev_id, mu_edca_param, wmm_vparams); 716 717 return QDF_STATUS_E_FAILURE; 718 } 719 720 QDF_STATUS 721 wmi_unified_probe_rsp_tmpl_send_cmd( 722 wmi_unified_t wmi_handle, 723 uint8_t vdev_id, 724 struct wmi_probe_resp_params *probe_rsp_info) 725 { 726 if (wmi_handle->ops->send_probe_rsp_tmpl_send_cmd) 727 return wmi_handle->ops->send_probe_rsp_tmpl_send_cmd(wmi_handle, 728 vdev_id, probe_rsp_info); 729 730 return QDF_STATUS_E_FAILURE; 731 } 732 733 QDF_STATUS wmi_unified_setup_install_key_cmd(wmi_unified_t wmi_handle, 734 struct set_key_params *key_params) 735 { 736 if (wmi_handle->ops->send_setup_install_key_cmd) 737 return wmi_handle->ops->send_setup_install_key_cmd(wmi_handle, 738 key_params); 739 740 return QDF_STATUS_E_FAILURE; 741 } 742 743 QDF_STATUS wmi_unified_p2p_go_set_beacon_ie_cmd(wmi_unified_t wmi_handle, 744 uint32_t vdev_id, 745 uint8_t *p2p_ie) 746 { 747 if (wmi_handle->ops->send_p2p_go_set_beacon_ie_cmd) 748 return wmi_handle->ops->send_p2p_go_set_beacon_ie_cmd(wmi_handle, 749 vdev_id, p2p_ie); 750 751 return QDF_STATUS_E_FAILURE; 752 } 753 754 QDF_STATUS wmi_unified_scan_probe_setoui_cmd(wmi_unified_t wmi_handle, 755 struct scan_mac_oui *psetoui) 756 { 757 if (wmi_handle->ops->send_scan_probe_setoui_cmd) 758 return wmi_handle->ops->send_scan_probe_setoui_cmd(wmi_handle, 759 psetoui); 760 761 return QDF_STATUS_E_FAILURE; 762 } 763 764 #ifdef IPA_OFFLOAD 765 QDF_STATUS 766 wmi_unified_ipa_offload_control_cmd( 767 wmi_unified_t wmi_handle, 768 struct ipa_uc_offload_control_params *ipa_offload) 769 { 770 if (!wmi_handle) 771 return QDF_STATUS_E_FAILURE; 772 773 if (wmi_handle->ops->send_ipa_offload_control_cmd) 774 return wmi_handle->ops->send_ipa_offload_control_cmd(wmi_handle, 775 ipa_offload); 776 777 return QDF_STATUS_E_FAILURE; 778 } 779 #endif 780 781 QDF_STATUS wmi_unified_pno_stop_cmd(wmi_unified_t wmi_handle, uint8_t vdev_id) 782 { 783 if (wmi_handle->ops->send_pno_stop_cmd) 784 return wmi_handle->ops->send_pno_stop_cmd(wmi_handle, 785 vdev_id); 786 787 return QDF_STATUS_E_FAILURE; 788 } 789 790 QDF_STATUS wmi_unified_obss_disable_cmd(wmi_unified_t wmi_handle, 791 uint8_t vdev_id) 792 { 793 if (wmi_handle->ops->send_obss_disable_cmd) 794 return wmi_handle->ops->send_obss_disable_cmd(wmi_handle, 795 vdev_id); 796 797 return QDF_STATUS_E_FAILURE; 798 } 799 800 #ifdef FEATURE_WLAN_SCAN_PNO 801 QDF_STATUS wmi_unified_pno_start_cmd(wmi_unified_t wmi_handle, 802 struct pno_scan_req_params *pno) 803 { 804 if (wmi_handle->ops->send_pno_start_cmd) 805 return wmi_handle->ops->send_pno_start_cmd(wmi_handle, 806 pno); 807 808 return QDF_STATUS_E_FAILURE; 809 } 810 #endif 811 812 QDF_STATUS wmi_unified_nlo_mawc_cmd(wmi_unified_t wmi_handle, 813 struct nlo_mawc_params *params) 814 { 815 if (wmi_handle->ops->send_nlo_mawc_cmd) 816 return wmi_handle->ops->send_nlo_mawc_cmd(wmi_handle, params); 817 818 return QDF_STATUS_E_FAILURE; 819 } 820 821 #ifdef WLAN_FEATURE_LINK_LAYER_STATS 822 QDF_STATUS wmi_unified_process_ll_stats_clear_cmd(wmi_unified_t wmi_handle, 823 const struct ll_stats_clear_params *clear_req) 824 { 825 if (wmi_handle->ops->send_process_ll_stats_clear_cmd) 826 return wmi_handle->ops->send_process_ll_stats_clear_cmd(wmi_handle, 827 clear_req); 828 829 return QDF_STATUS_E_FAILURE; 830 } 831 832 QDF_STATUS wmi_unified_process_ll_stats_set_cmd(wmi_unified_t wmi_handle, 833 const struct ll_stats_set_params *set_req) 834 { 835 if (wmi_handle->ops->send_process_ll_stats_set_cmd) 836 return wmi_handle->ops->send_process_ll_stats_set_cmd(wmi_handle, 837 set_req); 838 839 return QDF_STATUS_E_FAILURE; 840 } 841 842 QDF_STATUS wmi_unified_process_ll_stats_get_cmd(wmi_unified_t wmi_handle, 843 const struct ll_stats_get_params *get_req) 844 { 845 if (wmi_handle->ops->send_process_ll_stats_get_cmd) 846 return wmi_handle->ops->send_process_ll_stats_get_cmd(wmi_handle, 847 get_req); 848 849 return QDF_STATUS_E_FAILURE; 850 } 851 852 #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION 853 QDF_STATUS wmi_process_unified_ll_stats_get_sta_cmd( 854 wmi_unified_t wmi_handle, 855 const struct ll_stats_get_params *get_req) 856 { 857 if (wmi_handle->ops->send_unified_ll_stats_get_sta_cmd) 858 return wmi_handle->ops->send_unified_ll_stats_get_sta_cmd( 859 wmi_handle, get_req); 860 861 return QDF_STATUS_E_FAILURE; 862 } 863 #endif 864 #endif /* WLAN_FEATURE_LINK_LAYER_STATS */ 865 866 QDF_STATUS wmi_unified_congestion_request_cmd(wmi_unified_t wmi_handle, 867 uint8_t vdev_id) 868 { 869 if (wmi_handle->ops->send_congestion_cmd) 870 return wmi_handle->ops->send_congestion_cmd(wmi_handle, 871 vdev_id); 872 873 return QDF_STATUS_E_FAILURE; 874 } 875 876 QDF_STATUS wmi_unified_snr_request_cmd(wmi_unified_t wmi_handle) 877 { 878 if (wmi_handle->ops->send_snr_request_cmd) 879 return wmi_handle->ops->send_snr_request_cmd(wmi_handle); 880 881 return QDF_STATUS_E_FAILURE; 882 } 883 884 QDF_STATUS wmi_unified_snr_cmd(wmi_unified_t wmi_handle, uint8_t vdev_id) 885 { 886 if (wmi_handle->ops->send_snr_cmd) 887 return wmi_handle->ops->send_snr_cmd(wmi_handle, 888 vdev_id); 889 890 return QDF_STATUS_E_FAILURE; 891 } 892 893 /** 894 * wmi_unified_link_status_req_cmd() - process link status request from UMAC 895 * @wmi_handle: wmi handle 896 * @params: get link status params 897 * 898 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 899 */ 900 QDF_STATUS wmi_unified_link_status_req_cmd(wmi_unified_t wmi_handle, 901 struct link_status_params *params) 902 { 903 if (wmi_handle->ops->send_link_status_req_cmd) 904 return wmi_handle->ops->send_link_status_req_cmd(wmi_handle, 905 params); 906 907 return QDF_STATUS_E_FAILURE; 908 } 909 910 #ifdef WLAN_SUPPORT_GREEN_AP 911 QDF_STATUS 912 wmi_unified_egap_conf_params_cmd(wmi_unified_t wmi_handle, 913 struct wlan_green_ap_egap_params *egap_params) 914 { 915 if (wmi_handle->ops->send_egap_conf_params_cmd) 916 return wmi_handle->ops->send_egap_conf_params_cmd(wmi_handle, 917 egap_params); 918 919 return QDF_STATUS_E_FAILURE; 920 } 921 #endif 922 923 QDF_STATUS wmi_unified_csa_offload_enable(wmi_unified_t wmi_handle, 924 uint8_t vdev_id) 925 { 926 if (wmi_handle->ops->send_csa_offload_enable_cmd) 927 return wmi_handle->ops->send_csa_offload_enable_cmd(wmi_handle, 928 vdev_id); 929 930 return QDF_STATUS_E_FAILURE; 931 } 932 933 #ifdef WLAN_FEATURE_CIF_CFR 934 QDF_STATUS 935 wmi_unified_oem_dma_ring_cfg(wmi_unified_t wmi_handle, 936 wmi_oem_dma_ring_cfg_req_fixed_param *cfg) 937 { 938 if (wmi_handle->ops->send_oem_dma_cfg_cmd) 939 return wmi_handle->ops->send_oem_dma_cfg_cmd(wmi_handle, cfg); 940 941 return QDF_STATUS_E_FAILURE; 942 } 943 #endif 944 945 QDF_STATUS wmi_unified_start_oem_data_cmd(wmi_unified_t wmi_handle, 946 uint32_t data_len, 947 uint8_t *data) 948 { 949 if (wmi_handle->ops->send_start_oem_data_cmd) 950 return wmi_handle->ops->send_start_oem_data_cmd(wmi_handle, 951 data_len, 952 data); 953 954 return QDF_STATUS_E_FAILURE; 955 } 956 957 #ifdef FEATURE_OEM_DATA 958 QDF_STATUS wmi_unified_start_oemv2_data_cmd(wmi_unified_t wmi_handle, 959 struct oem_data *params) 960 { 961 if (wmi_handle->ops->send_start_oemv2_data_cmd) 962 return wmi_handle->ops->send_start_oemv2_data_cmd(wmi_handle, 963 params); 964 965 return QDF_STATUS_E_FAILURE; 966 } 967 #endif 968 969 QDF_STATUS 970 wmi_unified_dfs_phyerr_filter_offload_en_cmd(wmi_unified_t wmi_handle, 971 bool dfs_phyerr_filter_offload) 972 { 973 if (wmi_handle->ops->send_dfs_phyerr_filter_offload_en_cmd) 974 return wmi_handle->ops->send_dfs_phyerr_filter_offload_en_cmd(wmi_handle, 975 dfs_phyerr_filter_offload); 976 977 return QDF_STATUS_E_FAILURE; 978 } 979 980 #if !defined(REMOVE_PKT_LOG) && defined(FEATURE_PKTLOG) 981 QDF_STATUS wmi_unified_pktlog_wmi_send_cmd(wmi_unified_t wmi_handle, 982 WMI_PKTLOG_EVENT pktlog_event, 983 uint32_t cmd_id, 984 uint8_t user_triggered) 985 { 986 if (wmi_handle->ops->send_pktlog_wmi_send_cmd) 987 return wmi_handle->ops->send_pktlog_wmi_send_cmd(wmi_handle, 988 pktlog_event, cmd_id, user_triggered); 989 990 return QDF_STATUS_E_FAILURE; 991 } 992 #endif /* !REMOVE_PKT_LOG && FEATURE_PKTLOG */ 993 994 QDF_STATUS wmi_unified_stats_ext_req_cmd(wmi_unified_t wmi_handle, 995 struct stats_ext_params *preq) 996 { 997 if (wmi_handle->ops->send_stats_ext_req_cmd) 998 return wmi_handle->ops->send_stats_ext_req_cmd(wmi_handle, 999 preq); 1000 1001 return QDF_STATUS_E_FAILURE; 1002 } 1003 1004 QDF_STATUS wmi_unified_process_dhcpserver_offload_cmd( 1005 wmi_unified_t wmi_handle, 1006 struct dhcp_offload_info_params *params) 1007 { 1008 if (wmi_handle->ops->send_process_dhcpserver_offload_cmd) 1009 return wmi_handle->ops->send_process_dhcpserver_offload_cmd(wmi_handle, 1010 params); 1011 1012 return QDF_STATUS_E_FAILURE; 1013 } 1014 1015 QDF_STATUS wmi_unified_send_regdomain_info_to_fw_cmd(wmi_unified_t wmi_handle, 1016 uint32_t reg_dmn, 1017 uint16_t regdmn2G, 1018 uint16_t regdmn5G, 1019 uint8_t ctl2G, 1020 uint8_t ctl5G) 1021 { 1022 if (wmi_handle->ops->send_regdomain_info_to_fw_cmd) 1023 return wmi_handle->ops->send_regdomain_info_to_fw_cmd(wmi_handle, 1024 reg_dmn, regdmn2G, 1025 regdmn5G, ctl2G, 1026 ctl5G); 1027 1028 return QDF_STATUS_E_FAILURE; 1029 } 1030 1031 QDF_STATUS 1032 wmi_unified_cfg_action_frm_tb_ppdu_cmd( 1033 wmi_unified_t wmi_handle, 1034 struct cfg_action_frm_tb_ppdu_param *cfg_info) 1035 { 1036 if (wmi_handle->ops->send_cfg_action_frm_tb_ppdu_cmd) 1037 return wmi_handle->ops->send_cfg_action_frm_tb_ppdu_cmd( 1038 wmi_handle, cfg_info); 1039 1040 return QDF_STATUS_E_FAILURE; 1041 } 1042 1043 QDF_STATUS wmi_unified_save_fw_version_cmd(wmi_unified_t wmi_handle, 1044 void *evt_buf) 1045 { 1046 if (wmi_handle->ops->save_fw_version_cmd) 1047 return wmi_handle->ops->save_fw_version_cmd(wmi_handle, 1048 evt_buf); 1049 1050 return QDF_STATUS_E_FAILURE; 1051 } 1052 1053 QDF_STATUS wmi_unified_log_supported_evt_cmd(wmi_unified_t wmi_handle, 1054 uint8_t *event, 1055 uint32_t len) 1056 { 1057 if (wmi_handle->ops->send_log_supported_evt_cmd) 1058 return wmi_handle->ops->send_log_supported_evt_cmd(wmi_handle, 1059 event, len); 1060 1061 return QDF_STATUS_E_FAILURE; 1062 } 1063 1064 void wmi_send_time_stamp_sync_cmd_tlv(wmi_unified_t wmi_handle) 1065 { 1066 if (wmi_handle->ops->send_time_stamp_sync_cmd) 1067 wmi_handle->ops->send_time_stamp_sync_cmd(wmi_handle); 1068 1069 } 1070 1071 QDF_STATUS 1072 wmi_unified_enable_specific_fw_logs_cmd(wmi_unified_t wmi_handle, 1073 struct wmi_wifi_start_log *start_log) 1074 { 1075 if (wmi_handle->ops->send_enable_specific_fw_logs_cmd) 1076 return wmi_handle->ops->send_enable_specific_fw_logs_cmd(wmi_handle, 1077 start_log); 1078 1079 return QDF_STATUS_E_FAILURE; 1080 } 1081 1082 QDF_STATUS wmi_unified_flush_logs_to_fw_cmd(wmi_unified_t wmi_handle) 1083 { 1084 if (wmi_handle->ops->send_flush_logs_to_fw_cmd) 1085 return wmi_handle->ops->send_flush_logs_to_fw_cmd(wmi_handle); 1086 1087 return QDF_STATUS_E_FAILURE; 1088 } 1089 1090 QDF_STATUS wmi_unified_fw_test_cmd(wmi_unified_t wmi_handle, 1091 struct set_fwtest_params *wmi_fwtest) 1092 { 1093 if (wmi_handle->ops->send_fw_test_cmd) 1094 return wmi_handle->ops->send_fw_test_cmd(wmi_handle, 1095 wmi_fwtest); 1096 1097 return QDF_STATUS_E_FAILURE; 1098 1099 } 1100 1101 QDF_STATUS wmi_unified_wfa_test_cmd(wmi_unified_t wmi_handle, 1102 struct set_wfatest_params *wmi_wfatest) 1103 { 1104 if (wmi_handle->ops->send_wfa_test_cmd) 1105 return wmi_handle->ops->send_wfa_test_cmd(wmi_handle, 1106 wmi_wfatest); 1107 1108 return QDF_STATUS_E_FAILURE; 1109 } 1110 1111 QDF_STATUS wmi_unified_unit_test_cmd(wmi_unified_t wmi_handle, 1112 struct wmi_unit_test_cmd *wmi_utest) 1113 { 1114 if (wmi_handle->ops->send_unit_test_cmd) 1115 return wmi_handle->ops->send_unit_test_cmd(wmi_handle, 1116 wmi_utest); 1117 1118 return QDF_STATUS_E_FAILURE; 1119 } 1120 1121 #ifdef FEATURE_WLAN_APF 1122 QDF_STATUS 1123 wmi_unified_set_active_apf_mode_cmd(wmi_unified_t wmi, uint8_t vdev_id, 1124 enum wmi_host_active_apf_mode ucast_mode, 1125 enum wmi_host_active_apf_mode 1126 mcast_bcast_mode) 1127 { 1128 if (wmi->ops->send_set_active_apf_mode_cmd) 1129 return wmi->ops->send_set_active_apf_mode_cmd(wmi, vdev_id, 1130 ucast_mode, 1131 mcast_bcast_mode); 1132 return QDF_STATUS_E_FAILURE; 1133 } 1134 1135 QDF_STATUS 1136 wmi_unified_send_apf_enable_cmd(wmi_unified_t wmi, 1137 uint32_t vdev_id, bool enable) 1138 { 1139 if (wmi->ops->send_apf_enable_cmd) 1140 return wmi->ops->send_apf_enable_cmd(wmi, vdev_id, enable); 1141 return QDF_STATUS_E_FAILURE; 1142 } 1143 1144 QDF_STATUS 1145 wmi_unified_send_apf_write_work_memory_cmd(wmi_unified_t wmi, 1146 struct wmi_apf_write_memory_params 1147 *write_params) 1148 { 1149 if (wmi->ops->send_apf_write_work_memory_cmd) 1150 return wmi->ops->send_apf_write_work_memory_cmd(wmi, 1151 write_params); 1152 1153 return QDF_STATUS_E_FAILURE; 1154 } 1155 1156 QDF_STATUS 1157 wmi_unified_send_apf_read_work_memory_cmd(wmi_unified_t wmi, 1158 struct wmi_apf_read_memory_params 1159 *read_params) 1160 { 1161 if (wmi->ops->send_apf_read_work_memory_cmd) 1162 return wmi->ops->send_apf_read_work_memory_cmd(wmi, 1163 read_params); 1164 1165 return QDF_STATUS_E_FAILURE; 1166 } 1167 1168 QDF_STATUS 1169 wmi_extract_apf_read_memory_resp_event(wmi_unified_t wmi, void *evt_buf, 1170 struct wmi_apf_read_memory_resp_event_params 1171 *read_mem_evt) 1172 { 1173 if (wmi->ops->extract_apf_read_memory_resp_event) 1174 return wmi->ops->extract_apf_read_memory_resp_event(wmi, 1175 evt_buf, 1176 read_mem_evt); 1177 1178 return QDF_STATUS_E_FAILURE; 1179 } 1180 #endif /* FEATURE_WLAN_APF */ 1181 1182 QDF_STATUS 1183 wmi_unified_pdev_fips_cmd_send(wmi_unified_t wmi_handle, 1184 struct fips_params *param) 1185 { 1186 if (wmi_handle->ops->send_pdev_fips_cmd) 1187 return wmi_handle->ops->send_pdev_fips_cmd(wmi_handle, param); 1188 1189 return QDF_STATUS_E_FAILURE; 1190 } 1191 1192 #ifdef WLAN_FEATURE_FIPS_BER_CCMGCM 1193 QDF_STATUS 1194 wmi_unified_pdev_fips_extend_cmd_send(wmi_unified_t wmi_handle, 1195 struct fips_extend_params *param) 1196 { 1197 if (wmi_handle->ops->send_pdev_fips_extend_cmd) 1198 return wmi_handle->ops->send_pdev_fips_extend_cmd(wmi_handle, 1199 param); 1200 1201 return QDF_STATUS_E_FAILURE; 1202 } 1203 1204 QDF_STATUS 1205 wmi_unified_pdev_fips_mode_set_cmd(wmi_unified_t wmi_handle, 1206 struct fips_mode_set_params *param) 1207 { 1208 if (wmi_handle->ops->send_pdev_fips_mode_set_cmd) 1209 return wmi_handle->ops->send_pdev_fips_mode_set_cmd(wmi_handle, 1210 param); 1211 1212 return QDF_STATUS_E_FAILURE; 1213 } 1214 #endif 1215 1216 #ifdef WLAN_FEATURE_DISA 1217 QDF_STATUS 1218 wmi_unified_encrypt_decrypt_send_cmd(void *wmi_hdl, 1219 struct disa_encrypt_decrypt_req_params 1220 *params) 1221 { 1222 wmi_unified_t wmi_handle = (wmi_unified_t)wmi_hdl; 1223 1224 if (wmi_handle->ops->send_encrypt_decrypt_send_cmd) 1225 return wmi_handle->ops->send_encrypt_decrypt_send_cmd(wmi_handle 1226 , params); 1227 1228 return QDF_STATUS_E_FAILURE; 1229 } 1230 #endif /* WLAN_FEATURE_DISA */ 1231 1232 QDF_STATUS 1233 wmi_unified_wlan_profile_enable_cmd_send(wmi_unified_t wmi_handle, 1234 struct wlan_profile_params *param) 1235 { 1236 if (wmi_handle->ops->send_wlan_profile_enable_cmd) 1237 return wmi_handle->ops->send_wlan_profile_enable_cmd(wmi_handle, 1238 param); 1239 1240 return QDF_STATUS_E_FAILURE; 1241 } 1242 1243 QDF_STATUS 1244 wmi_unified_wlan_profile_trigger_cmd_send(wmi_unified_t wmi_handle, 1245 struct wlan_profile_params *param) 1246 { 1247 if (wmi_handle->ops->send_wlan_profile_trigger_cmd) 1248 return wmi_handle->ops->send_wlan_profile_trigger_cmd( 1249 wmi_handle, param); 1250 1251 return QDF_STATUS_E_FAILURE; 1252 } 1253 1254 QDF_STATUS 1255 wmi_unified_wlan_profile_hist_intvl_cmd_send(wmi_unified_t wmi_handle, 1256 struct wlan_profile_params *param) 1257 { 1258 if (wmi_handle->ops->send_wlan_profile_hist_intvl_cmd) 1259 return wmi_handle->ops->send_wlan_profile_hist_intvl_cmd( 1260 wmi_handle, param); 1261 1262 return QDF_STATUS_E_FAILURE; 1263 } 1264 1265 QDF_STATUS 1266 wmi_unified_set_chan_cmd_send(wmi_unified_t wmi_handle, 1267 struct channel_param *param) 1268 { 1269 if (wmi_handle->ops->send_pdev_set_chan_cmd) 1270 return wmi_handle->ops->send_pdev_set_chan_cmd(wmi_handle, 1271 param); 1272 1273 return QDF_STATUS_E_FAILURE; 1274 } 1275 1276 QDF_STATUS 1277 wmi_unified_set_ratepwr_table_cmd_send(wmi_unified_t wmi_handle, 1278 struct ratepwr_table_params *param) 1279 { 1280 if (wmi_handle->ops->send_set_ratepwr_table_cmd) 1281 return wmi_handle->ops->send_set_ratepwr_table_cmd(wmi_handle, 1282 param); 1283 1284 return QDF_STATUS_E_FAILURE; 1285 } 1286 1287 QDF_STATUS wmi_unified_get_ratepwr_table_cmd_send(wmi_unified_t wmi_handle) 1288 { 1289 if (wmi_handle->ops->send_get_ratepwr_table_cmd) 1290 return wmi_handle->ops->send_get_ratepwr_table_cmd(wmi_handle); 1291 1292 return QDF_STATUS_E_FAILURE; 1293 } 1294 1295 QDF_STATUS wmi_unified_set_ratepwr_chainmsk_cmd_send( 1296 wmi_unified_t wmi_handle, 1297 struct ratepwr_chainmsk_params *param) 1298 { 1299 if (wmi_handle->ops->send_set_ratepwr_chainmsk_cmd) 1300 return wmi_handle->ops->send_set_ratepwr_chainmsk_cmd( 1301 wmi_handle, param); 1302 1303 return QDF_STATUS_E_FAILURE; 1304 } 1305 1306 QDF_STATUS wmi_unified_set_macaddr_cmd_send(wmi_unified_t wmi_handle, 1307 struct macaddr_params *param) 1308 { 1309 if (wmi_handle->ops->send_set_macaddr_cmd) 1310 return wmi_handle->ops->send_set_macaddr_cmd(wmi_handle, param); 1311 1312 return QDF_STATUS_E_FAILURE; 1313 } 1314 1315 QDF_STATUS wmi_unified_pdev_scan_start_cmd_send(wmi_unified_t wmi_handle) 1316 { 1317 if (wmi_handle->ops->send_pdev_scan_start_cmd) 1318 return wmi_handle->ops->send_pdev_scan_start_cmd(wmi_handle); 1319 1320 return QDF_STATUS_E_FAILURE; 1321 } 1322 1323 QDF_STATUS wmi_unified_pdev_scan_end_cmd_send(wmi_unified_t wmi_handle) 1324 { 1325 if (wmi_handle->ops->send_pdev_scan_end_cmd) 1326 return wmi_handle->ops->send_pdev_scan_end_cmd(wmi_handle); 1327 1328 return QDF_STATUS_E_FAILURE; 1329 } 1330 1331 QDF_STATUS 1332 wmi_unified_set_acparams_cmd_send(wmi_unified_t wmi_handle, 1333 struct acparams_params *param) 1334 { 1335 if (wmi_handle->ops->send_set_acparams_cmd) 1336 return wmi_handle->ops->send_set_acparams_cmd(wmi_handle, 1337 param); 1338 1339 return QDF_STATUS_E_FAILURE; 1340 } 1341 1342 QDF_STATUS wmi_unified_set_vap_dscp_tid_map_cmd_send( 1343 wmi_unified_t wmi_handle, 1344 struct vap_dscp_tid_map_params *param) 1345 { 1346 if (wmi_handle->ops->send_set_vap_dscp_tid_map_cmd) 1347 return wmi_handle->ops->send_set_vap_dscp_tid_map_cmd( 1348 wmi_handle, param); 1349 1350 return QDF_STATUS_E_FAILURE; 1351 } 1352 1353 QDF_STATUS 1354 wmi_unified_proxy_ast_reserve_cmd_send(wmi_unified_t wmi_handle, 1355 struct proxy_ast_reserve_params *param) 1356 { 1357 if (wmi_handle->ops->send_proxy_ast_reserve_cmd) 1358 return wmi_handle->ops->send_proxy_ast_reserve_cmd(wmi_handle, 1359 param); 1360 1361 return QDF_STATUS_E_FAILURE; 1362 } 1363 1364 QDF_STATUS wmi_unified_set_bridge_mac_addr_cmd_send( 1365 wmi_unified_t wmi_handle, 1366 struct set_bridge_mac_addr_params *param) 1367 { 1368 if (wmi_handle->ops->send_set_bridge_mac_addr_cmd) 1369 return wmi_handle->ops->send_set_bridge_mac_addr_cmd(wmi_handle, 1370 param); 1371 1372 return QDF_STATUS_E_FAILURE; 1373 } 1374 1375 QDF_STATUS wmi_unified_phyerr_enable_cmd_send(wmi_unified_t wmi_handle) 1376 { 1377 if (wmi_handle->ops->send_phyerr_enable_cmd) 1378 return wmi_handle->ops->send_phyerr_enable_cmd(wmi_handle); 1379 1380 return QDF_STATUS_E_FAILURE; 1381 } 1382 1383 QDF_STATUS wmi_unified_phyerr_disable_cmd_send(wmi_unified_t wmi_handle) 1384 { 1385 if (wmi_handle->ops->send_phyerr_disable_cmd) 1386 return wmi_handle->ops->send_phyerr_disable_cmd(wmi_handle); 1387 1388 return QDF_STATUS_E_FAILURE; 1389 } 1390 1391 QDF_STATUS 1392 wmi_unified_smart_ant_enable_tx_feedback_cmd_send( 1393 wmi_unified_t wmi_handle, 1394 struct smart_ant_enable_tx_feedback_params *param) 1395 { 1396 if (wmi_handle->ops->send_smart_ant_enable_tx_feedback_cmd) 1397 return wmi_handle->ops->send_smart_ant_enable_tx_feedback_cmd( 1398 wmi_handle, param); 1399 1400 return QDF_STATUS_E_FAILURE; 1401 } 1402 qdf_export_symbol(wmi_unified_smart_ant_enable_tx_feedback_cmd_send); 1403 1404 #ifdef WLAN_IOT_SIM_SUPPORT 1405 QDF_STATUS 1406 wmi_unified_simulation_test_cmd_send( 1407 wmi_unified_t wmi_handle, 1408 struct simulation_test_params *param) 1409 { 1410 if (wmi_handle->ops->send_simulation_test_cmd) 1411 return wmi_handle->ops->send_simulation_test_cmd( 1412 wmi_handle, param); 1413 1414 return QDF_STATUS_E_FAILURE; 1415 } 1416 qdf_export_symbol(wmi_unified_simulation_test_cmd_send); 1417 #endif 1418 1419 QDF_STATUS 1420 wmi_unified_vdev_spectral_configure_cmd_send( 1421 wmi_unified_t wmi_handle, 1422 struct vdev_spectral_configure_params *param) 1423 { 1424 if (wmi_handle->ops->send_vdev_spectral_configure_cmd) 1425 return wmi_handle->ops->send_vdev_spectral_configure_cmd( 1426 wmi_handle, param); 1427 1428 return QDF_STATUS_E_FAILURE; 1429 } 1430 1431 QDF_STATUS wmi_unified_vdev_spectral_enable_cmd_send( 1432 wmi_unified_t wmi_handle, 1433 struct vdev_spectral_enable_params *param) 1434 { 1435 if (wmi_handle->ops->send_vdev_spectral_enable_cmd) 1436 return wmi_handle->ops->send_vdev_spectral_enable_cmd( 1437 wmi_handle, param); 1438 1439 return QDF_STATUS_E_FAILURE; 1440 } 1441 1442 QDF_STATUS wmi_unified_bss_chan_info_request_cmd_send( 1443 wmi_unified_t wmi_handle, 1444 struct bss_chan_info_request_params *param) 1445 { 1446 if (wmi_handle->ops->send_bss_chan_info_request_cmd) 1447 return wmi_handle->ops->send_bss_chan_info_request_cmd( 1448 wmi_handle, param); 1449 1450 return QDF_STATUS_E_FAILURE; 1451 } 1452 1453 QDF_STATUS wmi_unified_thermal_mitigation_param_cmd_send( 1454 wmi_unified_t wmi_handle, 1455 struct thermal_mitigation_params *param) 1456 { 1457 if (wmi_handle->ops->send_thermal_mitigation_param_cmd) 1458 return wmi_handle->ops->send_thermal_mitigation_param_cmd( 1459 wmi_handle, param); 1460 1461 return QDF_STATUS_E_FAILURE; 1462 } 1463 1464 #ifdef HEALTH_MON_SUPPORT 1465 QDF_STATUS wmi_extract_health_mon_event( 1466 wmi_unified_t wmi_handle, 1467 void *ev, 1468 struct wmi_health_mon_params *param) 1469 { 1470 if (wmi_handle->ops->extract_health_mon_init_done_info_event) 1471 return wmi_handle->ops->extract_health_mon_init_done_info_event( 1472 wmi_handle, ev, param); 1473 1474 return QDF_STATUS_E_FAILURE; 1475 } 1476 #endif /* HEALTH_MON_SUPPORT */ 1477 1478 QDF_STATUS 1479 wmi_unified_vdev_set_fwtest_param_cmd_send(wmi_unified_t wmi_handle, 1480 struct set_fwtest_params *param) 1481 { 1482 if (wmi_handle->ops->send_vdev_set_fwtest_param_cmd) 1483 return wmi_handle->ops->send_vdev_set_fwtest_param_cmd( 1484 wmi_handle, param); 1485 1486 return QDF_STATUS_E_FAILURE; 1487 } 1488 1489 QDF_STATUS 1490 wmi_unified_vdev_set_custom_aggr_size_cmd_send( 1491 wmi_unified_t wmi_handle, 1492 struct set_custom_aggr_size_params *param) 1493 { 1494 if (wmi_handle->ops->send_vdev_set_custom_aggr_size_cmd) 1495 return wmi_handle->ops->send_vdev_set_custom_aggr_size_cmd( 1496 wmi_handle, param); 1497 1498 return QDF_STATUS_E_FAILURE; 1499 } 1500 1501 QDF_STATUS 1502 wmi_unified_vdev_set_qdepth_thresh_cmd_send( 1503 wmi_unified_t wmi_handle, 1504 struct set_qdepth_thresh_params *param) 1505 { 1506 if (wmi_handle->ops->send_vdev_set_qdepth_thresh_cmd) 1507 return wmi_handle->ops->send_vdev_set_qdepth_thresh_cmd( 1508 wmi_handle, param); 1509 1510 return QDF_STATUS_E_FAILURE; 1511 } 1512 1513 #ifdef WLAN_REG_PARTIAL_OFFLOAD 1514 QDF_STATUS wmi_unified_pdev_set_regdomain_cmd_send( 1515 wmi_unified_t wmi_handle, 1516 struct pdev_set_regdomain_params *param) 1517 { 1518 if (wmi_handle->ops->send_pdev_set_regdomain_cmd) 1519 return wmi_handle->ops->send_pdev_set_regdomain_cmd(wmi_handle, 1520 param); 1521 1522 return QDF_STATUS_E_FAILURE; 1523 } 1524 #endif 1525 1526 QDF_STATUS 1527 wmi_unified_set_beacon_filter_cmd_send( 1528 wmi_unified_t wmi_handle, 1529 struct set_beacon_filter_params *param) 1530 { 1531 if (wmi_handle->ops->send_set_beacon_filter_cmd) 1532 return wmi_handle->ops->send_set_beacon_filter_cmd(wmi_handle, 1533 param); 1534 1535 return QDF_STATUS_E_FAILURE; 1536 } 1537 1538 QDF_STATUS wmi_unified_remove_beacon_filter_cmd_send( 1539 wmi_unified_t wmi_handle, 1540 struct remove_beacon_filter_params *param) 1541 { 1542 if (wmi_handle->ops->send_remove_beacon_filter_cmd) 1543 return wmi_handle->ops->send_remove_beacon_filter_cmd( 1544 wmi_handle, param); 1545 1546 return QDF_STATUS_E_FAILURE; 1547 } 1548 1549 /** 1550 * wmi_unified_get_pn_send_cmd() - send command to get PN for peer 1551 * @wmi_hdl: wmi handle 1552 * @wmi_peer_tx_pn_request_cmd_fixed_param: pn request params 1553 * 1554 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 1555 */ 1556 QDF_STATUS wmi_unified_get_pn_send_cmd(wmi_unified_t wmi_hdl, 1557 struct peer_request_pn_param *pn_params) 1558 { 1559 if (wmi_hdl->ops->send_pdev_get_pn_cmd) 1560 return wmi_hdl->ops->send_pdev_get_pn_cmd(wmi_hdl, 1561 pn_params); 1562 1563 return QDF_STATUS_E_FAILURE; 1564 } 1565 1566 QDF_STATUS wmi_unified_get_rxpn_send_cmd( 1567 wmi_unified_t wmi_hdl, 1568 struct peer_request_rxpn_param *pn_params) 1569 { 1570 if (wmi_hdl->ops->send_pdev_get_rxpn_cmd) 1571 return wmi_hdl->ops->send_pdev_get_rxpn_cmd(wmi_hdl, 1572 pn_params); 1573 1574 return QDF_STATUS_E_FAILURE; 1575 } 1576 qdf_export_symbol(wmi_unified_get_rxpn_send_cmd); 1577 1578 /** 1579 * wmi_unified_mgmt_cmd_send() - WMI mgmt cmd function 1580 * @param wmi_handle : handle to WMI. 1581 * @param macaddr : MAC address 1582 * @param param : pointer to hold mgmt parameter 1583 * 1584 * @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 1585 */ 1586 #if 0 1587 QDF_STATUS wmi_unified_mgmt_cmd_send(void *wmi_hdl, 1588 uint8_t macaddr[QDF_MAC_ADDR_SIZE], 1589 struct mgmt_params *param) 1590 { 1591 wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl; 1592 1593 if (wmi_handle->ops->send_mgmt_cmd) 1594 return wmi_handle->ops->send_mgmt_cmd(wmi_handle, 1595 macaddr, param); 1596 1597 return QDF_STATUS_E_FAILURE; 1598 } 1599 #endif 1600 1601 QDF_STATUS wmi_unified_addba_clearresponse_cmd_send( 1602 wmi_unified_t wmi_handle, 1603 uint8_t macaddr[QDF_MAC_ADDR_SIZE], 1604 struct addba_clearresponse_params *param) 1605 { 1606 if (wmi_handle->ops->send_addba_clearresponse_cmd) 1607 return wmi_handle->ops->send_addba_clearresponse_cmd(wmi_handle, 1608 macaddr, param); 1609 1610 return QDF_STATUS_E_FAILURE; 1611 } 1612 1613 QDF_STATUS 1614 wmi_unified_addba_send_cmd_send(wmi_unified_t wmi_handle, 1615 uint8_t macaddr[QDF_MAC_ADDR_SIZE], 1616 struct addba_send_params *param) 1617 { 1618 if (wmi_handle->ops->send_addba_send_cmd) 1619 return wmi_handle->ops->send_addba_send_cmd(wmi_handle, 1620 macaddr, param); 1621 1622 return QDF_STATUS_E_FAILURE; 1623 } 1624 1625 QDF_STATUS 1626 wmi_unified_delba_send_cmd_send(wmi_unified_t wmi_handle, 1627 uint8_t macaddr[QDF_MAC_ADDR_SIZE], 1628 struct delba_send_params *param) 1629 { 1630 if (wmi_handle->ops->send_delba_send_cmd) 1631 return wmi_handle->ops->send_delba_send_cmd(wmi_handle, 1632 macaddr, param); 1633 1634 return QDF_STATUS_E_FAILURE; 1635 } 1636 1637 QDF_STATUS 1638 wmi_unified_addba_setresponse_cmd_send(wmi_unified_t wmi_handle, 1639 uint8_t macaddr[QDF_MAC_ADDR_SIZE], 1640 struct addba_setresponse_params *param) 1641 { 1642 if (wmi_handle->ops->send_addba_setresponse_cmd) 1643 return wmi_handle->ops->send_addba_setresponse_cmd(wmi_handle, 1644 macaddr, param); 1645 1646 return QDF_STATUS_E_FAILURE; 1647 } 1648 1649 QDF_STATUS 1650 wmi_unified_singleamsdu_cmd_send(wmi_unified_t wmi_handle, 1651 uint8_t macaddr[QDF_MAC_ADDR_SIZE], 1652 struct singleamsdu_params *param) 1653 { 1654 if (wmi_handle->ops->send_singleamsdu_cmd) 1655 return wmi_handle->ops->send_singleamsdu_cmd(wmi_handle, 1656 macaddr, param); 1657 1658 return QDF_STATUS_E_FAILURE; 1659 } 1660 1661 QDF_STATUS 1662 wmi_unified_mu_scan_cmd_send(wmi_unified_t wmi_handle, 1663 struct mu_scan_params *param) 1664 { 1665 if (wmi_handle->ops->send_mu_scan_cmd) 1666 return wmi_handle->ops->send_mu_scan_cmd(wmi_handle, param); 1667 1668 return QDF_STATUS_E_FAILURE; 1669 } 1670 1671 QDF_STATUS 1672 wmi_unified_lteu_config_cmd_send(wmi_unified_t wmi_handle, 1673 struct lteu_config_params *param) 1674 { 1675 if (wmi_handle->ops->send_lteu_config_cmd) 1676 return wmi_handle->ops->send_lteu_config_cmd(wmi_handle, param); 1677 1678 return QDF_STATUS_E_FAILURE; 1679 } 1680 1681 QDF_STATUS 1682 wmi_unified_set_psmode_cmd_send(wmi_unified_t wmi_handle, 1683 struct set_ps_mode_params *param) 1684 { 1685 if (wmi_handle->ops->send_set_ps_mode_cmd) 1686 return wmi_handle->ops->send_set_ps_mode_cmd(wmi_handle, param); 1687 1688 return QDF_STATUS_E_FAILURE; 1689 } 1690 1691 QDF_STATUS 1692 wmi_unified_init_cmd_send(wmi_unified_t wmi_handle, 1693 struct wmi_init_cmd_param *param) 1694 { 1695 if (wmi_handle->ops->init_cmd_send) 1696 return wmi_handle->ops->init_cmd_send(wmi_handle, param); 1697 1698 return QDF_STATUS_E_FAILURE; 1699 } 1700 1701 QDF_STATUS wmi_save_service_bitmap(wmi_unified_t wmi_handle, void *evt_buf, 1702 void *bitmap_buf) 1703 { 1704 if (wmi_handle->ops->save_service_bitmap) { 1705 return wmi_handle->ops->save_service_bitmap(wmi_handle, evt_buf, 1706 bitmap_buf); 1707 } 1708 return QDF_STATUS_E_FAILURE; 1709 } 1710 1711 QDF_STATUS wmi_save_ext_service_bitmap(wmi_unified_t wmi_handle, void *evt_buf, 1712 void *bitmap_buf) 1713 { 1714 if (wmi_handle->ops->save_ext_service_bitmap) { 1715 return wmi_handle->ops->save_ext_service_bitmap(wmi_handle, 1716 evt_buf, bitmap_buf); 1717 } 1718 return QDF_STATUS_E_FAILURE; 1719 } 1720 1721 QDF_STATUS wmi_save_fw_version(wmi_unified_t wmi_handle, void *evt_buf) 1722 { 1723 if (wmi_handle->ops->save_fw_version) { 1724 wmi_handle->ops->save_fw_version(wmi_handle, evt_buf); 1725 return 0; 1726 } 1727 return QDF_STATUS_E_FAILURE; 1728 } 1729 1730 QDF_STATUS 1731 wmi_check_and_update_fw_version(wmi_unified_t wmi_handle, void *evt_buf) 1732 { 1733 if (wmi_handle->ops->check_and_update_fw_version) 1734 return wmi_handle->ops->check_and_update_fw_version(wmi_handle, 1735 evt_buf); 1736 1737 return QDF_STATUS_E_FAILURE; 1738 } 1739 1740 bool wmi_service_enabled(wmi_unified_t wmi_handle, uint32_t service_id) 1741 { 1742 if ((service_id < wmi_services_max) && 1743 (wmi_handle->services[service_id] != WMI_SERVICE_UNAVAILABLE)) { 1744 if (wmi_handle->ops->is_service_enabled) { 1745 return wmi_handle->ops->is_service_enabled(wmi_handle, 1746 wmi_handle->services[service_id]); 1747 } 1748 } else { 1749 wmi_info("Service %d not supported", service_id); 1750 } 1751 1752 return false; 1753 } 1754 1755 QDF_STATUS 1756 wmi_get_target_cap_from_service_ready( 1757 wmi_unified_t wmi_handle, void *evt_buf, 1758 struct wlan_psoc_target_capability_info *ev) 1759 { 1760 if (wmi_handle->ops->get_target_cap_from_service_ready) 1761 return wmi_handle->ops->get_target_cap_from_service_ready( 1762 wmi_handle, evt_buf, ev); 1763 1764 return QDF_STATUS_E_FAILURE; 1765 } 1766 1767 QDF_STATUS wmi_extract_fw_version(wmi_unified_t wmi_handle, void *evt_buf, 1768 struct wmi_host_fw_ver *fw_ver) 1769 { 1770 if (wmi_handle->ops->extract_fw_version) 1771 return wmi_handle->ops->extract_fw_version(wmi_handle, 1772 evt_buf, fw_ver); 1773 1774 return QDF_STATUS_E_FAILURE; 1775 } 1776 1777 QDF_STATUS wmi_extract_fw_abi_version(wmi_unified_t wmi_handle, void *evt_buf, 1778 struct wmi_host_fw_abi_ver *fw_ver) 1779 { 1780 if (wmi_handle->ops->extract_fw_abi_version) 1781 return wmi_handle->ops->extract_fw_abi_version(wmi_handle, 1782 evt_buf, fw_ver); 1783 1784 return QDF_STATUS_E_FAILURE; 1785 } 1786 1787 QDF_STATUS 1788 wmi_extract_hal_reg_cap(wmi_unified_t wmi_handle, void *evt_buf, 1789 struct wlan_psoc_hal_reg_capability *hal_reg_cap) 1790 { 1791 if (wmi_handle->ops->extract_hal_reg_cap) 1792 return wmi_handle->ops->extract_hal_reg_cap(wmi_handle, 1793 evt_buf, hal_reg_cap); 1794 1795 return QDF_STATUS_E_FAILURE; 1796 } 1797 1798 QDF_STATUS 1799 wmi_extract_hal_reg_cap_ext2( 1800 wmi_unified_t wmi_handle, void *evt_buf, uint8_t phy_idx, 1801 struct wlan_psoc_host_hal_reg_capabilities_ext2 *hal_reg_cap) 1802 { 1803 if (wmi_handle->ops->extract_hal_reg_cap_ext2) 1804 return wmi_handle->ops->extract_hal_reg_cap_ext2( 1805 wmi_handle, evt_buf, phy_idx, hal_reg_cap); 1806 1807 return QDF_STATUS_E_FAILURE; 1808 } 1809 1810 uint32_t 1811 wmi_extract_num_mem_reqs_from_service_ready( 1812 wmi_unified_t wmi_handle, 1813 void *evt_buf) 1814 { 1815 if (wmi_handle->ops->extract_num_mem_reqs) 1816 return wmi_handle->ops->extract_num_mem_reqs(wmi_handle, 1817 evt_buf); 1818 1819 return 0; 1820 } 1821 1822 QDF_STATUS 1823 wmi_extract_host_mem_req_from_service_ready(wmi_unified_t wmi_handle, 1824 void *evt_buf, 1825 host_mem_req *mem_reqs, 1826 uint32_t num_active_peers, 1827 uint32_t num_peers, 1828 enum wmi_fw_mem_prio fw_prio, 1829 uint16_t idx) 1830 { 1831 if (wmi_handle->ops->extract_host_mem_req) 1832 return wmi_handle->ops->extract_host_mem_req(wmi_handle, 1833 evt_buf, mem_reqs, num_active_peers, 1834 num_peers, fw_prio, idx); 1835 1836 return QDF_STATUS_E_FAILURE; 1837 } 1838 1839 uint32_t wmi_ready_extract_init_status(wmi_unified_t wmi_handle, void *ev) 1840 { 1841 if (wmi_handle->ops->ready_extract_init_status) 1842 return wmi_handle->ops->ready_extract_init_status(wmi_handle, 1843 ev); 1844 1845 1846 return 1; 1847 1848 } 1849 1850 QDF_STATUS wmi_ready_extract_mac_addr(wmi_unified_t wmi_handle, 1851 void *ev, uint8_t *macaddr) 1852 { 1853 if (wmi_handle->ops->ready_extract_mac_addr) 1854 return wmi_handle->ops->ready_extract_mac_addr(wmi_handle, 1855 ev, macaddr); 1856 1857 1858 return QDF_STATUS_E_FAILURE; 1859 } 1860 1861 wmi_host_mac_addr 1862 *wmi_ready_extract_mac_addr_list(wmi_unified_t wmi_handle, void *ev, 1863 uint8_t *num_mac_addr) 1864 { 1865 if (wmi_handle->ops->ready_extract_mac_addr_list) 1866 return wmi_handle->ops->ready_extract_mac_addr_list(wmi_handle, 1867 ev, num_mac_addr); 1868 1869 *num_mac_addr = 0; 1870 1871 return NULL; 1872 } 1873 1874 QDF_STATUS wmi_extract_ready_event_params( 1875 wmi_unified_t wmi_handle, void *evt_buf, 1876 struct wmi_host_ready_ev_param *ev_param) 1877 { 1878 if (wmi_handle->ops->extract_ready_event_params) 1879 return wmi_handle->ops->extract_ready_event_params(wmi_handle, 1880 evt_buf, ev_param); 1881 1882 return QDF_STATUS_E_FAILURE; 1883 } 1884 1885 uint8_t *wmi_extract_dbglog_data_len(wmi_unified_t wmi_handle, void *evt_buf, 1886 uint32_t *len) 1887 { 1888 if (wmi_handle->ops->extract_dbglog_data_len) 1889 return wmi_handle->ops->extract_dbglog_data_len(wmi_handle, 1890 evt_buf, len); 1891 1892 1893 return NULL; 1894 } 1895 qdf_export_symbol(wmi_extract_dbglog_data_len); 1896 1897 QDF_STATUS wmi_send_ext_resource_config(wmi_unified_t wmi_handle, 1898 wmi_host_ext_resource_config *ext_cfg) 1899 { 1900 if (wmi_handle->ops->send_ext_resource_config) 1901 return wmi_handle->ops->send_ext_resource_config(wmi_handle, 1902 ext_cfg); 1903 1904 return QDF_STATUS_E_FAILURE; 1905 } 1906 1907 QDF_STATUS 1908 wmi_unified_rtt_meas_req_test_cmd_send(wmi_unified_t wmi_handle, 1909 struct rtt_meas_req_test_params *param) 1910 { 1911 if (wmi_handle->ops->send_rtt_meas_req_test_cmd) 1912 return wmi_handle->ops->send_rtt_meas_req_test_cmd(wmi_handle, 1913 param); 1914 1915 return QDF_STATUS_E_FAILURE; 1916 } 1917 1918 QDF_STATUS 1919 wmi_unified_rtt_meas_req_cmd_send(wmi_unified_t wmi_handle, 1920 struct rtt_meas_req_params *param) 1921 { 1922 if (wmi_handle->ops->send_rtt_meas_req_cmd) 1923 return wmi_handle->ops->send_rtt_meas_req_cmd(wmi_handle, 1924 param); 1925 1926 return QDF_STATUS_E_FAILURE; 1927 } 1928 1929 QDF_STATUS wmi_unified_lci_set_cmd_send(wmi_unified_t wmi_handle, 1930 struct lci_set_params *param) 1931 { 1932 if (wmi_handle->ops->send_lci_set_cmd) 1933 return wmi_handle->ops->send_lci_set_cmd(wmi_handle, param); 1934 1935 return QDF_STATUS_E_FAILURE; 1936 } 1937 1938 QDF_STATUS wmi_unified_lcr_set_cmd_send(wmi_unified_t wmi_handle, 1939 struct lcr_set_params *param) 1940 { 1941 if (wmi_handle->ops->send_lcr_set_cmd) 1942 return wmi_handle->ops->send_lcr_set_cmd(wmi_handle, param); 1943 1944 return QDF_STATUS_E_FAILURE; 1945 } 1946 1947 QDF_STATUS 1948 wmi_unified_rtt_keepalive_req_cmd_send(wmi_unified_t wmi_handle, 1949 struct rtt_keepalive_req_params *param) 1950 { 1951 if (wmi_handle->ops->send_rtt_keepalive_req_cmd) 1952 return wmi_handle->ops->send_rtt_keepalive_req_cmd(wmi_handle, 1953 param); 1954 1955 return QDF_STATUS_E_FAILURE; 1956 } 1957 1958 QDF_STATUS wmi_unified_send_periodic_chan_stats_config_cmd( 1959 wmi_unified_t wmi_handle, 1960 struct periodic_chan_stats_params *param) 1961 { 1962 if (wmi_handle->ops->send_periodic_chan_stats_config_cmd) 1963 return wmi_handle->ops->send_periodic_chan_stats_config_cmd( 1964 wmi_handle, param); 1965 1966 return QDF_STATUS_E_FAILURE; 1967 } 1968 1969 QDF_STATUS 1970 wmi_send_get_user_position_cmd(wmi_unified_t wmi_handle, uint32_t value) 1971 { 1972 if (wmi_handle->ops->send_get_user_position_cmd) 1973 return wmi_handle->ops->send_get_user_position_cmd(wmi_handle, 1974 value); 1975 1976 return QDF_STATUS_E_FAILURE; 1977 } 1978 1979 QDF_STATUS 1980 wmi_send_get_peer_mumimo_tx_count_cmd(wmi_unified_t wmi_handle, uint32_t value) 1981 { 1982 if (wmi_handle->ops->send_get_peer_mumimo_tx_count_cmd) 1983 return wmi_handle->ops->send_get_peer_mumimo_tx_count_cmd( 1984 wmi_handle, value); 1985 1986 return QDF_STATUS_E_FAILURE; 1987 } 1988 1989 QDF_STATUS 1990 wmi_send_reset_peer_mumimo_tx_count_cmd(wmi_unified_t wmi_handle, 1991 uint32_t value) 1992 { 1993 if (wmi_handle->ops->send_reset_peer_mumimo_tx_count_cmd) 1994 return wmi_handle->ops->send_reset_peer_mumimo_tx_count_cmd( 1995 wmi_handle, value); 1996 1997 return QDF_STATUS_E_FAILURE; 1998 } 1999 2000 /* Extract - APIs */ 2001 2002 QDF_STATUS wmi_extract_ctl_failsafe_check_ev_param( 2003 wmi_unified_t wmi_handle, 2004 void *evt_buf, 2005 struct wmi_host_pdev_ctl_failsafe_event *param) 2006 { 2007 if (wmi_handle->ops->extract_ctl_failsafe_check_ev_param) 2008 return wmi_handle->ops->extract_ctl_failsafe_check_ev_param( 2009 wmi_handle, evt_buf, param); 2010 2011 return QDF_STATUS_E_FAILURE; 2012 } 2013 2014 QDF_STATUS 2015 wmi_extract_fips_event_data(wmi_unified_t wmi_handle, void *evt_buf, 2016 struct wmi_host_fips_event_param *param) 2017 { 2018 if (wmi_handle->ops->extract_fips_event_data) { 2019 return wmi_handle->ops->extract_fips_event_data(wmi_handle, 2020 evt_buf, param); 2021 } 2022 return QDF_STATUS_E_FAILURE; 2023 } 2024 2025 #ifdef WLAN_FEATURE_FIPS_BER_CCMGCM 2026 QDF_STATUS 2027 wmi_extract_fips_extend_event_data(wmi_unified_t wmi_handle, void *evt_buf, 2028 struct wmi_host_fips_extend_event_param 2029 *param) 2030 { 2031 if (wmi_handle->ops->extract_fips_extend_ev_data) { 2032 return wmi_handle->ops->extract_fips_extend_ev_data(wmi_handle, 2033 evt_buf, 2034 param); 2035 } 2036 return QDF_STATUS_E_FAILURE; 2037 } 2038 #endif 2039 2040 /** 2041 * wmi_unified_extract_pn() - extract pn event data 2042 * @wmi_handle: wmi handle 2043 * @param evt_buf: pointer to event buffer 2044 * @param param: pointer to get pn event param 2045 * 2046 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 2047 */ 2048 QDF_STATUS wmi_unified_extract_pn(wmi_unified_t wmi_hdl, void *evt_buf, 2049 struct wmi_host_get_pn_event *param) 2050 { 2051 if (wmi_hdl->ops->extract_get_pn_data) 2052 return wmi_hdl->ops->extract_get_pn_data(wmi_hdl, 2053 evt_buf, param); 2054 return QDF_STATUS_E_FAILURE; 2055 } 2056 2057 QDF_STATUS wmi_unified_extract_rxpn(wmi_unified_t wmi_hdl, void *evt_buf, 2058 struct wmi_host_get_rxpn_event *param) 2059 { 2060 if (wmi_hdl->ops->extract_get_rxpn_data) 2061 return wmi_hdl->ops->extract_get_rxpn_data(wmi_hdl, 2062 evt_buf, param); 2063 return QDF_STATUS_E_FAILURE; 2064 } 2065 2066 qdf_export_symbol(wmi_unified_extract_rxpn); 2067 2068 #ifdef WLAN_FEATURE_DISA 2069 QDF_STATUS 2070 wmi_extract_encrypt_decrypt_resp_params(void *wmi_hdl, void *evt_buf, 2071 struct disa_encrypt_decrypt_resp_params 2072 *param) 2073 { 2074 wmi_unified_t wmi_handle = (wmi_unified_t)wmi_hdl; 2075 2076 if (wmi_handle->ops->extract_encrypt_decrypt_resp_event) 2077 return 2078 wmi_handle->ops->extract_encrypt_decrypt_resp_event(wmi_handle, 2079 evt_buf, 2080 param); 2081 2082 return QDF_STATUS_E_FAILURE; 2083 } 2084 #endif /* WLAN_FEATURE_DISA */ 2085 2086 QDF_STATUS 2087 wmi_extract_mgmt_rx_params(wmi_unified_t wmi_handle, void *evt_buf, 2088 struct mgmt_rx_event_params *hdr, uint8_t **bufp) 2089 { 2090 if (wmi_handle->ops->extract_mgmt_rx_params) 2091 return wmi_handle->ops->extract_mgmt_rx_params(wmi_handle, 2092 evt_buf, hdr, bufp); 2093 2094 return QDF_STATUS_E_FAILURE; 2095 } 2096 2097 QDF_STATUS 2098 wmi_extract_mgmt_rx_ext_params(wmi_unified_t wmi_handle, void *evt_buf, 2099 struct mgmt_rx_event_ext_params *params) 2100 { 2101 if (wmi_handle->ops->extract_mgmt_rx_ext_params) 2102 return wmi_handle->ops->extract_mgmt_rx_ext_params( 2103 wmi_handle, evt_buf, params); 2104 2105 return QDF_STATUS_E_FAILURE; 2106 } 2107 2108 #ifdef WLAN_MGMT_RX_REO_SUPPORT 2109 QDF_STATUS wmi_extract_mgmt_rx_fw_consumed(wmi_unified_t wmi_handle, 2110 void *evt_buf, 2111 struct mgmt_rx_reo_params *params) 2112 { 2113 if (wmi_handle->ops->extract_mgmt_rx_fw_consumed) 2114 return wmi_handle->ops->extract_mgmt_rx_fw_consumed( 2115 wmi_handle, evt_buf, params); 2116 2117 return QDF_STATUS_E_FAILURE; 2118 } 2119 2120 QDF_STATUS 2121 wmi_extract_mgmt_rx_reo_params(wmi_unified_t wmi_handle, void *evt_buf, 2122 struct mgmt_rx_reo_params *params) 2123 { 2124 if (wmi_handle->ops->extract_mgmt_rx_reo_params) 2125 return wmi_handle->ops->extract_mgmt_rx_reo_params( 2126 wmi_handle, evt_buf, params); 2127 2128 return QDF_STATUS_E_FAILURE; 2129 } 2130 2131 QDF_STATUS wmi_unified_mgmt_rx_reo_filter_config_cmd( 2132 wmi_unified_t wmi_handle, 2133 uint8_t pdev_id, 2134 struct mgmt_rx_reo_filter *filter) 2135 { 2136 if (wmi_handle->ops->send_mgmt_rx_reo_filter_config_cmd) 2137 return wmi_handle->ops->send_mgmt_rx_reo_filter_config_cmd( 2138 wmi_handle, pdev_id, filter); 2139 2140 return QDF_STATUS_E_FAILURE; 2141 } 2142 #endif 2143 2144 QDF_STATUS 2145 wmi_extract_frame_pn_params(wmi_unified_t wmi_handle, void *evt_buf, 2146 struct frame_pn_params *pn_params) 2147 { 2148 if (wmi_handle->ops->extract_frame_pn_params) 2149 return wmi_handle->ops->extract_frame_pn_params(wmi_handle, 2150 evt_buf, 2151 pn_params); 2152 2153 return QDF_STATUS_E_FAILURE; 2154 } 2155 2156 QDF_STATUS 2157 wmi_extract_is_conn_ap_frame(wmi_unified_t wmi_handle, void *evt_buf, 2158 struct frm_conn_ap *is_conn_ap_frm) 2159 { 2160 if (wmi_handle->ops->extract_is_conn_ap_frame) 2161 return wmi_handle->ops->extract_is_conn_ap_frame(wmi_handle, 2162 evt_buf, 2163 is_conn_ap_frm); 2164 2165 return QDF_STATUS_E_FAILURE; 2166 } 2167 2168 QDF_STATUS 2169 wmi_extract_vdev_roam_param(wmi_unified_t wmi_handle, void *evt_buf, 2170 wmi_host_roam_event *param) 2171 { 2172 if (wmi_handle->ops->extract_vdev_roam_param) 2173 return wmi_handle->ops->extract_vdev_roam_param(wmi_handle, 2174 evt_buf, param); 2175 2176 return QDF_STATUS_E_FAILURE; 2177 } 2178 2179 QDF_STATUS 2180 wmi_extract_vdev_scan_ev_param(wmi_unified_t wmi_handle, void *evt_buf, 2181 struct scan_event *param) 2182 { 2183 if (wmi_handle->ops->extract_vdev_scan_ev_param) 2184 return wmi_handle->ops->extract_vdev_scan_ev_param(wmi_handle, 2185 evt_buf, param); 2186 2187 return QDF_STATUS_E_FAILURE; 2188 } 2189 2190 #ifdef FEATURE_WLAN_SCAN_PNO 2191 QDF_STATUS 2192 wmi_extract_nlo_match_ev_param(wmi_unified_t wmi_handle, void *evt_buf, 2193 struct scan_event *param) 2194 { 2195 if (wmi_handle->ops->extract_nlo_match_ev_param) 2196 return wmi_handle->ops->extract_nlo_match_ev_param(wmi_handle, 2197 evt_buf, param); 2198 2199 return QDF_STATUS_E_FAILURE; 2200 } 2201 2202 QDF_STATUS 2203 wmi_extract_nlo_complete_ev_param(wmi_unified_t wmi_handle, void *evt_buf, 2204 struct scan_event *param) 2205 { 2206 if (wmi_handle->ops->extract_nlo_complete_ev_param) 2207 return wmi_handle->ops->extract_nlo_complete_ev_param( 2208 wmi_handle, evt_buf, param); 2209 2210 return QDF_STATUS_E_FAILURE; 2211 } 2212 #endif 2213 2214 QDF_STATUS 2215 wmi_extract_mu_ev_param(wmi_unified_t wmi_handle, void *evt_buf, 2216 wmi_host_mu_report_event *param) 2217 { 2218 if (wmi_handle->ops->extract_mu_ev_param) 2219 return wmi_handle->ops->extract_mu_ev_param(wmi_handle, evt_buf, 2220 param); 2221 2222 return QDF_STATUS_E_FAILURE; 2223 } 2224 2225 QDF_STATUS 2226 wmi_extract_mu_db_entry(wmi_unified_t wmi_handle, void *evt_buf, 2227 uint8_t idx, wmi_host_mu_db_entry *param) 2228 { 2229 if (wmi_handle->ops->extract_mu_db_entry) 2230 return wmi_handle->ops->extract_mu_db_entry(wmi_handle, evt_buf, 2231 idx, param); 2232 2233 return QDF_STATUS_E_FAILURE; 2234 } 2235 2236 QDF_STATUS 2237 wmi_extract_mumimo_tx_count_ev_param(wmi_unified_t wmi_handle, void *evt_buf, 2238 wmi_host_peer_txmu_cnt_event *param) 2239 { 2240 if (wmi_handle->ops->extract_mumimo_tx_count_ev_param) 2241 return wmi_handle->ops->extract_mumimo_tx_count_ev_param( 2242 wmi_handle, evt_buf, param); 2243 2244 return QDF_STATUS_E_FAILURE; 2245 } 2246 2247 QDF_STATUS 2248 wmi_extract_peer_gid_userpos_list_ev_param( 2249 wmi_unified_t wmi_handle, 2250 void *evt_buf, 2251 wmi_host_peer_gid_userpos_list_event *param) 2252 { 2253 if (wmi_handle->ops->extract_peer_gid_userpos_list_ev_param) 2254 return wmi_handle->ops->extract_peer_gid_userpos_list_ev_param( 2255 wmi_handle, evt_buf, param); 2256 2257 return QDF_STATUS_E_FAILURE; 2258 } 2259 2260 QDF_STATUS 2261 wmi_extract_esp_estimate_ev_param(wmi_unified_t wmi_handle, void *evt_buf, 2262 struct esp_estimation_event *param) 2263 { 2264 if (wmi_handle->ops->extract_esp_estimation_ev_param) 2265 return wmi_handle->ops->extract_esp_estimation_ev_param( 2266 wmi_handle, evt_buf, param); 2267 2268 return QDF_STATUS_E_FAILURE; 2269 } 2270 2271 QDF_STATUS 2272 wmi_extract_gpio_input_ev_param(wmi_unified_t wmi_handle, void *evt_buf, 2273 uint32_t *gpio_num) 2274 { 2275 if (wmi_handle->ops->extract_gpio_input_ev_param) 2276 return wmi_handle->ops->extract_gpio_input_ev_param(wmi_handle, 2277 evt_buf, gpio_num); 2278 2279 return QDF_STATUS_E_FAILURE; 2280 } 2281 2282 QDF_STATUS wmi_extract_pdev_reserve_ast_ev_param( 2283 wmi_unified_t wmi_handle, void *evt_buf, 2284 struct wmi_host_proxy_ast_reserve_param *param) 2285 { 2286 if (wmi_handle->ops->extract_pdev_reserve_ast_ev_param) 2287 return wmi_handle->ops->extract_pdev_reserve_ast_ev_param( 2288 wmi_handle, evt_buf, param); 2289 2290 return QDF_STATUS_E_FAILURE; 2291 } 2292 2293 QDF_STATUS wmi_extract_pdev_generic_buffer_ev_param( 2294 wmi_unified_t wmi_handle, void *evt_buf, 2295 wmi_host_pdev_generic_buffer_event *param) 2296 { 2297 if (wmi_handle->ops->extract_pdev_generic_buffer_ev_param) 2298 return wmi_handle->ops->extract_pdev_generic_buffer_ev_param( 2299 wmi_handle, evt_buf, param); 2300 2301 return QDF_STATUS_E_FAILURE; 2302 2303 } 2304 2305 QDF_STATUS wmi_extract_peer_ratecode_list_ev( 2306 wmi_unified_t wmi_handle, void *evt_buf, 2307 uint8_t *peer_mac, uint32_t *pdev_id, wmi_sa_rate_cap *rate_cap) 2308 { 2309 if (wmi_handle->ops->extract_peer_ratecode_list_ev) 2310 return wmi_handle->ops->extract_peer_ratecode_list_ev( 2311 wmi_handle, evt_buf, 2312 peer_mac, pdev_id, rate_cap); 2313 2314 return QDF_STATUS_E_FAILURE; 2315 2316 } 2317 2318 QDF_STATUS 2319 wmi_extract_comb_phyerr(wmi_unified_t wmi_handle, void *evt_buf, 2320 uint16_t datalen, uint16_t *buf_offset, 2321 wmi_host_phyerr_t *phyerr) 2322 { 2323 if (wmi_handle->ops->extract_comb_phyerr) 2324 return wmi_handle->ops->extract_comb_phyerr(wmi_handle, 2325 evt_buf, datalen, buf_offset, phyerr); 2326 2327 return QDF_STATUS_E_FAILURE; 2328 2329 } 2330 2331 QDF_STATUS 2332 wmi_extract_single_phyerr(wmi_unified_t wmi_handle, void *evt_buf, 2333 uint16_t datalen, uint16_t *buf_offset, 2334 wmi_host_phyerr_t *phyerr) 2335 { 2336 if (wmi_handle->ops->extract_single_phyerr) 2337 return wmi_handle->ops->extract_single_phyerr(wmi_handle, 2338 evt_buf, datalen, buf_offset, phyerr); 2339 2340 return QDF_STATUS_E_FAILURE; 2341 2342 } 2343 2344 QDF_STATUS 2345 wmi_extract_composite_phyerr(wmi_unified_t wmi_handle, void *evt_buf, 2346 uint16_t datalen, wmi_host_phyerr_t *phyerr) 2347 { 2348 if (wmi_handle->ops->extract_composite_phyerr) 2349 return wmi_handle->ops->extract_composite_phyerr(wmi_handle, 2350 evt_buf, datalen, phyerr); 2351 2352 return QDF_STATUS_E_FAILURE; 2353 2354 } 2355 2356 QDF_STATUS 2357 wmi_extract_pmf_bcn_protect_stats(wmi_unified_t wmi_handle, void *evt_buf, 2358 wmi_host_pmf_bcn_protect_stats *bcn_stats) 2359 { 2360 if (wmi_handle->ops->extract_pmf_bcn_protect_stats) 2361 return wmi_handle->ops->extract_pmf_bcn_protect_stats( 2362 wmi_handle, evt_buf, bcn_stats); 2363 2364 return QDF_STATUS_E_FAILURE; 2365 } 2366 2367 QDF_STATUS 2368 wmi_extract_unit_test(wmi_unified_t wmi_handle, void *evt_buf, 2369 wmi_unit_test_event *unit_test, uint32_t maxspace) 2370 { 2371 if (wmi_handle->ops->extract_unit_test) 2372 return wmi_handle->ops->extract_unit_test(wmi_handle, 2373 evt_buf, unit_test, maxspace); 2374 2375 return QDF_STATUS_E_FAILURE; 2376 } 2377 2378 QDF_STATUS 2379 wmi_extract_pdev_ext_stats(wmi_unified_t wmi_handle, void *evt_buf, 2380 uint32_t index, 2381 wmi_host_pdev_ext_stats *pdev_ext_stats) 2382 { 2383 if (wmi_handle->ops->extract_pdev_ext_stats) 2384 return wmi_handle->ops->extract_pdev_ext_stats(wmi_handle, 2385 evt_buf, index, pdev_ext_stats); 2386 2387 return QDF_STATUS_E_FAILURE; 2388 } 2389 2390 QDF_STATUS wmi_extract_rtt_hdr(wmi_unified_t wmi_handle, void *evt_buf, 2391 wmi_host_rtt_event_hdr *ev) 2392 { 2393 if (wmi_handle->ops->extract_rtt_hdr) 2394 return wmi_handle->ops->extract_rtt_hdr(wmi_handle, 2395 evt_buf, ev); 2396 2397 return QDF_STATUS_E_FAILURE; 2398 } 2399 2400 QDF_STATUS wmi_extract_bcnflt_stats( 2401 wmi_unified_t wmi_handle, void *evt_buf, 2402 uint32_t index, wmi_host_bcnflt_stats *bcnflt_stats) 2403 { 2404 if (wmi_handle->ops->extract_bcnflt_stats) 2405 return wmi_handle->ops->extract_bcnflt_stats(wmi_handle, 2406 evt_buf, index, bcnflt_stats); 2407 2408 return QDF_STATUS_E_FAILURE; 2409 } 2410 2411 QDF_STATUS wmi_extract_rtt_ev(wmi_unified_t wmi_handle, void *evt_buf, 2412 wmi_host_rtt_meas_event *ev, 2413 uint8_t *hdump, uint16_t hdump_len) 2414 { 2415 if (wmi_handle->ops->extract_rtt_ev) 2416 return wmi_handle->ops->extract_rtt_ev(wmi_handle, 2417 evt_buf, ev, hdump, hdump_len); 2418 2419 return QDF_STATUS_E_FAILURE; 2420 } 2421 2422 QDF_STATUS wmi_extract_peer_retry_stats( 2423 wmi_unified_t wmi_handle, void *evt_buf, 2424 uint32_t index, struct wmi_host_peer_retry_stats *peer_retry_stats) 2425 { 2426 if (wmi_handle->ops->extract_peer_retry_stats) 2427 return wmi_handle->ops->extract_peer_retry_stats(wmi_handle, 2428 evt_buf, index, peer_retry_stats); 2429 2430 return QDF_STATUS_E_FAILURE; 2431 } 2432 2433 QDF_STATUS 2434 wmi_extract_rtt_error_report_ev(wmi_unified_t wmi_handle, void *evt_buf, 2435 wmi_host_rtt_error_report_event *ev) 2436 { 2437 if (wmi_handle->ops->extract_rtt_error_report_ev) 2438 return wmi_handle->ops->extract_rtt_error_report_ev(wmi_handle, 2439 evt_buf, ev); 2440 2441 return QDF_STATUS_E_FAILURE; 2442 } 2443 2444 QDF_STATUS 2445 wmi_extract_chan_stats(wmi_unified_t wmi_handle, void *evt_buf, 2446 uint32_t index, wmi_host_chan_stats *chan_stats) 2447 { 2448 if (wmi_handle->ops->extract_chan_stats) 2449 return wmi_handle->ops->extract_chan_stats(wmi_handle, 2450 evt_buf, index, chan_stats); 2451 2452 return QDF_STATUS_E_FAILURE; 2453 } 2454 2455 QDF_STATUS wmi_extract_thermal_stats(wmi_unified_t wmi_handle, void *evt_buf, 2456 uint32_t *temp, 2457 enum thermal_throttle_level *level, 2458 uint32_t *therm_throt_levels, 2459 struct thermal_throt_level_stats *tt_stats, 2460 uint32_t *pdev_id) 2461 { 2462 if (wmi_handle->ops->extract_thermal_stats) 2463 return wmi_handle->ops->extract_thermal_stats(wmi_handle, 2464 evt_buf, temp, level, therm_throt_levels, 2465 tt_stats, pdev_id); 2466 2467 return QDF_STATUS_E_FAILURE; 2468 } 2469 2470 QDF_STATUS 2471 wmi_extract_profile_ctx(wmi_unified_t wmi_handle, void *evt_buf, 2472 wmi_host_wlan_profile_ctx_t *profile_ctx) 2473 { 2474 if (wmi_handle->ops->extract_profile_ctx) 2475 return wmi_handle->ops->extract_profile_ctx(wmi_handle, 2476 evt_buf, profile_ctx); 2477 2478 return QDF_STATUS_E_FAILURE; 2479 } 2480 2481 QDF_STATUS 2482 wmi_extract_thermal_level_stats(wmi_unified_t wmi_handle, void *evt_buf, 2483 uint8_t idx, uint32_t *levelcount, 2484 uint32_t *dccount) 2485 { 2486 if (wmi_handle->ops->extract_thermal_level_stats) 2487 return wmi_handle->ops->extract_thermal_level_stats(wmi_handle, 2488 evt_buf, idx, levelcount, dccount); 2489 2490 return QDF_STATUS_E_FAILURE; 2491 } 2492 2493 QDF_STATUS 2494 wmi_extract_profile_data(wmi_unified_t wmi_handle, void *evt_buf, uint8_t idx, 2495 wmi_host_wlan_profile_t *profile_data) 2496 { 2497 if (wmi_handle->ops->extract_profile_data) 2498 return wmi_handle->ops->extract_profile_data(wmi_handle, 2499 evt_buf, idx, profile_data); 2500 2501 return QDF_STATUS_E_FAILURE; 2502 } 2503 2504 QDF_STATUS wmi_extract_bss_chan_info_event( 2505 wmi_unified_t wmi_handle, void *evt_buf, 2506 wmi_host_pdev_bss_chan_info_event *bss_chan_info) 2507 { 2508 if (wmi_handle->ops->extract_bss_chan_info_event) 2509 return wmi_handle->ops->extract_bss_chan_info_event(wmi_handle, 2510 evt_buf, bss_chan_info); 2511 2512 return QDF_STATUS_E_FAILURE; 2513 } 2514 2515 QDF_STATUS 2516 wmi_extract_tx_data_traffic_ctrl_ev(wmi_unified_t wmi_handle, void *evt_buf, 2517 wmi_host_tx_data_traffic_ctrl_event *ev) 2518 { 2519 if (wmi_handle->ops->extract_tx_data_traffic_ctrl_ev) 2520 return wmi_handle->ops->extract_tx_data_traffic_ctrl_ev( 2521 wmi_handle, evt_buf, ev); 2522 2523 return QDF_STATUS_E_FAILURE; 2524 } 2525 2526 QDF_STATUS 2527 wmi_extract_vdev_extd_stats(wmi_unified_t wmi_handle, void *evt_buf, 2528 uint32_t index, 2529 wmi_host_vdev_extd_stats *vdev_extd_stats) 2530 { 2531 if (wmi_handle->ops->extract_vdev_extd_stats) 2532 return wmi_handle->ops->extract_vdev_extd_stats(wmi_handle, 2533 evt_buf, index, vdev_extd_stats); 2534 return QDF_STATUS_E_FAILURE; 2535 } 2536 2537 QDF_STATUS 2538 wmi_extract_bcn_stats(wmi_unified_t wmi_handle, void *evt_buf, 2539 uint32_t index, wmi_host_bcn_stats *vdev_bcn_stats) 2540 { 2541 if (wmi_handle->ops->extract_bcn_stats) 2542 return wmi_handle->ops->extract_bcn_stats(wmi_handle, 2543 evt_buf, index, vdev_bcn_stats); 2544 return QDF_STATUS_E_FAILURE; 2545 } 2546 2547 QDF_STATUS wmi_extract_vdev_nac_rssi_stats( 2548 wmi_unified_t wmi_handle, void *evt_buf, 2549 struct wmi_host_vdev_nac_rssi_event *vdev_nac_rssi_stats) 2550 { 2551 if (wmi_handle->ops->extract_vdev_nac_rssi_stats) 2552 return wmi_handle->ops->extract_vdev_nac_rssi_stats(wmi_handle, 2553 evt_buf, vdev_nac_rssi_stats); 2554 2555 return QDF_STATUS_E_FAILURE; 2556 } 2557 2558 QDF_STATUS wmi_extract_vdev_prb_fils_stats( 2559 wmi_unified_t wmi_handle, void *evt_buf, 2560 uint32_t index, 2561 struct wmi_host_vdev_prb_fils_stats *vdev_prb_fils_stats) 2562 { 2563 if (wmi_handle->ops->extract_vdev_prb_fils_stats) 2564 return wmi_handle->ops->extract_vdev_prb_fils_stats(wmi_handle, 2565 evt_buf, index, vdev_prb_fils_stats); 2566 2567 return QDF_STATUS_E_FAILURE; 2568 } 2569 2570 QDF_STATUS wmi_unified_send_power_dbg_cmd(wmi_unified_t wmi_handle, 2571 struct wmi_power_dbg_params *param) 2572 { 2573 if (wmi_handle->ops->send_power_dbg_cmd) 2574 return wmi_handle->ops->send_power_dbg_cmd(wmi_handle, 2575 param); 2576 2577 return QDF_STATUS_E_FAILURE; 2578 } 2579 2580 QDF_STATUS 2581 wmi_unified_send_btcoex_wlan_priority_cmd(wmi_unified_t wmi_handle, 2582 struct btcoex_cfg_params *param) 2583 { 2584 if (wmi_handle->ops->send_btcoex_wlan_priority_cmd) 2585 return wmi_handle->ops->send_btcoex_wlan_priority_cmd( 2586 wmi_handle, param); 2587 2588 return QDF_STATUS_E_FAILURE; 2589 } 2590 2591 QDF_STATUS 2592 wmi_unified_send_btcoex_duty_cycle_cmd(wmi_unified_t wmi_handle, 2593 struct btcoex_cfg_params *param) 2594 { 2595 if (wmi_handle->ops->send_btcoex_duty_cycle_cmd) 2596 return wmi_handle->ops->send_btcoex_duty_cycle_cmd( 2597 wmi_handle, param); 2598 2599 return QDF_STATUS_E_FAILURE; 2600 } 2601 2602 QDF_STATUS wmi_extract_service_ready_ext( 2603 wmi_unified_t wmi_handle, uint8_t *evt_buf, 2604 struct wlan_psoc_host_service_ext_param *param) 2605 { 2606 if (wmi_handle->ops->extract_service_ready_ext) 2607 return wmi_handle->ops->extract_service_ready_ext(wmi_handle, 2608 evt_buf, param); 2609 2610 return QDF_STATUS_E_FAILURE; 2611 } 2612 2613 QDF_STATUS wmi_extract_service_ready_ext2( 2614 struct wmi_unified *wmi_handle, uint8_t *evt_buf, 2615 struct wlan_psoc_host_service_ext2_param *param) 2616 { 2617 if (wmi_handle->ops->extract_service_ready_ext2) 2618 return wmi_handle->ops->extract_service_ready_ext2(wmi_handle, 2619 evt_buf, param); 2620 2621 return QDF_STATUS_E_FAILURE; 2622 } 2623 2624 QDF_STATUS wmi_extract_dbs_or_sbs_cap_service_ready_ext2( 2625 wmi_unified_t wmi_handle, 2626 uint8_t *evt_buf, uint32_t *sbs_lower_band_end_freq) 2627 { 2628 if (wmi_handle->ops->extract_dbs_or_sbs_service_ready_ext2) 2629 return wmi_handle->ops->extract_dbs_or_sbs_service_ready_ext2( 2630 wmi_handle, 2631 evt_buf, sbs_lower_band_end_freq); 2632 2633 return QDF_STATUS_E_FAILURE; 2634 } 2635 2636 QDF_STATUS wmi_extract_sar_cap_service_ready_ext( 2637 wmi_unified_t wmi_handle, 2638 uint8_t *evt_buf, 2639 struct wlan_psoc_host_service_ext_param *ext_param) 2640 { 2641 if (wmi_handle->ops->extract_sar_cap_service_ready_ext) 2642 return wmi_handle->ops->extract_sar_cap_service_ready_ext( 2643 wmi_handle, 2644 evt_buf, ext_param); 2645 2646 return QDF_STATUS_E_FAILURE; 2647 } 2648 2649 QDF_STATUS wmi_extract_hw_mode_cap_service_ready_ext( 2650 wmi_unified_t wmi_handle, 2651 uint8_t *evt_buf, uint8_t hw_mode_idx, 2652 struct wlan_psoc_host_hw_mode_caps *param) 2653 { 2654 if (wmi_handle->ops->extract_hw_mode_cap_service_ready_ext) 2655 return wmi_handle->ops->extract_hw_mode_cap_service_ready_ext( 2656 wmi_handle, 2657 evt_buf, hw_mode_idx, param); 2658 2659 return QDF_STATUS_E_FAILURE; 2660 } 2661 2662 QDF_STATUS wmi_extract_mac_phy_cap_service_ready_ext( 2663 wmi_unified_t wmi_handle, 2664 uint8_t *evt_buf, 2665 uint8_t hw_mode_id, 2666 uint8_t phy_id, 2667 struct wlan_psoc_host_mac_phy_caps *param) 2668 { 2669 if (wmi_handle->ops->extract_mac_phy_cap_service_ready_ext) 2670 return wmi_handle->ops->extract_mac_phy_cap_service_ready_ext( 2671 wmi_handle, 2672 evt_buf, hw_mode_id, phy_id, param); 2673 2674 return QDF_STATUS_E_FAILURE; 2675 } 2676 2677 QDF_STATUS wmi_extract_mac_phy_cap_service_ready_ext2( 2678 wmi_unified_t wmi_handle, 2679 uint8_t *evt_buf, 2680 uint8_t hw_mode_id, 2681 uint8_t phy_id, 2682 uint8_t phy_idx, 2683 struct wlan_psoc_host_mac_phy_caps_ext2 *mac_phy_cap) 2684 { 2685 if (wmi_handle->ops->extract_mac_phy_cap_service_ready_ext2) 2686 return wmi_handle->ops->extract_mac_phy_cap_service_ready_ext2( 2687 wmi_handle, evt_buf, hw_mode_id, phy_id, 2688 phy_idx, mac_phy_cap); 2689 2690 return QDF_STATUS_E_FAILURE; 2691 } 2692 2693 QDF_STATUS wmi_extract_reg_cap_service_ready_ext( 2694 wmi_unified_t wmi_handle, 2695 uint8_t *evt_buf, uint8_t phy_idx, 2696 struct wlan_psoc_host_hal_reg_capabilities_ext *param) 2697 { 2698 if (wmi_handle->ops->extract_reg_cap_service_ready_ext) 2699 return wmi_handle->ops->extract_reg_cap_service_ready_ext( 2700 wmi_handle, 2701 evt_buf, phy_idx, param); 2702 2703 return QDF_STATUS_E_FAILURE; 2704 } 2705 2706 QDF_STATUS wmi_extract_dbr_ring_cap_service_ready_ext( 2707 wmi_unified_t wmi_handle, 2708 uint8_t *evt_buf, uint8_t idx, 2709 struct wlan_psoc_host_dbr_ring_caps *param) 2710 { 2711 if (wmi_handle->ops->extract_dbr_ring_cap_service_ready_ext) 2712 return wmi_handle->ops->extract_dbr_ring_cap_service_ready_ext( 2713 wmi_handle, 2714 evt_buf, idx, param); 2715 2716 return QDF_STATUS_E_FAILURE; 2717 } 2718 2719 QDF_STATUS wmi_extract_dbr_ring_cap_service_ready_ext2( 2720 wmi_unified_t wmi_handle, 2721 uint8_t *evt_buf, uint8_t idx, 2722 struct wlan_psoc_host_dbr_ring_caps *param) 2723 { 2724 if (wmi_handle->ops->extract_dbr_ring_cap_service_ready_ext2) 2725 return wmi_handle->ops->extract_dbr_ring_cap_service_ready_ext2( 2726 wmi_handle, 2727 evt_buf, idx, param); 2728 2729 return QDF_STATUS_E_FAILURE; 2730 } 2731 2732 QDF_STATUS wmi_extract_scan_radio_cap_service_ready_ext2( 2733 wmi_unified_t wmi_handle, 2734 uint8_t *evt_buf, uint8_t idx, 2735 struct wlan_psoc_host_scan_radio_caps *param) 2736 { 2737 if (wmi_handle->ops->extract_scan_radio_cap_service_ready_ext2) 2738 return wmi_handle->ops-> 2739 extract_scan_radio_cap_service_ready_ext2( 2740 wmi_handle, 2741 evt_buf, idx, param); 2742 2743 return QDF_STATUS_E_FAILURE; 2744 } 2745 2746 QDF_STATUS wmi_extract_sw_cal_ver_ext2(wmi_unified_t wmi_handle, 2747 uint8_t *event, 2748 struct wmi_host_sw_cal_ver *cal) 2749 { 2750 if (wmi_handle->ops->extract_sw_cal_ver_ext2) 2751 return wmi_handle->ops->extract_sw_cal_ver_ext2(wmi_handle, 2752 event, 2753 cal); 2754 2755 return QDF_STATUS_E_FAILURE; 2756 } 2757 2758 #ifdef WLAN_CONV_SPECTRAL_ENABLE 2759 QDF_STATUS wmi_extract_pdev_sscan_fw_cmd_fixed_param( 2760 wmi_unified_t wmi_handle, 2761 uint8_t *evt_buf, 2762 struct spectral_startscan_resp_params *param) 2763 { 2764 if (wmi_handle->ops->extract_pdev_sscan_fw_cmd_fixed_param) 2765 return wmi_handle->ops->extract_pdev_sscan_fw_cmd_fixed_param( 2766 wmi_handle, 2767 evt_buf, param); 2768 2769 return QDF_STATUS_E_FAILURE; 2770 } 2771 2772 QDF_STATUS wmi_extract_pdev_sscan_fft_bin_index( 2773 wmi_unified_t wmi_handle, 2774 uint8_t *evt_buf, 2775 struct spectral_fft_bin_markers_160_165mhz *param) 2776 { 2777 if (wmi_handle->ops->extract_pdev_sscan_fft_bin_index) 2778 return wmi_handle->ops->extract_pdev_sscan_fft_bin_index( 2779 wmi_handle, 2780 evt_buf, param); 2781 2782 return QDF_STATUS_E_FAILURE; 2783 } 2784 2785 QDF_STATUS wmi_extract_pdev_spectral_session_chan_info( 2786 wmi_unified_t wmi_handle, void *event, 2787 struct spectral_session_chan_info *chan_info) 2788 { 2789 if (wmi_handle->ops->extract_pdev_spectral_session_chan_info) 2790 return wmi_handle->ops->extract_pdev_spectral_session_chan_info( 2791 wmi_handle, 2792 event, chan_info); 2793 2794 return QDF_STATUS_E_FAILURE; 2795 } 2796 2797 QDF_STATUS wmi_extract_pdev_spectral_session_detector_info( 2798 wmi_unified_t wmi_handle, void *event, 2799 struct spectral_session_det_info *det_info, uint8_t idx) 2800 { 2801 if (wmi_handle->ops->extract_pdev_spectral_session_detector_info) 2802 return wmi_handle->ops-> 2803 extract_pdev_spectral_session_detector_info( 2804 wmi_handle, event, 2805 det_info, idx); 2806 2807 return QDF_STATUS_E_FAILURE; 2808 } 2809 2810 QDF_STATUS wmi_extract_spectral_caps_fixed_param( 2811 wmi_unified_t wmi_handle, void *event, 2812 struct spectral_capabilities_event_params *param) 2813 { 2814 if (wmi_handle->ops->extract_spectral_caps_fixed_param) 2815 return wmi_handle->ops->extract_spectral_caps_fixed_param( 2816 wmi_handle, event, param); 2817 2818 return QDF_STATUS_E_FAILURE; 2819 } 2820 2821 QDF_STATUS wmi_extract_spectral_scan_bw_caps( 2822 wmi_unified_t wmi_handle, void *event, 2823 struct spectral_scan_bw_capabilities *bw_caps) 2824 { 2825 if (wmi_handle->ops->extract_spectral_scan_bw_caps) 2826 return wmi_handle->ops->extract_spectral_scan_bw_caps( 2827 wmi_handle, event, bw_caps); 2828 2829 return QDF_STATUS_E_FAILURE; 2830 } 2831 2832 QDF_STATUS wmi_extract_spectral_fft_size_caps( 2833 wmi_unified_t wmi_handle, void *event, 2834 struct spectral_fft_size_capabilities *fft_size_caps) 2835 { 2836 if (wmi_handle->ops->extract_spectral_fft_size_caps) 2837 return wmi_handle->ops->extract_spectral_fft_size_caps( 2838 wmi_handle, event, fft_size_caps); 2839 2840 return QDF_STATUS_E_FAILURE; 2841 } 2842 #endif /* WLAN_CONV_SPECTRAL_ENABLE */ 2843 2844 QDF_STATUS wmi_extract_spectral_scaling_params_service_ready_ext( 2845 wmi_unified_t wmi_handle, 2846 uint8_t *evt_buf, uint8_t idx, 2847 struct wlan_psoc_host_spectral_scaling_params *param) 2848 { 2849 if (wmi_handle->ops->extract_scaling_params_service_ready_ext) 2850 return wmi_handle->ops->extract_scaling_params_service_ready_ext 2851 (wmi_handle, evt_buf, idx, param); 2852 2853 return QDF_STATUS_E_FAILURE; 2854 } 2855 2856 QDF_STATUS wmi_extract_pdev_utf_event(wmi_unified_t wmi_handle, 2857 uint8_t *evt_buf, 2858 struct wmi_host_pdev_utf_event *param) 2859 { 2860 if (wmi_handle->ops->extract_pdev_utf_event) 2861 return wmi_handle->ops->extract_pdev_utf_event( 2862 wmi_handle, 2863 evt_buf, param); 2864 2865 return QDF_STATUS_E_FAILURE; 2866 } 2867 2868 QDF_STATUS wmi_extract_pdev_qvit_event(wmi_unified_t wmi_handle, 2869 uint8_t *evt_buf, 2870 struct wmi_host_pdev_qvit_event *param) 2871 { 2872 if (wmi_handle->ops->extract_pdev_qvit_event) 2873 return wmi_handle->ops->extract_pdev_qvit_event( 2874 wmi_handle, 2875 evt_buf, param); 2876 2877 return QDF_STATUS_E_FAILURE; 2878 } 2879 2880 QDF_STATUS 2881 wmi_unified_send_coex_ver_cfg_cmd(wmi_unified_t wmi_handle, 2882 coex_ver_cfg_t *param) 2883 { 2884 if (wmi_handle->ops->send_coex_ver_cfg_cmd) 2885 return wmi_handle->ops->send_coex_ver_cfg_cmd(wmi_handle, 2886 param); 2887 2888 return QDF_STATUS_E_FAILURE; 2889 } 2890 2891 QDF_STATUS 2892 wmi_unified_send_coex_config_cmd(wmi_unified_t wmi_handle, 2893 struct coex_config_params *param) 2894 { 2895 if (wmi_handle->ops->send_coex_config_cmd) 2896 return wmi_handle->ops->send_coex_config_cmd(wmi_handle, 2897 param); 2898 2899 return QDF_STATUS_E_FAILURE; 2900 } 2901 2902 #ifdef WLAN_FEATURE_DBAM_CONFIG 2903 QDF_STATUS 2904 wmi_unified_send_dbam_config_cmd(wmi_unified_t wmi_handle, 2905 struct coex_dbam_config_params *param) 2906 { 2907 if (wmi_handle->ops->send_dbam_config_cmd) 2908 return wmi_handle->ops->send_dbam_config_cmd(wmi_handle, 2909 param); 2910 2911 return QDF_STATUS_E_FAILURE; 2912 } 2913 2914 QDF_STATUS 2915 wmi_extract_dbam_config_response(wmi_unified_t wmi_handle, void *evt_buf, 2916 struct coex_dbam_config_resp *resp) 2917 { 2918 if (wmi_handle->ops->extract_dbam_config_resp_event) 2919 return wmi_handle->ops->extract_dbam_config_resp_event( 2920 wmi_handle, evt_buf, resp); 2921 2922 return QDF_STATUS_E_FAILURE; 2923 } 2924 #endif 2925 2926 QDF_STATUS 2927 wmi_unified_send_request_get_rcpi_cmd(wmi_unified_t wmi_handle, 2928 struct rcpi_req *get_rcpi_param) 2929 { 2930 if (wmi_handle->ops->send_get_rcpi_cmd) 2931 return wmi_handle->ops->send_get_rcpi_cmd(wmi_handle, 2932 get_rcpi_param); 2933 2934 return QDF_STATUS_E_FAILURE; 2935 } 2936 2937 QDF_STATUS 2938 wmi_extract_rcpi_response_event(wmi_unified_t wmi_handle, void *evt_buf, 2939 struct rcpi_res *res) 2940 { 2941 struct wmi_ops *ops = wmi_handle->ops; 2942 2943 if (ops->extract_rcpi_response_event) 2944 return ops->extract_rcpi_response_event(wmi_handle, evt_buf, 2945 res); 2946 2947 return QDF_STATUS_E_FAILURE; 2948 } 2949 2950 QDF_STATUS 2951 wmi_unified_dfs_phyerr_offload_en_cmd(wmi_unified_t wmi_handle, 2952 uint32_t pdev_id) 2953 { 2954 if (wmi_handle->ops->send_dfs_phyerr_offload_en_cmd) 2955 return wmi_handle->ops->send_dfs_phyerr_offload_en_cmd( 2956 wmi_handle, pdev_id); 2957 2958 return QDF_STATUS_E_FAILURE; 2959 } 2960 2961 #ifdef QCA_SUPPORT_AGILE_DFS 2962 QDF_STATUS 2963 wmi_unified_send_vdev_adfs_ch_cfg_cmd(wmi_unified_t wmi_handle, 2964 struct vdev_adfs_ch_cfg_params *param) 2965 { 2966 if (wmi_handle->ops->send_adfs_ch_cfg_cmd) 2967 return wmi_handle->ops->send_adfs_ch_cfg_cmd( 2968 wmi_handle, 2969 param); 2970 return QDF_STATUS_E_FAILURE; 2971 } 2972 2973 QDF_STATUS 2974 wmi_unified_send_vdev_adfs_ocac_abort_cmd(wmi_unified_t wmi_handle, 2975 struct vdev_adfs_abort_params *param) 2976 { 2977 if (wmi_handle->ops->send_adfs_ocac_abort_cmd) 2978 return wmi_handle->ops->send_adfs_ocac_abort_cmd( 2979 wmi_handle, 2980 param); 2981 return QDF_STATUS_E_FAILURE; 2982 } 2983 #endif 2984 2985 QDF_STATUS 2986 wmi_unified_dfs_phyerr_offload_dis_cmd(wmi_unified_t wmi_handle, 2987 uint32_t pdev_id) 2988 { 2989 if (wmi_handle->ops->send_dfs_phyerr_offload_dis_cmd) 2990 return wmi_handle->ops->send_dfs_phyerr_offload_dis_cmd( 2991 wmi_handle, pdev_id); 2992 2993 return QDF_STATUS_E_FAILURE; 2994 } 2995 2996 #ifdef WLAN_SUPPORT_RF_CHARACTERIZATION 2997 QDF_STATUS wmi_extract_num_rf_characterization_entries(wmi_unified_t wmi_hdl, 2998 uint8_t *evt_buf, 2999 uint32_t *num_rf_characterization_entries) 3000 { 3001 if (wmi_hdl->ops->extract_num_rf_characterization_entries) 3002 return wmi_hdl->ops->extract_num_rf_characterization_entries(wmi_hdl, 3003 evt_buf, num_rf_characterization_entries); 3004 3005 return QDF_STATUS_E_FAILURE; 3006 } 3007 3008 QDF_STATUS wmi_extract_rf_characterization_entries(wmi_unified_t wmi_hdl, 3009 uint8_t *evt_buf, 3010 uint32_t num_rf_characterization_entries, 3011 struct wmi_host_rf_characterization_event_param *rf_characterization_entries) 3012 { 3013 if (wmi_hdl->ops->extract_rf_characterization_entries) 3014 return wmi_hdl->ops->extract_rf_characterization_entries(wmi_hdl, 3015 evt_buf, num_rf_characterization_entries, 3016 rf_characterization_entries); 3017 3018 return QDF_STATUS_E_FAILURE; 3019 } 3020 #endif 3021 3022 QDF_STATUS wmi_extract_chainmask_tables( 3023 wmi_unified_t wmi_handle, uint8_t *evt_buf, 3024 struct wlan_psoc_host_chainmask_table *chainmask_table) 3025 { 3026 if (wmi_handle->ops->extract_chainmask_tables) 3027 return wmi_handle->ops->extract_chainmask_tables(wmi_handle, 3028 evt_buf, chainmask_table); 3029 3030 return QDF_STATUS_E_FAILURE; 3031 } 3032 3033 QDF_STATUS wmi_unified_set_country_cmd_send(wmi_unified_t wmi_handle, 3034 struct set_country *param) 3035 { 3036 if (wmi_handle->ops->send_set_country_cmd) 3037 return wmi_handle->ops->send_set_country_cmd(wmi_handle, 3038 param); 3039 3040 return QDF_STATUS_E_FAILURE; 3041 } 3042 3043 #ifdef WLAN_FEATURE_ACTION_OUI 3044 QDF_STATUS 3045 wmi_unified_send_action_oui_cmd(wmi_unified_t wmi_handle, 3046 struct action_oui_request *req) 3047 { 3048 if (wmi_handle->ops->send_action_oui_cmd) 3049 return wmi_handle->ops->send_action_oui_cmd(wmi_handle, 3050 req); 3051 3052 return QDF_STATUS_E_FAILURE; 3053 } 3054 #endif 3055 3056 QDF_STATUS wmi_unified_send_dump_wds_table_cmd(wmi_unified_t wmi_handle) 3057 { 3058 if (wmi_handle->ops->send_wds_entry_list_cmd) 3059 return wmi_handle->ops->send_wds_entry_list_cmd(wmi_handle); 3060 3061 return QDF_STATUS_E_FAILURE; 3062 } 3063 3064 QDF_STATUS 3065 wmi_extract_wds_entry(wmi_unified_t wmi_handle, uint8_t *evt_buf, 3066 struct wdsentry *wds_entry, 3067 u_int32_t idx) 3068 { 3069 if (wmi_handle->ops->extract_wds_entry) 3070 return wmi_handle->ops->extract_wds_entry(wmi_handle, 3071 evt_buf, wds_entry, idx); 3072 3073 return QDF_STATUS_E_FAILURE; 3074 } 3075 qdf_export_symbol(wmi_extract_wds_entry); 3076 3077 QDF_STATUS wmi_unified_send_obss_detection_cfg_cmd( 3078 wmi_unified_t wmi_handle, 3079 struct wmi_obss_detection_cfg_param *obss_cfg_param) 3080 { 3081 if (wmi_handle->ops->send_obss_detection_cfg_cmd) 3082 return wmi_handle->ops->send_obss_detection_cfg_cmd(wmi_handle, 3083 obss_cfg_param); 3084 3085 return QDF_STATUS_E_FAILURE; 3086 } 3087 3088 QDF_STATUS wmi_unified_extract_obss_detection_info( 3089 wmi_unified_t wmi_handle, 3090 uint8_t *data, 3091 struct wmi_obss_detect_info *info) 3092 { 3093 if (wmi_handle->ops->extract_obss_detection_info) 3094 return wmi_handle->ops->extract_obss_detection_info(data, info); 3095 3096 return QDF_STATUS_E_FAILURE; 3097 } 3098 3099 #if defined(WLAN_SUPPORT_FILS) || defined(CONFIG_BAND_6GHZ) 3100 QDF_STATUS 3101 wmi_unified_vdev_fils_enable_cmd_send(struct wmi_unified *wmi_handle, 3102 struct config_fils_params *param) 3103 { 3104 if (wmi_handle->ops->send_vdev_fils_enable_cmd) 3105 return wmi_handle->ops->send_vdev_fils_enable_cmd( 3106 wmi_handle, param); 3107 3108 return QDF_STATUS_E_FAILURE; 3109 } 3110 #endif 3111 3112 #ifdef WLAN_SUPPORT_GREEN_AP 3113 QDF_STATUS wmi_extract_green_ap_egap_status_info( 3114 wmi_unified_t wmi_handle, uint8_t *evt_buf, 3115 struct wlan_green_ap_egap_status_info *egap_status_info_params) 3116 { 3117 if (wmi_handle->ops->extract_green_ap_egap_status_info) 3118 return wmi_handle->ops->extract_green_ap_egap_status_info( 3119 evt_buf, egap_status_info_params); 3120 3121 return QDF_STATUS_E_FAILURE; 3122 } 3123 #endif 3124 3125 wmi_host_channel_width wmi_get_ch_width_from_phy_mode( 3126 wmi_unified_t wmi_handle, WMI_HOST_WLAN_PHY_MODE phymode) 3127 { 3128 /* 3129 * this API does translation between host only strcutres, hence 3130 * does not need separate TLV, non-TLV definitions 3131 */ 3132 3133 if (phymode >= WMI_HOST_MODE_11A && phymode < WMI_HOST_MODE_MAX) 3134 return mode_to_width[phymode]; 3135 else 3136 return WMI_HOST_CHAN_WIDTH_20; 3137 } 3138 3139 #ifdef QCA_SUPPORT_CP_STATS 3140 QDF_STATUS wmi_extract_cca_stats(wmi_unified_t wmi_handle, void *evt_buf, 3141 struct wmi_host_congestion_stats *stats) 3142 { 3143 if (wmi_handle->ops->extract_cca_stats) 3144 return wmi_handle->ops->extract_cca_stats(wmi_handle, evt_buf, 3145 stats); 3146 3147 return QDF_STATUS_E_FAILURE; 3148 } 3149 #endif /* QCA_SUPPORT_CP_STATS */ 3150 3151 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST) 3152 QDF_STATUS 3153 wmi_unified_dfs_send_avg_params_cmd(wmi_unified_t wmi_handle, 3154 struct dfs_radar_found_params *params) 3155 { 3156 if (wmi_handle->ops->send_dfs_average_radar_params_cmd) 3157 return wmi_handle->ops->send_dfs_average_radar_params_cmd( 3158 wmi_handle, params); 3159 3160 return QDF_STATUS_E_FAILURE; 3161 } 3162 3163 QDF_STATUS 3164 wmi_extract_dfs_status_from_fw(wmi_unified_t wmi_handle, void *evt_buf, 3165 uint32_t *dfs_status_check) 3166 { 3167 if (wmi_handle->ops->extract_dfs_status_from_fw) 3168 return wmi_handle->ops->extract_dfs_status_from_fw(wmi_handle, 3169 evt_buf, dfs_status_check); 3170 3171 return QDF_STATUS_E_FAILURE; 3172 } 3173 #endif 3174 3175 #ifdef OL_ATH_SMART_LOGGING 3176 QDF_STATUS wmi_unified_send_smart_logging_enable_cmd(wmi_unified_t wmi_handle, 3177 uint32_t param) 3178 { 3179 if (wmi_handle->ops->send_smart_logging_enable_cmd) 3180 return wmi_handle->ops->send_smart_logging_enable_cmd( 3181 wmi_handle, 3182 param); 3183 3184 return QDF_STATUS_E_FAILURE; 3185 } 3186 3187 QDF_STATUS 3188 wmi_unified_send_smart_logging_fatal_cmd(wmi_unified_t wmi_handle, 3189 struct wmi_debug_fatal_events *param) 3190 { 3191 if (wmi_handle->ops->send_smart_logging_fatal_cmd) 3192 return wmi_handle->ops->send_smart_logging_fatal_cmd(wmi_handle, 3193 param); 3194 3195 return QDF_STATUS_E_FAILURE; 3196 } 3197 3198 QDF_STATUS wmi_extract_smartlog_ev(wmi_unified_t wmi_handle, 3199 void *evt_buf, 3200 struct wmi_debug_fatal_events *ev) 3201 { 3202 if (wmi_handle->ops->extract_smartlog_event) 3203 return wmi_handle->ops->extract_smartlog_event( 3204 wmi_handle, evt_buf, ev); 3205 3206 return QDF_STATUS_E_FAILURE; 3207 } 3208 3209 qdf_export_symbol(wmi_extract_smartlog_ev); 3210 #endif /* OL_ATH_SMART_LOGGING */ 3211 3212 QDF_STATUS 3213 wmi_unified_send_roam_scan_stats_cmd(wmi_unified_t wmi_handle, 3214 struct wmi_roam_scan_stats_req *params) 3215 { 3216 if (wmi_handle->ops->send_roam_scan_stats_cmd) 3217 return wmi_handle->ops->send_roam_scan_stats_cmd(wmi_handle, 3218 params); 3219 3220 return QDF_STATUS_E_FAILURE; 3221 } 3222 3223 #ifdef CRYPTO_SET_KEY_CONVERGED 3224 uint8_t wlan_crypto_cipher_to_wmi_cipher( 3225 enum wlan_crypto_cipher_type crypto_cipher) 3226 { 3227 switch (crypto_cipher) { 3228 case WLAN_CRYPTO_CIPHER_NONE: 3229 return WMI_CIPHER_NONE; 3230 case WLAN_CRYPTO_CIPHER_WEP: 3231 case WLAN_CRYPTO_CIPHER_WEP_40: 3232 case WLAN_CRYPTO_CIPHER_WEP_104: 3233 return WMI_CIPHER_WEP; 3234 case WLAN_CRYPTO_CIPHER_TKIP: 3235 return WMI_CIPHER_TKIP; 3236 case WLAN_CRYPTO_CIPHER_WAPI_SMS4: 3237 case WLAN_CRYPTO_CIPHER_WAPI_GCM4: 3238 return WMI_CIPHER_WAPI; 3239 case WLAN_CRYPTO_CIPHER_AES_CCM: 3240 case WLAN_CRYPTO_CIPHER_AES_CCM_256: 3241 return WMI_CIPHER_AES_CCM; 3242 case WLAN_CRYPTO_CIPHER_AES_CMAC: 3243 return WMI_CIPHER_AES_CMAC; 3244 case WLAN_CRYPTO_CIPHER_AES_GMAC: 3245 case WLAN_CRYPTO_CIPHER_AES_GMAC_256: 3246 return WMI_CIPHER_AES_GMAC; 3247 case WLAN_CRYPTO_CIPHER_AES_GCM: 3248 case WLAN_CRYPTO_CIPHER_AES_GCM_256: 3249 return WMI_CIPHER_AES_GCM; 3250 default: 3251 return 0; 3252 } 3253 } 3254 3255 enum cdp_sec_type wlan_crypto_cipher_to_cdp_sec_type( 3256 enum wlan_crypto_cipher_type crypto_cipher) 3257 { 3258 switch (crypto_cipher) { 3259 case WLAN_CRYPTO_CIPHER_NONE: 3260 return cdp_sec_type_none; 3261 case WLAN_CRYPTO_CIPHER_WEP: 3262 case WLAN_CRYPTO_CIPHER_WEP_40: 3263 case WLAN_CRYPTO_CIPHER_WEP_104: 3264 return cdp_sec_type_wep104; 3265 case WLAN_CRYPTO_CIPHER_TKIP: 3266 return cdp_sec_type_tkip; 3267 case WLAN_CRYPTO_CIPHER_WAPI_SMS4: 3268 case WLAN_CRYPTO_CIPHER_WAPI_GCM4: 3269 return cdp_sec_type_wapi; 3270 case WLAN_CRYPTO_CIPHER_AES_CCM: 3271 return cdp_sec_type_aes_ccmp; 3272 case WLAN_CRYPTO_CIPHER_AES_CCM_256: 3273 return cdp_sec_type_aes_ccmp_256; 3274 case WLAN_CRYPTO_CIPHER_AES_GCM: 3275 return cdp_sec_type_aes_gcmp; 3276 case WLAN_CRYPTO_CIPHER_AES_GCM_256: 3277 return cdp_sec_type_aes_gcmp_256; 3278 default: 3279 return cdp_sec_type_none; 3280 } 3281 } 3282 #endif /* CRYPTO_SET_KEY_CONVERGED */ 3283 3284 QDF_STATUS 3285 wmi_extract_roam_scan_stats_res_evt(wmi_unified_t wmi, void *evt_buf, 3286 uint32_t *vdev_id, 3287 struct wmi_roam_scan_stats_res **res_param) 3288 { 3289 if (wmi->ops->extract_roam_scan_stats_res_evt) 3290 return wmi->ops->extract_roam_scan_stats_res_evt(wmi, 3291 evt_buf, 3292 vdev_id, res_param); 3293 3294 return QDF_STATUS_E_FAILURE; 3295 } 3296 3297 QDF_STATUS 3298 wmi_extract_offload_bcn_tx_status_evt(wmi_unified_t wmi_handle, void *evt_buf, 3299 uint32_t *vdev_id, uint32_t *tx_status) 3300 { 3301 if (wmi_handle->ops->extract_offload_bcn_tx_status_evt) 3302 return wmi_handle->ops->extract_offload_bcn_tx_status_evt( 3303 wmi_handle, evt_buf, 3304 vdev_id, tx_status); 3305 3306 return QDF_STATUS_E_FAILURE; 3307 } 3308 3309 #ifdef OBSS_PD 3310 QDF_STATUS wmi_unified_send_obss_spatial_reuse_set_cmd( 3311 wmi_unified_t wmi_handle, 3312 struct wmi_host_obss_spatial_reuse_set_param *obss_spatial_reuse_param) 3313 { 3314 if (wmi_handle->ops->send_obss_spatial_reuse_set) 3315 return wmi_handle->ops->send_obss_spatial_reuse_set(wmi_handle, 3316 obss_spatial_reuse_param); 3317 3318 return QDF_STATUS_E_FAILURE; 3319 } 3320 3321 QDF_STATUS 3322 wmi_unified_send_obss_spatial_reuse_set_def_thresh_cmd( 3323 wmi_unified_t wmi_handle, 3324 struct wmi_host_obss_spatial_reuse_set_def_thresh *thresh) 3325 { 3326 if (wmi_handle->ops->send_obss_spatial_reuse_set_def_thresh) 3327 return wmi_handle->ops->send_obss_spatial_reuse_set_def_thresh( 3328 wmi_handle, thresh); 3329 3330 return QDF_STATUS_E_FAILURE; 3331 } 3332 3333 QDF_STATUS wmi_unified_send_self_srg_bss_color_bitmap_set_cmd( 3334 wmi_unified_t wmi_handle, uint32_t bitmap_0, 3335 uint32_t bitmap_1, uint8_t pdev_id) 3336 { 3337 if (wmi_handle->ops->send_self_srg_bss_color_bitmap_set) 3338 return wmi_handle->ops->send_self_srg_bss_color_bitmap_set( 3339 wmi_handle, bitmap_0, bitmap_1, pdev_id); 3340 3341 return QDF_STATUS_E_FAILURE; 3342 } 3343 3344 QDF_STATUS wmi_unified_send_self_srg_partial_bssid_bitmap_set_cmd( 3345 wmi_unified_t wmi_handle, uint32_t bitmap_0, 3346 uint32_t bitmap_1, uint8_t pdev_id) 3347 { 3348 if (wmi_handle->ops->send_self_srg_partial_bssid_bitmap_set) 3349 return wmi_handle->ops->send_self_srg_partial_bssid_bitmap_set( 3350 wmi_handle, bitmap_0, bitmap_1, pdev_id); 3351 3352 return QDF_STATUS_E_FAILURE; 3353 } 3354 3355 QDF_STATUS wmi_unified_send_self_srg_obss_color_enable_bitmap_cmd( 3356 wmi_unified_t wmi_handle, uint32_t bitmap_0, 3357 uint32_t bitmap_1, uint8_t pdev_id) 3358 { 3359 if (wmi_handle->ops->send_self_srg_obss_color_enable_bitmap) 3360 return wmi_handle->ops-> 3361 send_self_srg_obss_color_enable_bitmap( 3362 wmi_handle, bitmap_0, bitmap_1, pdev_id); 3363 3364 return QDF_STATUS_E_FAILURE; 3365 } 3366 3367 QDF_STATUS wmi_unified_send_self_srg_obss_bssid_enable_bitmap_cmd( 3368 wmi_unified_t wmi_handle, uint32_t bitmap_0, 3369 uint32_t bitmap_1, uint8_t pdev_id) 3370 { 3371 if (wmi_handle->ops->send_self_srg_obss_bssid_enable_bitmap) 3372 return wmi_handle->ops-> 3373 send_self_srg_obss_bssid_enable_bitmap( 3374 wmi_handle, bitmap_0, bitmap_1, pdev_id); 3375 3376 return QDF_STATUS_E_FAILURE; 3377 } 3378 3379 QDF_STATUS wmi_unified_send_self_non_srg_obss_color_enable_bitmap_cmd( 3380 wmi_unified_t wmi_handle, uint32_t bitmap_0, 3381 uint32_t bitmap_1, uint8_t pdev_id) 3382 { 3383 if (wmi_handle->ops->send_self_non_srg_obss_color_enable_bitmap) 3384 return wmi_handle->ops-> 3385 send_self_non_srg_obss_color_enable_bitmap( 3386 wmi_handle, bitmap_0, bitmap_1, pdev_id); 3387 3388 return QDF_STATUS_E_FAILURE; 3389 } 3390 3391 QDF_STATUS wmi_unified_send_self_non_srg_obss_bssid_enable_bitmap_cmd( 3392 wmi_unified_t wmi_handle, uint32_t bitmap_0, 3393 uint32_t bitmap_1, uint8_t pdev_id) 3394 { 3395 if (wmi_handle->ops->send_self_non_srg_obss_bssid_enable_bitmap) 3396 return wmi_handle->ops-> 3397 send_self_non_srg_obss_bssid_enable_bitmap( 3398 wmi_handle, bitmap_0, bitmap_1, pdev_id); 3399 3400 return QDF_STATUS_E_FAILURE; 3401 } 3402 #endif 3403 3404 QDF_STATUS wmi_convert_pdev_id_host_to_target(wmi_unified_t wmi_handle, 3405 uint32_t host_pdev_id, 3406 uint32_t *target_pdev_id) 3407 { 3408 if (wmi_handle->ops->convert_pdev_id_host_to_target) { 3409 *target_pdev_id = 3410 wmi_handle->ops->convert_pdev_id_host_to_target( 3411 wmi_handle, 3412 host_pdev_id); 3413 return QDF_STATUS_SUCCESS; 3414 } 3415 3416 return QDF_STATUS_E_FAILURE; 3417 } 3418 3419 #ifndef CNSS_GENL 3420 QDF_STATUS wmi_convert_pdev_id_target_to_host(wmi_unified_t wmi_handle, 3421 uint32_t target_pdev_id, 3422 uint32_t *host_pdev_id) 3423 { 3424 if (wmi_handle->ops->convert_pdev_id_target_to_host) { 3425 *host_pdev_id = 3426 wmi_handle->ops->convert_pdev_id_target_to_host( 3427 wmi_handle, 3428 target_pdev_id); 3429 return QDF_STATUS_SUCCESS; 3430 } 3431 3432 return QDF_STATUS_E_FAILURE; 3433 } 3434 3435 #ifdef WLAN_RTT_MEASUREMENT_NOTIFICATION 3436 QDF_STATUS wmi_unified_extract_measreq_chan_info( 3437 wmi_unified_t wmi_handle, uint32_t data_len, uint8_t *data, 3438 struct rtt_channel_info *chinfo) 3439 { 3440 if (wmi_handle->ops->extract_measreq_chan_info) 3441 return wmi_handle->ops->extract_measreq_chan_info( 3442 data_len, 3443 data, chinfo); 3444 3445 return QDF_STATUS_E_FAILURE; 3446 } 3447 #endif /* WLAN_RTT_MEASUREMENT_NOTIFICATION */ 3448 #endif 3449 3450 QDF_STATUS 3451 wmi_unified_send_bss_color_change_enable_cmd(wmi_unified_t wmi_handle, 3452 uint32_t vdev_id, 3453 bool enable) 3454 { 3455 if (wmi_handle->ops->send_bss_color_change_enable_cmd) 3456 return wmi_handle->ops->send_bss_color_change_enable_cmd( 3457 wmi_handle, vdev_id, enable); 3458 3459 return QDF_STATUS_E_FAILURE; 3460 } 3461 3462 QDF_STATUS wmi_unified_send_obss_color_collision_cfg_cmd( 3463 wmi_unified_t wmi_handle, 3464 struct wmi_obss_color_collision_cfg_param *cfg) 3465 { 3466 if (wmi_handle->ops->send_obss_color_collision_cfg_cmd) 3467 return wmi_handle->ops->send_obss_color_collision_cfg_cmd( 3468 wmi_handle, cfg); 3469 3470 return QDF_STATUS_E_FAILURE; 3471 } 3472 3473 QDF_STATUS wmi_unified_extract_obss_color_collision_info( 3474 wmi_unified_t wmi_handle, 3475 uint8_t *data, struct wmi_obss_color_collision_info *info) 3476 { 3477 if (wmi_handle->ops->extract_obss_color_collision_info) 3478 return wmi_handle->ops->extract_obss_color_collision_info(data, 3479 info); 3480 3481 return QDF_STATUS_E_FAILURE; 3482 } 3483 3484 QDF_STATUS wmi_unified_send_mws_coex_req_cmd(struct wmi_unified *wmi_handle, 3485 uint32_t vdev_id, 3486 uint32_t cmd_id) 3487 { 3488 3489 if (wmi_handle->ops->send_mws_coex_status_req_cmd) 3490 return wmi_handle->ops->send_mws_coex_status_req_cmd(wmi_handle, 3491 vdev_id, cmd_id); 3492 3493 return QDF_STATUS_E_FAILURE; 3494 } 3495 3496 #ifdef WIFI_POS_CONVERGED 3497 QDF_STATUS 3498 wmi_extract_oem_response_param(wmi_unified_t wmi_hdl, void *resp_buf, 3499 struct wmi_oem_response_param *oem_resp_param) 3500 { 3501 if (wmi_hdl->ops->extract_oem_response_param) 3502 return wmi_hdl->ops->extract_oem_response_param(wmi_hdl, 3503 resp_buf, 3504 oem_resp_param); 3505 3506 return QDF_STATUS_E_FAILURE; 3507 } 3508 #endif /* WIFI_POS_CONVERGED */ 3509 3510 #if defined(WIFI_POS_CONVERGED) && defined(WLAN_FEATURE_RTT_11AZ_SUPPORT) 3511 QDF_STATUS 3512 wmi_extract_pasn_peer_create_req(wmi_unified_t wmi, void *evt_buf, 3513 struct wifi_pos_pasn_peer_data *dst) 3514 { 3515 if (wmi->ops->extract_pasn_peer_create_req_event) 3516 return wmi->ops->extract_pasn_peer_create_req_event(wmi, 3517 evt_buf, 3518 dst); 3519 3520 return QDF_STATUS_E_FAILURE; 3521 } 3522 3523 QDF_STATUS 3524 wmi_extract_pasn_peer_delete_req(wmi_unified_t wmi, void *evt_buf, 3525 struct wifi_pos_pasn_peer_data *dst) 3526 { 3527 if (wmi->ops->extract_pasn_peer_delete_req_event) 3528 return wmi->ops->extract_pasn_peer_delete_req_event(wmi, 3529 evt_buf, 3530 dst); 3531 3532 return QDF_STATUS_E_FAILURE; 3533 } 3534 3535 QDF_STATUS 3536 wmi_send_rtt_pasn_auth_status_cmd(wmi_unified_t wmi, 3537 struct wlan_pasn_auth_status *data) 3538 { 3539 if (wmi->ops->send_rtt_pasn_auth_status_cmd) 3540 return wmi->ops->send_rtt_pasn_auth_status_cmd(wmi, data); 3541 3542 return QDF_STATUS_E_FAILURE; 3543 } 3544 3545 QDF_STATUS 3546 wmi_send_rtt_pasn_deauth_cmd(wmi_unified_t wmi, struct qdf_mac_addr *peer_mac) 3547 { 3548 if (wmi->ops->send_rtt_pasn_deauth_cmd) 3549 return wmi->ops->send_rtt_pasn_deauth_cmd(wmi, peer_mac); 3550 3551 return QDF_STATUS_E_FAILURE; 3552 } 3553 #endif 3554 3555 QDF_STATUS wmi_unified_extract_hw_mode_resp(wmi_unified_t wmi, 3556 void *evt_buf, 3557 uint32_t *cmd_status) 3558 { 3559 if (wmi->ops->extract_hw_mode_resp_event) 3560 return wmi->ops->extract_hw_mode_resp_event(wmi, 3561 evt_buf, 3562 cmd_status); 3563 3564 return QDF_STATUS_E_FAILURE; 3565 } 3566 3567 #ifdef FEATURE_ANI_LEVEL_REQUEST 3568 QDF_STATUS wmi_unified_ani_level_cmd_send(wmi_unified_t wmi_handle, 3569 uint32_t *freqs, 3570 uint8_t num_freqs) 3571 { 3572 if (wmi_handle->ops->send_ani_level_cmd) 3573 return wmi_handle->ops->send_ani_level_cmd(wmi_handle, freqs, 3574 num_freqs); 3575 3576 return QDF_STATUS_E_FAILURE; 3577 } 3578 3579 QDF_STATUS wmi_unified_extract_ani_level(wmi_unified_t wmi_handle, 3580 uint8_t *data, 3581 struct wmi_host_ani_level_event **info, 3582 uint32_t *num_channels) 3583 { 3584 if (wmi_handle->ops->extract_ani_level) 3585 return wmi_handle->ops->extract_ani_level(data, info, 3586 num_channels); 3587 3588 return QDF_STATUS_E_FAILURE; 3589 } 3590 #endif /* FEATURE_ANI_LEVEL_REQUEST */ 3591 3592 QDF_STATUS 3593 wmi_unified_extract_roam_trigger_stats(wmi_unified_t wmi, 3594 void *evt_buf, 3595 struct wmi_roam_trigger_info *trig, 3596 uint8_t idx, uint8_t btm_idx) 3597 { 3598 if (wmi->ops->extract_roam_trigger_stats) 3599 return wmi->ops->extract_roam_trigger_stats(wmi, evt_buf, trig, 3600 idx, btm_idx); 3601 3602 return QDF_STATUS_E_FAILURE; 3603 } 3604 3605 QDF_STATUS 3606 wmi_unified_extract_roam_scan_stats(wmi_unified_t wmi, void *evt_buf, 3607 struct wmi_roam_scan_data *dst, uint8_t idx, 3608 uint8_t chan_idx, uint8_t ap_idx) 3609 { 3610 if (wmi->ops->extract_roam_scan_stats) 3611 return wmi->ops->extract_roam_scan_stats(wmi, evt_buf, dst, 3612 idx, chan_idx, ap_idx); 3613 3614 return QDF_STATUS_E_FAILURE; 3615 } 3616 3617 #ifdef WLAN_FEATURE_PKT_CAPTURE 3618 QDF_STATUS 3619 wmi_unified_extract_vdev_mgmt_offload_event( 3620 wmi_unified_t wmi, void *evt_buf, 3621 struct mgmt_offload_event_params *params) 3622 { 3623 if (wmi->ops->extract_vdev_mgmt_offload_event) 3624 return wmi->ops->extract_vdev_mgmt_offload_event(wmi, evt_buf, 3625 params); 3626 3627 return QDF_STATUS_E_FAILURE; 3628 } 3629 #endif /* WLAN_FEATURE_PKT_CAPTURE */ 3630 3631 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2 3632 QDF_STATUS 3633 wmi_unified_extract_smart_monitor_event( 3634 wmi_unified_t wmi, void *evt_buf, 3635 struct smu_event_params *params) 3636 { 3637 if (wmi->ops->extract_smart_monitor_event) 3638 return wmi->ops->extract_smart_monitor_event(wmi, evt_buf, 3639 params); 3640 3641 return QDF_STATUS_E_FAILURE; 3642 } 3643 #endif /* WLAN_FEATURE_PKT_CAPTURE_V2 */ 3644 3645 QDF_STATUS 3646 wmi_unified_extract_roam_result_stats(wmi_unified_t wmi, void *buf, 3647 struct wmi_roam_result *dst, 3648 uint8_t idx) 3649 { 3650 if (wmi->ops->extract_roam_result_stats) 3651 return wmi->ops->extract_roam_result_stats(wmi, buf, dst, idx); 3652 3653 return QDF_STATUS_E_FAILURE; 3654 } 3655 3656 QDF_STATUS 3657 wmi_unified_extract_roam_11kv_stats(wmi_unified_t wmi, void *evt_buf, 3658 struct wmi_neighbor_report_data *dst, 3659 uint8_t idx, uint8_t rpt_idx) 3660 { 3661 if (wmi->ops->extract_roam_11kv_stats) 3662 return wmi->ops->extract_roam_11kv_stats(wmi, evt_buf, dst, idx, 3663 rpt_idx); 3664 3665 return QDF_STATUS_E_FAILURE; 3666 } 3667 3668 #ifdef FEATURE_WLAN_TIME_SYNC_FTM 3669 QDF_STATUS wmi_unified_send_wlan_time_sync_ftm_trigger(wmi_unified_t wmi_handle, 3670 uint32_t vdev_id, 3671 bool burst_mode) 3672 { 3673 if (wmi_handle->ops->send_wlan_time_sync_ftm_trigger_cmd) 3674 return wmi_handle->ops->send_wlan_time_sync_ftm_trigger_cmd 3675 (wmi_handle, vdev_id, burst_mode); 3676 3677 return QDF_STATUS_E_FAILURE; 3678 } 3679 3680 QDF_STATUS wmi_unified_send_wlan_time_sync_qtime(wmi_unified_t wmi_handle, 3681 uint32_t vdev_id, 3682 uint64_t lpass_ts) 3683 { 3684 if (wmi_handle->ops->send_wlan_ts_qtime_cmd) 3685 return wmi_handle->ops->send_wlan_ts_qtime_cmd(wmi_handle, 3686 vdev_id, lpass_ts); 3687 3688 return QDF_STATUS_E_FAILURE; 3689 } 3690 3691 QDF_STATUS wmi_unified_extract_time_sync_ftm_start_stop_params( 3692 wmi_unified_t wmi_handle, void *evt_buf, 3693 struct ftm_time_sync_start_stop_params *param) 3694 { 3695 if (wmi_handle->ops->extract_time_sync_ftm_start_stop_event) 3696 return 3697 wmi_handle->ops->extract_time_sync_ftm_start_stop_event( 3698 wmi_handle, evt_buf, param); 3699 3700 return QDF_STATUS_E_FAILURE; 3701 } 3702 3703 QDF_STATUS wmi_unified_extract_time_sync_ftm_offset( 3704 wmi_unified_t wmi_handle, void *evt_buf, 3705 struct ftm_time_sync_offset *param) 3706 { 3707 if (wmi_handle->ops->extract_time_sync_ftm_offset_event) 3708 return 3709 wmi_handle->ops->extract_time_sync_ftm_offset_event( 3710 wmi_handle, evt_buf, param); 3711 3712 return QDF_STATUS_E_FAILURE; 3713 } 3714 #endif /* FEATURE_WLAN_TIME_SYNC_FTM */ 3715 3716 QDF_STATUS 3717 wmi_unified_send_injector_frame_config_cmd(wmi_unified_t wmi_handle, 3718 struct wmi_host_injector_frame_params *param) 3719 { 3720 if (wmi_handle->ops->send_injector_config_cmd) { 3721 return wmi_handle->ops->send_injector_config_cmd(wmi_handle, 3722 param); 3723 } 3724 3725 return QDF_STATUS_E_FAILURE; 3726 } 3727 3728 QDF_STATUS wmi_unified_send_cp_stats_cmd(wmi_unified_t wmi_handle, 3729 void *buf_ptr, uint32_t buf_len) 3730 { 3731 if (wmi_handle->ops->send_cp_stats_cmd) 3732 return wmi_handle->ops->send_cp_stats_cmd(wmi_handle, buf_ptr, 3733 buf_len); 3734 3735 return QDF_STATUS_E_FAILURE; 3736 } 3737 3738 QDF_STATUS wmi_unified_send_halphy_stats_cmd(wmi_unified_t wmi_handle, 3739 void *buf_ptr, uint32_t buf_len) 3740 { 3741 if (wmi_handle->ops->send_halphy_stats_cmd) 3742 return wmi_handle->ops->send_halphy_stats_cmd(wmi_handle, 3743 buf_ptr, 3744 buf_len); 3745 3746 return QDF_STATUS_E_FAILURE; 3747 } 3748 3749 QDF_STATUS 3750 wmi_unified_extract_cp_stats_more_pending(wmi_unified_t wmi_handle, 3751 void *evt_buf, uint32_t *more_flag) 3752 { 3753 if (wmi_handle->ops->extract_cp_stats_more_pending) 3754 return wmi_handle->ops->extract_cp_stats_more_pending(wmi_handle, 3755 evt_buf, 3756 more_flag); 3757 3758 return QDF_STATUS_E_FAILURE; 3759 } 3760 3761 QDF_STATUS 3762 wmi_unified_extract_halphy_stats_end_of_event(wmi_unified_t wmi_handle, 3763 void *evt_buf, 3764 uint32_t *end_of_event_flag) 3765 { 3766 if (wmi_handle->ops->extract_halphy_stats_end_of_event) 3767 return 3768 wmi_handle->ops->extract_halphy_stats_end_of_event(wmi_handle, 3769 evt_buf, 3770 end_of_event_flag); 3771 3772 return QDF_STATUS_E_FAILURE; 3773 } 3774 3775 QDF_STATUS 3776 wmi_unified_extract_halphy_stats_event_count(wmi_unified_t wmi_handle, 3777 void *evt_buf, 3778 uint32_t *event_count_flag) 3779 { 3780 if (wmi_handle->ops->extract_halphy_stats_event_count) 3781 return 3782 wmi_handle->ops->extract_halphy_stats_event_count(wmi_handle, 3783 evt_buf, 3784 event_count_flag); 3785 3786 return QDF_STATUS_E_FAILURE; 3787 } 3788 3789 /** 3790 * wmi_unified_send_vdev_tsf_tstamp_action_cmd() - send vdev tsf action command 3791 * @wmi: wmi handle 3792 * @vdev_id: vdev id 3793 * 3794 * TSF_TSTAMP_READ_VALUE is the only operation supported 3795 * Return: QDF_STATUS_SUCCESS for success or erro code 3796 */ 3797 QDF_STATUS wmi_unified_send_vdev_tsf_tstamp_action_cmd(wmi_unified_t wmi_hdl, 3798 uint8_t vdev_id) 3799 { 3800 wmi_unified_t wmi_handle = wmi_hdl; 3801 3802 if (wmi_handle->ops->send_vdev_tsf_tstamp_action_cmd) 3803 return wmi_handle->ops->send_vdev_tsf_tstamp_action_cmd( 3804 wmi_handle, vdev_id); 3805 3806 return QDF_STATUS_E_FAILURE; 3807 } 3808 3809 /** 3810 * wmi_extract_vdev_tsf_report_event() - extract vdev tsf report from event 3811 * @wmi_handle: wmi handle 3812 * @param evt_buf: pointer to event buffer 3813 * @wmi_host_tsf_event param: Pointer to hold event info 3814 * 3815 * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure 3816 */ 3817 QDF_STATUS wmi_extract_vdev_tsf_report_event(wmi_unified_t wmi_hdl, 3818 uint8_t *evt_buf, 3819 struct wmi_host_tsf_event *param) 3820 { 3821 wmi_unified_t wmi_handle = wmi_hdl; 3822 3823 if (wmi_handle->ops->extract_vdev_tsf_report_event) 3824 return wmi_handle->ops->extract_vdev_tsf_report_event( 3825 wmi_handle, evt_buf, param); 3826 3827 return QDF_STATUS_E_FAILURE; 3828 } 3829 3830 QDF_STATUS wmi_extract_pdev_csa_switch_count_status( 3831 wmi_unified_t wmi_handle, 3832 void *evt_buf, 3833 struct pdev_csa_switch_count_status *param) 3834 { 3835 if (wmi_handle->ops->extract_pdev_csa_switch_count_status) 3836 return wmi_handle->ops->extract_pdev_csa_switch_count_status( 3837 wmi_handle, 3838 evt_buf, 3839 param); 3840 3841 return QDF_STATUS_E_FAILURE; 3842 } 3843 3844 QDF_STATUS wmi_unified_send_set_tpc_power_cmd(wmi_unified_t wmi_handle, 3845 uint8_t vdev_id, 3846 struct reg_tpc_power_info *param) 3847 { 3848 if (wmi_handle->ops->send_set_tpc_power_cmd) 3849 return wmi_handle->ops->send_set_tpc_power_cmd(wmi_handle, 3850 vdev_id, 3851 param); 3852 3853 return QDF_STATUS_E_FAILURE; 3854 } 3855 3856 #ifdef CONFIG_AFC_SUPPORT 3857 QDF_STATUS 3858 wmi_unified_send_afc_cmd(wmi_unified_t wmi_handle, uint8_t pdev_id, 3859 struct reg_afc_resp_rx_ind_info *param) 3860 { 3861 if (wmi_handle->ops->send_afc_cmd) 3862 return wmi_handle->ops->send_afc_cmd(wmi_handle, 3863 pdev_id, 3864 param); 3865 3866 return QDF_STATUS_E_FAILURE; 3867 } 3868 #endif 3869 3870 QDF_STATUS 3871 wmi_extract_dpd_status_ev_param(wmi_unified_t wmi_handle, 3872 void *evt_buf, 3873 struct wmi_host_pdev_get_dpd_status_event *param) 3874 { 3875 if (wmi_handle->ops->extract_dpd_status_ev_param) 3876 return wmi_handle->ops->extract_dpd_status_ev_param( 3877 wmi_handle, evt_buf, param); 3878 3879 return QDF_STATUS_E_FAILURE; 3880 } 3881 3882 QDF_STATUS 3883 wmi_extract_halphy_cal_status_ev_param(wmi_unified_t wmi_handle, 3884 void *evt_buf, 3885 struct wmi_host_pdev_get_halphy_cal_status_event *param) 3886 { 3887 if (wmi_handle->ops->extract_halphy_cal_status_ev_param) 3888 return wmi_handle->ops->extract_halphy_cal_status_ev_param( 3889 wmi_handle, evt_buf, param); 3890 3891 return QDF_STATUS_E_FAILURE; 3892 } 3893 3894 QDF_STATUS 3895 wmi_extract_halphy_cal_ev_param(wmi_unified_t wmi_handle, 3896 void *evt_buf, 3897 struct wmi_host_pdev_set_halphy_cal_event *param) 3898 { 3899 if (wmi_handle->ops->extract_halphy_cal_ev_param) 3900 return wmi_handle->ops->extract_halphy_cal_ev_param( 3901 wmi_handle, evt_buf, param); 3902 3903 return QDF_STATUS_E_FAILURE; 3904 } 3905 3906 QDF_STATUS 3907 wmi_unified_send_set_halphy_cal(wmi_unified_t wmi_handle, 3908 struct wmi_host_send_set_halphy_cal_info *param) 3909 { 3910 if (wmi_handle->ops->send_set_halphy_cal) 3911 return wmi_handle->ops->send_set_halphy_cal(wmi_handle, param); 3912 3913 return QDF_STATUS_E_FAILURE; 3914 } 3915 3916 #ifdef FEATURE_MEC_OFFLOAD 3917 QDF_STATUS 3918 wmi_unified_pdev_set_mec_timer(struct wmi_unified *wmi_handle, 3919 struct set_mec_timer_params *param) 3920 { 3921 if (wmi_handle->ops->send_pdev_set_mec_timer_cmd) 3922 return wmi_handle->ops->send_pdev_set_mec_timer_cmd(wmi_handle, 3923 param); 3924 3925 return QDF_STATUS_E_FAILURE; 3926 } 3927 #endif 3928 3929 #ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE 3930 QDF_STATUS wmi_unified_send_set_mac_addr(struct wmi_unified *wmi_handle, 3931 struct set_mac_addr_params *params) 3932 { 3933 if (wmi_handle->ops->send_set_mac_address_cmd) 3934 return wmi_handle->ops->send_set_mac_address_cmd(wmi_handle, 3935 params); 3936 return QDF_STATUS_E_FAILURE; 3937 } 3938 3939 QDF_STATUS wmi_extract_update_mac_address_event(wmi_unified_t wmi_handle, 3940 void *evt_buf, uint8_t *vdev_id, 3941 uint8_t *status) 3942 { 3943 if (wmi_handle->ops->extract_update_mac_address_event) 3944 return wmi_handle->ops->extract_update_mac_address_event( 3945 wmi_handle, evt_buf, vdev_id, status); 3946 3947 return QDF_STATUS_E_FAILURE; 3948 } 3949 #endif 3950 3951 #ifdef WLAN_FEATURE_11BE_MLO 3952 QDF_STATUS wmi_extract_quiet_offload_event( 3953 struct wmi_unified *wmi_handle, void *evt_buf, 3954 struct vdev_sta_quiet_event *quiet_event) 3955 { 3956 if (wmi_handle->ops->extract_quiet_offload_event) 3957 return wmi_handle->ops->extract_quiet_offload_event( 3958 wmi_handle, evt_buf, quiet_event); 3959 3960 return QDF_STATUS_E_FAILURE; 3961 } 3962 #endif 3963 3964 #ifdef WLAN_SUPPORT_PPEDS 3965 QDF_STATUS 3966 wmi_unified_peer_ppe_ds_param_send(wmi_unified_t wmi_handle, 3967 struct peer_ppe_ds_param *param) 3968 { 3969 if (wmi_handle->ops->peer_ppe_ds_param_send) 3970 return wmi_handle->ops->peer_ppe_ds_param_send( 3971 wmi_handle, param); 3972 3973 return QDF_STATUS_E_FAILURE; 3974 } 3975 #endif /* WLAN_SUPPORT_PPEDS */ 3976 3977 /** 3978 * wmi_unified_pn_mgmt_rxfilter_send_cmd() - Send PN mgmt RxFilter command to FW 3979 * @wmi_handle: WMI handle 3980 * @params: RxFilter params 3981 * 3982 * Return: QDF_STATUS_SUCCESS for success or error code 3983 */ 3984 QDF_STATUS wmi_unified_pn_mgmt_rxfilter_send_cmd( 3985 struct wmi_unified *wmi_handle, 3986 struct vdev_pn_mgmt_rxfilter_params *params) 3987 { 3988 if (wmi_handle->ops->send_vdev_pn_mgmt_rxfilter_cmd) 3989 return wmi_handle->ops->send_vdev_pn_mgmt_rxfilter_cmd( 3990 wmi_handle, params); 3991 return QDF_STATUS_E_FAILURE; 3992 } 3993 3994 QDF_STATUS 3995 wmi_extract_pktlog_decode_info_event(wmi_unified_t wmi_handle, 3996 void *evt_buf, uint8_t *pdev_id, 3997 uint8_t *software_image, 3998 uint8_t *chip_info, 3999 uint32_t *pktlog_json_version) 4000 { 4001 if (wmi_handle->ops->extract_pktlog_decode_info_event) 4002 return wmi_handle->ops->extract_pktlog_decode_info_event( 4003 wmi_handle, evt_buf, pdev_id, 4004 software_image, chip_info, 4005 pktlog_json_version); 4006 return QDF_STATUS_E_FAILURE; 4007 } 4008 4009 /** 4010 * wmi_extract_pdev_telemetry_stats_tlv - extract pdev telemetry stats 4011 * @wmi_handle: wmi handle 4012 * @evt_buf: pointer to event buffer 4013 * @pdev stats: Pointer to hold pdev telemetry stats 4014 * 4015 * Return: QDF_STATUS_SUCCESS for success or error code 4016 */ 4017 QDF_STATUS wmi_extract_pdev_telemetry_stats( 4018 wmi_unified_t wmi_handle, void *evt_buf, 4019 struct wmi_host_pdev_telemetry_stats *pdev_stats) 4020 { 4021 if (wmi_handle->ops->extract_pdev_telemetry_stats) 4022 return wmi_handle->ops->extract_pdev_telemetry_stats( 4023 wmi_handle, evt_buf, pdev_stats); 4024 4025 return QDF_STATUS_E_FAILURE; 4026 } 4027 4028 #ifdef FEATURE_SET 4029 QDF_STATUS wmi_feature_set_cmd_send(wmi_unified_t wmi_handle, 4030 struct target_feature_set *feature_set) 4031 { 4032 if (wmi_handle->ops->feature_set_cmd_send) 4033 return wmi_handle->ops->feature_set_cmd_send(wmi_handle, 4034 feature_set); 4035 4036 return QDF_STATUS_E_FAILURE; 4037 } 4038 #endif 4039