1 /* 2 * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2023 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 * DOC: Declare public API related to the wlan ipa called by north bound 21 */ 22 23 #ifndef _WLAN_IPA_UCFG_API_H_ 24 #define _WLAN_IPA_UCFG_API_H_ 25 26 #include "wlan_ipa_public_struct.h" 27 #include "wlan_ipa_obj_mgmt_api.h" 28 #include "wlan_objmgr_pdev_obj.h" 29 #include "qdf_types.h" 30 #include "wlan_ipa_main.h" 31 32 #ifdef IPA_OFFLOAD 33 34 /** 35 * ucfg_ipa_set_pld_enable() - set g_ipa_pld_enable 36 * @flag: flag to set g_ipa_pld_enable 37 * 38 * Return: None 39 */ 40 void ucfg_ipa_set_pld_enable(bool flag); 41 42 /** 43 * ucfg_ipa_get_pld_enable() - check if IPA is disabled in pld 44 * 45 * Return: g_ipa_pld_enable 46 */ 47 bool ucfg_ipa_get_pld_enable(void); 48 49 /** 50 * ucfg_ipa_is_present() - get IPA hw status 51 * 52 * ipa_uc_reg_rdyCB is not directly designed to check 53 * ipa hw status. This is an undocumented function which 54 * has confirmed with IPA team. 55 * 56 * Return: true - ipa hw present 57 * false - ipa hw not present 58 */ 59 bool ucfg_ipa_is_present(void); 60 61 /** 62 * ucfg_ipa_is_ready() - get IPA ready status 63 * 64 * After ipa_ready_cb() is registered and later invoked by IPA 65 * driver, ipa ready status flag is updated in wlan driver. 66 * Unless IPA ready callback is invoked and ready status is 67 * updated none of the IPA APIs should be invoked. 68 * 69 * Return: true - ipa is ready 70 * false - ipa is not ready 71 */ 72 bool ucfg_ipa_is_ready(void); 73 74 /** 75 * ucfg_ipa_is_enabled() - get IPA enable status 76 * 77 * Return: true - ipa is enabled 78 * false - ipa is not enabled 79 */ 80 bool ucfg_ipa_is_enabled(void); 81 82 /** 83 * ucfg_ipa_uc_is_enabled() - get IPA uC enable status 84 * 85 * Return: true - ipa uC is enabled 86 * false - ipa uC is not enabled 87 */ 88 bool ucfg_ipa_uc_is_enabled(void); 89 90 /** 91 * ucfg_ipa_is_vlan_enabled() - get IPA vlan support enable status 92 * 93 * Return: true - ipa vlan support is enabled 94 * false - ipa vlan support is not enabled 95 */ 96 bool ucfg_ipa_is_vlan_enabled(void); 97 98 /** 99 * ucfg_ipa_set_dp_handle() - register DP handle 100 * @psoc: psoc handle 101 * @dp_soc: data path soc handle 102 * 103 * Return: None 104 */ 105 void ucfg_ipa_set_dp_handle(struct wlan_objmgr_psoc *psoc, 106 void *dp_soc); 107 108 /** 109 * ucfg_ipa_set_pdev_id() - register pdev id 110 * @psoc: psoc handle 111 * @pdev_id: data path txrx pdev id 112 * 113 * Return: None 114 */ 115 void ucfg_ipa_set_pdev_id(struct wlan_objmgr_psoc *psoc, 116 uint8_t pdev_id); 117 118 /** 119 * ucfg_ipa_set_perf_level() - Set IPA perf level 120 * @pdev: pdev obj 121 * @tx_packets: Number of packets transmitted in the last sample period 122 * @rx_packets: Number of packets received in the last sample period 123 * 124 * Return: QDF_STATUS_SUCCESS on success 125 */ 126 QDF_STATUS ucfg_ipa_set_perf_level(struct wlan_objmgr_pdev *pdev, 127 uint64_t tx_packets, uint64_t rx_packets); 128 129 /** 130 * ucfg_ipa_uc_info() - Print IPA uC resource and session information 131 * @pdev: pdev obj 132 * 133 * Return: None 134 */ 135 void ucfg_ipa_uc_info(struct wlan_objmgr_pdev *pdev); 136 137 /** 138 * ucfg_ipa_uc_stat() - Print IPA uC stats 139 * @pdev: pdev obj 140 * 141 * Return: None 142 */ 143 void ucfg_ipa_uc_stat(struct wlan_objmgr_pdev *pdev); 144 145 146 /** 147 * ucfg_ipa_uc_rt_debug_host_dump() - IPA rt debug host dump 148 * @pdev: pdev obj 149 * 150 * Return: None 151 */ 152 void ucfg_ipa_uc_rt_debug_host_dump(struct wlan_objmgr_pdev *pdev); 153 154 /** 155 * ucfg_ipa_dump_info() - Dump IPA context information 156 * @pdev: pdev obj 157 * 158 * Return: None 159 */ 160 void ucfg_ipa_dump_info(struct wlan_objmgr_pdev *pdev); 161 162 /** 163 * ucfg_ipa_uc_stat_request() - Get IPA stats from IPA. 164 * @pdev: pdev obj 165 * @reason: STAT REQ Reason 166 * 167 * Return: None 168 */ 169 void ucfg_ipa_uc_stat_request(struct wlan_objmgr_pdev *pdev, 170 uint8_t reason); 171 172 /** 173 * ucfg_ipa_uc_stat_query() - Query the IPA stats 174 * @pdev: pdev obj 175 * @ipa_tx_diff: tx packet count diff from previous tx packet count 176 * @ipa_rx_diff: rx packet count diff from previous rx packet count 177 * 178 * Return: None 179 */ 180 void ucfg_ipa_uc_stat_query(struct wlan_objmgr_pdev *pdev, 181 uint32_t *ipa_tx_diff, uint32_t *ipa_rx_diff); 182 183 /** 184 * ucfg_ipa_reg_sap_xmit_cb() - Register upper layer SAP cb to transmit 185 * @pdev: pdev obj 186 * @cb: callback 187 * 188 * Return: None 189 */ 190 void ucfg_ipa_reg_sap_xmit_cb(struct wlan_objmgr_pdev *pdev, 191 wlan_ipa_softap_xmit cb); 192 193 /** 194 * ucfg_ipa_reg_send_to_nw_cb() - Register cb to send IPA Rx packet to network 195 * @pdev: pdev obj 196 * @cb: callback 197 * 198 * Return: None 199 */ 200 void ucfg_ipa_reg_send_to_nw_cb(struct wlan_objmgr_pdev *pdev, 201 wlan_ipa_send_to_nw cb); 202 203 /** 204 * ucfg_ipa_reg_rps_enable_cb() - Register cb to enable RPS 205 * @pdev: pdev obj 206 * @cb: callback 207 * 208 * Return: None 209 */ 210 #ifdef QCA_CONFIG_RPS 211 void ucfg_ipa_reg_rps_enable_cb(struct wlan_objmgr_pdev *pdev, 212 wlan_ipa_rps_enable cb); 213 #else 214 static inline 215 void ucfg_ipa_reg_rps_enable_cb(struct wlan_objmgr_pdev *pdev, 216 wlan_ipa_rps_enable cb) 217 { 218 } 219 #endif 220 221 /** 222 * ucfg_ipa_reg_is_driver_unloading_cb() - Register cb to check if driver 223 * is unloading 224 * @pdev: pdev obj 225 * @cb: callback 226 * 227 * Return: None 228 */ 229 void ucfg_ipa_reg_is_driver_unloading_cb(struct wlan_objmgr_pdev *pdev, 230 wlan_ipa_driver_unloading cb); 231 232 /** 233 * ucfg_ipa_set_mcc_mode() - Set MCC mode 234 * @pdev: pdev obj 235 * @mcc_mode: 0=MCC/1=SCC 236 * 237 * Return: void 238 */ 239 void ucfg_ipa_set_mcc_mode(struct wlan_objmgr_pdev *pdev, bool mcc_mode); 240 241 /** 242 * ucfg_ipa_set_dfs_cac_tx() - Set DFS cac tx block 243 * @pdev: pdev obj 244 * @tx_block: dfs cac tx block 245 * 246 * Return: void 247 */ 248 void ucfg_ipa_set_dfs_cac_tx(struct wlan_objmgr_pdev *pdev, bool tx_block); 249 250 /** 251 * ucfg_ipa_set_ap_ibss_fwd() - Set AP intra bss forward 252 * @pdev: pdev obj 253 * @session_id: vdev id 254 * @intra_bss: enable or disable ap intra bss forward 255 * 256 * Return: void 257 */ 258 void ucfg_ipa_set_ap_ibss_fwd(struct wlan_objmgr_pdev *pdev, uint8_t session_id, 259 bool intra_bss); 260 261 /** 262 * ucfg_ipa_uc_force_pipe_shutdown() - Force shutdown IPA pipe 263 * @pdev: pdev obj 264 * 265 * Return: void 266 */ 267 void ucfg_ipa_uc_force_pipe_shutdown(struct wlan_objmgr_pdev *pdev); 268 269 /** 270 * ucfg_ipa_flush() - flush IPA exception path SKB's 271 * @pdev: pdev obj 272 * 273 * Return: None 274 */ 275 void ucfg_ipa_flush(struct wlan_objmgr_pdev *pdev); 276 277 /** 278 * ucfg_ipa_suspend() - Suspend IPA 279 * @pdev: pdev obj 280 * 281 * Return: QDF STATUS 282 */ 283 QDF_STATUS ucfg_ipa_suspend(struct wlan_objmgr_pdev *pdev); 284 285 /** 286 * ucfg_ipa_resume() - Resume IPA 287 * @pdev: pdev obj 288 * 289 * Return: QDF STATUS 290 */ 291 QDF_STATUS ucfg_ipa_resume(struct wlan_objmgr_pdev *pdev); 292 293 /** 294 * ucfg_ipa_uc_ol_init() - Initialize IPA uC offload 295 * @pdev: pdev obj 296 * @osdev: OS dev 297 * 298 * Return: QDF STATUS 299 */ 300 QDF_STATUS ucfg_ipa_uc_ol_init(struct wlan_objmgr_pdev *pdev, 301 qdf_device_t osdev); 302 303 /** 304 * ucfg_ipa_uc_ol_deinit() - Deinitialize IPA uC offload 305 * @pdev: pdev obj 306 * 307 * Return: QDF STATUS 308 */ 309 QDF_STATUS ucfg_ipa_uc_ol_deinit(struct wlan_objmgr_pdev *pdev); 310 311 /** 312 * ucfg_ipa_is_tx_pending() - Check if IPA WLAN TX completions are pending 313 * @pdev: pdev obj 314 * 315 * Return: bool if pending TX for IPA. 316 */ 317 bool ucfg_ipa_is_tx_pending(struct wlan_objmgr_pdev *pdev); 318 319 /** 320 * ucfg_ipa_send_mcc_scc_msg() - Send IPA WLAN_SWITCH_TO_MCC/SCC message 321 * @pdev: pdev obj 322 * @mcc_mode: 0=MCC/1=SCC 323 * 324 * Return: QDF STATUS 325 */ 326 QDF_STATUS ucfg_ipa_send_mcc_scc_msg(struct wlan_objmgr_pdev *pdev, 327 bool mcc_mode); 328 329 /** 330 * ucfg_ipa_wlan_evt() - IPA event handler 331 * @pdev: pdev obj 332 * @net_dev: Interface net device 333 * @device_mode: Net interface device mode 334 * @session_id: session id for the event 335 * @ipa_event_type: event enum of type ipa_wlan_event 336 * @mac_addr: MAC address associated with the event 337 * @is_2g_iface: true if interface is operating on 2G band, otherwise false 338 * 339 * Return: QDF_STATUS 340 */ 341 QDF_STATUS ucfg_ipa_wlan_evt(struct wlan_objmgr_pdev *pdev, 342 qdf_netdev_t net_dev, uint8_t device_mode, 343 uint8_t session_id, 344 enum wlan_ipa_wlan_event ipa_event_type, 345 const uint8_t *mac_addr, bool is_2g_iface); 346 347 /** 348 * ucfg_ipa_uc_smmu_map() - Map / Unmap DMA buffer to IPA UC 349 * @map: Map / unmap operation 350 * @num_buf: Number of buffers in array 351 * @buf_arr: Buffer array of DMA mem mapping info 352 * 353 * Return: Status of map operation 354 */ 355 int ucfg_ipa_uc_smmu_map(bool map, uint32_t num_buf, qdf_mem_info_t *buf_arr); 356 357 /** 358 * ucfg_ipa_is_fw_wdi_activated - Is FW WDI activated? 359 * @pdev: pdev obj 360 * 361 * Return: true if FW WDI activated, false otherwise 362 */ 363 bool ucfg_ipa_is_fw_wdi_activated(struct wlan_objmgr_pdev *pdev); 364 365 /** 366 * ucfg_ipa_uc_cleanup_sta() - disconnect and cleanup sta iface 367 * @pdev: pdev obj 368 * @net_dev: Interface net device 369 * 370 * Send disconnect sta event to IPA driver and cleanup IPA iface, 371 * if not yet done 372 * 373 * Return: void 374 */ 375 void ucfg_ipa_uc_cleanup_sta(struct wlan_objmgr_pdev *pdev, 376 qdf_netdev_t net_dev); 377 378 /** 379 * ucfg_ipa_uc_disconnect_ap() - send ap disconnect event 380 * @pdev: pdev obj 381 * @net_dev: Interface net device 382 * 383 * Send disconnect ap event to IPA driver during SSR 384 * 385 * Return: QDF_STATUS 386 */ 387 QDF_STATUS ucfg_ipa_uc_disconnect_ap(struct wlan_objmgr_pdev *pdev, 388 qdf_netdev_t net_dev); 389 390 /** 391 * ucfg_ipa_cleanup_dev_iface() - Clean up net dev IPA interface 392 * @pdev: pdev obj 393 * @net_dev: Interface net device 394 * 395 * 396 * Return: None 397 */ 398 void ucfg_ipa_cleanup_dev_iface(struct wlan_objmgr_pdev *pdev, 399 qdf_netdev_t net_dev); 400 401 /** 402 * ucfg_ipa_uc_ssr_cleanup() - Handle IPA cleanup for SSR 403 * @pdev: pdev obj 404 * 405 * From hostside do cleanup such as deregister IPA interafces 406 * and send disconnect events so that it will be sync after SSR 407 * 408 * Return: None 409 */ 410 void ucfg_ipa_uc_ssr_cleanup(struct wlan_objmgr_pdev *pdev); 411 412 /** 413 * ucfg_ipa_fw_rejuvenate_send_msg() - Send msg to IPA driver in FW rejuvenate 414 * @pdev: pdev obj 415 * 416 * Return: None 417 */ 418 void ucfg_ipa_fw_rejuvenate_send_msg(struct wlan_objmgr_pdev *pdev); 419 420 /** 421 * ucfg_ipa_component_config_update() - update IPA component config 422 * @psoc: pointer to psoc object 423 * 424 * Return: None 425 */ 426 void ucfg_ipa_component_config_update(struct wlan_objmgr_psoc *psoc); 427 428 /** 429 * ucfg_ipa_component_config_free() - Free IPA component config 430 * 431 * Return: None 432 */ 433 void ucfg_ipa_component_config_free(void); 434 435 /** 436 * ucfg_ipa_get_tx_buf_count() - get IPA tx buffer count 437 * 438 * Return: IPA tx buffer count 439 */ 440 uint32_t ucfg_ipa_get_tx_buf_count(void); 441 442 /** 443 * ucfg_ipa_update_tx_stats() - send embedded tx traffic in bytes to IPA 444 * @pdev: pdev obj 445 * @sta_tx: tx in bytes on sta vdev 446 * @ap_tx: tx in bytes on sap vdev 447 * 448 * Return: void 449 */ 450 void ucfg_ipa_update_tx_stats(struct wlan_objmgr_pdev *pdev, uint64_t sta_tx, 451 uint64_t ap_tx); 452 /** 453 * ucfg_ipa_flush_pending_vdev_events() - flush pending vdev wlan ipa events 454 * @pdev: pdev obj 455 * @vdev_id: vdev id 456 * 457 * Return: None 458 */ 459 void ucfg_ipa_flush_pending_vdev_events(struct wlan_objmgr_pdev *pdev, 460 uint8_t vdev_id); 461 462 /** 463 * ucfg_ipa_is_wds_enabled() - get IPA AP WDS status 464 * 465 * IPA driver requires WDS status for adding filter rules 466 * to support easymesh feature, IPA expects wds status 467 * with WLAN_IPA_AP_CONNECT event. 468 * 469 * Return: true - WDS is enabled 470 * false - WDS is not enabled 471 */ 472 bool ucfg_ipa_is_wds_enabled(void); 473 #else 474 static inline void ucfg_ipa_set_pld_enable(bool flag) 475 { 476 } 477 478 static inline bool ucfg_ipa_get_pld_enable(void) 479 { 480 return true; 481 } 482 483 static inline bool ucfg_ipa_is_present(void) 484 { 485 return false; 486 } 487 488 static inline bool ucfg_ipa_is_ready(void) 489 { 490 return false; 491 } 492 493 static inline void ucfg_ipa_update_config(struct wlan_ipa_config *config) 494 { 495 } 496 497 static inline bool ucfg_ipa_is_enabled(void) 498 { 499 return false; 500 } 501 502 static inline bool ucfg_ipa_uc_is_enabled(void) 503 { 504 return false; 505 } 506 507 static inline bool ucfg_ipa_is_vlan_enabled(void) 508 { 509 return false; 510 } 511 512 static inline 513 QDF_STATUS ucfg_ipa_set_dp_handle(struct wlan_objmgr_psoc *psoc, 514 void *dp_soc) 515 { 516 return QDF_STATUS_SUCCESS; 517 } 518 519 static inline 520 QDF_STATUS ucfg_ipa_set_pdev_id(struct wlan_objmgr_psoc *psoc, 521 uint8_t pdev_id) 522 { 523 return QDF_STATUS_SUCCESS; 524 } 525 526 static inline 527 QDF_STATUS ucfg_ipa_set_perf_level(struct wlan_objmgr_pdev *pdev, 528 uint64_t tx_packets, uint64_t rx_packets) 529 { 530 return QDF_STATUS_SUCCESS; 531 } 532 533 static inline 534 void ucfg_ipa_uc_info(struct wlan_objmgr_pdev *pdev) 535 { 536 } 537 538 static inline 539 void ucfg_ipa_uc_stat(struct wlan_objmgr_pdev *pdev) 540 { 541 } 542 543 static inline 544 void ucfg_ipa_uc_rt_debug_host_dump(struct wlan_objmgr_pdev *pdev) 545 { 546 } 547 548 static inline 549 void ucfg_ipa_dump_info(struct wlan_objmgr_pdev *pdev) 550 { 551 } 552 553 static inline 554 void ucfg_ipa_uc_stat_request(struct wlan_objmgr_pdev *pdev, 555 uint8_t reason) 556 { 557 } 558 559 static inline 560 void ucfg_ipa_uc_stat_query(struct wlan_objmgr_pdev *pdev, 561 uint32_t *ipa_tx_diff, uint32_t *ipa_rx_diff) 562 { 563 } 564 565 static inline 566 void ucfg_ipa_reg_sap_xmit_cb(struct wlan_objmgr_pdev *pdev, 567 wlan_ipa_softap_xmit cb) 568 { 569 } 570 571 static inline 572 void ucfg_ipa_reg_send_to_nw_cb(struct wlan_objmgr_pdev *pdev, 573 wlan_ipa_send_to_nw cb) 574 { 575 } 576 577 static inline 578 void ucfg_ipa_reg_rps_enable_cb(struct wlan_objmgr_pdev *pdev, 579 wlan_ipa_rps_enable cb) 580 { 581 } 582 583 static inline 584 void ucfg_ipa_reg_is_driver_unloading_cb(struct wlan_objmgr_pdev *pdev, 585 wlan_ipa_driver_unloading cb) 586 { 587 } 588 589 static inline 590 void ucfg_ipa_set_mcc_mode(struct wlan_objmgr_pdev *pdev, bool mcc_mode) 591 { 592 } 593 594 static inline 595 void ucfg_ipa_set_dfs_cac_tx(struct wlan_objmgr_pdev *pdev, bool tx_block) 596 { 597 } 598 599 static inline 600 void ucfg_ipa_set_ap_ibss_fwd(struct wlan_objmgr_pdev *pdev, uint8_t session_id, 601 bool intra_bss) 602 { 603 } 604 605 static inline 606 void ucfg_ipa_uc_force_pipe_shutdown(struct wlan_objmgr_pdev *pdev) 607 { 608 } 609 610 static inline 611 void ucfg_ipa_flush(struct wlan_objmgr_pdev *pdev) 612 { 613 } 614 615 static inline 616 QDF_STATUS ucfg_ipa_suspend(struct wlan_objmgr_pdev *pdev) 617 { 618 return QDF_STATUS_SUCCESS; 619 } 620 621 static inline 622 QDF_STATUS ucfg_ipa_resume(struct wlan_objmgr_pdev *pdev) 623 { 624 return QDF_STATUS_SUCCESS; 625 } 626 627 static inline 628 QDF_STATUS ucfg_ipa_uc_ol_init(struct wlan_objmgr_pdev *pdev, 629 qdf_device_t osdev) 630 { 631 return QDF_STATUS_SUCCESS; 632 } 633 634 static inline 635 QDF_STATUS ucfg_ipa_uc_ol_deinit(struct wlan_objmgr_pdev *pdev) 636 { 637 return QDF_STATUS_SUCCESS; 638 } 639 640 static inline bool ucfg_ipa_is_tx_pending(struct wlan_objmgr_pdev *pdev) 641 { 642 return false; 643 } 644 645 static inline 646 QDF_STATUS ucfg_ipa_send_mcc_scc_msg(struct wlan_objmgr_pdev *pdev, 647 bool mcc_mode) 648 { 649 return QDF_STATUS_SUCCESS; 650 } 651 652 static inline 653 QDF_STATUS ucfg_ipa_wlan_evt(struct wlan_objmgr_pdev *pdev, 654 qdf_netdev_t net_dev, uint8_t device_mode, 655 uint8_t session_id, 656 enum wlan_ipa_wlan_event ipa_event_type, 657 const uint8_t *mac_addr, bool is_2g_iface) 658 { 659 return QDF_STATUS_SUCCESS; 660 } 661 662 static inline 663 int ucfg_ipa_uc_smmu_map(bool map, uint32_t num_buf, qdf_mem_info_t *buf_arr) 664 { 665 return 0; 666 } 667 668 static inline 669 bool ucfg_ipa_is_fw_wdi_activated(struct wlan_objmgr_pdev *pdev) 670 { 671 return false; 672 } 673 674 static inline 675 void ucfg_ipa_uc_cleanup_sta(struct wlan_objmgr_pdev *pdev, 676 qdf_netdev_t net_dev) 677 { 678 } 679 680 static inline 681 QDF_STATUS ucfg_ipa_uc_disconnect_ap(struct wlan_objmgr_pdev *pdev, 682 qdf_netdev_t net_dev) 683 { 684 return QDF_STATUS_SUCCESS; 685 } 686 687 static inline 688 void ucfg_ipa_cleanup_dev_iface(struct wlan_objmgr_pdev *pdev, 689 qdf_netdev_t net_dev) 690 { 691 } 692 693 static inline 694 void ucfg_ipa_uc_ssr_cleanup(struct wlan_objmgr_pdev *pdev) 695 { 696 } 697 698 static inline 699 void ucfg_ipa_fw_rejuvenate_send_msg(struct wlan_objmgr_pdev *pdev) 700 { 701 } 702 703 static inline 704 void ucfg_ipa_component_config_update(struct wlan_objmgr_psoc *psoc) 705 { 706 } 707 708 static inline 709 void ucfg_ipa_component_config_free(void) 710 { 711 } 712 713 static inline 714 uint32_t ucfg_ipa_get_tx_buf_count(void) 715 { 716 return 0; 717 } 718 719 static inline 720 void ucfg_ipa_update_tx_stats(struct wlan_objmgr_pdev *pdev, uint64_t sta_tx, 721 uint64_t ap_tx) 722 { 723 } 724 725 static inline 726 void ucfg_ipa_flush_pending_vdev_events(struct wlan_objmgr_pdev *pdev, 727 uint8_t vdev_id) 728 { 729 } 730 731 static inline 732 bool ucfg_ipa_is_wds_enabled(void) 733 { 734 return false; 735 } 736 #endif /* IPA_OFFLOAD */ 737 #endif /* _WLAN_IPA_UCFG_API_H_ */ 738