1 /* 2 * Copyright (c) 2018-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 * 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 * @mcc_mode: 0=MCC/1=SCC 322 * 323 * Return: QDF STATUS 324 */ 325 QDF_STATUS ucfg_ipa_send_mcc_scc_msg(struct wlan_objmgr_pdev *pdev, 326 bool mcc_mode); 327 328 /** 329 * ucfg_ipa_wlan_evt() - IPA event handler 330 * @pdev: pdev obj 331 * @net_dev: Interface net device 332 * @device_mode: Net interface device mode 333 * @session_id: session id for the event 334 * @type: event enum of type ipa_wlan_event 335 * @mac_address: MAC address associated with the event 336 * @is_2g_iface: true if interface is operating on 2G band, otherwise false 337 * 338 * Return: QDF_STATUS 339 */ 340 QDF_STATUS ucfg_ipa_wlan_evt(struct wlan_objmgr_pdev *pdev, 341 qdf_netdev_t net_dev, uint8_t device_mode, 342 uint8_t session_id, 343 enum wlan_ipa_wlan_event ipa_event_type, 344 uint8_t *mac_addr, bool is_2g_iface); 345 346 /** 347 * ucfg_ipa_uc_smmu_map() - Map / Unmap DMA buffer to IPA UC 348 * @map: Map / unmap operation 349 * @num_buf: Number of buffers in array 350 * @buf_arr: Buffer array of DMA mem mapping info 351 * 352 * Return: Status of map operation 353 */ 354 int ucfg_ipa_uc_smmu_map(bool map, uint32_t num_buf, qdf_mem_info_t *buf_arr); 355 356 /** 357 * ucfg_ipa_is_fw_wdi_activated - Is FW WDI activated? 358 * @pdev: pdev obj 359 * 360 * Return: true if FW WDI activated, false otherwise 361 */ 362 bool ucfg_ipa_is_fw_wdi_activated(struct wlan_objmgr_pdev *pdev); 363 364 /** 365 * ucfg_ipa_uc_cleanup_sta() - disconnect and cleanup sta iface 366 * @pdev: pdev obj 367 * @net_dev: Interface net device 368 * 369 * Send disconnect sta event to IPA driver and cleanup IPA iface, 370 * if not yet done 371 * 372 * Return: void 373 */ 374 void ucfg_ipa_uc_cleanup_sta(struct wlan_objmgr_pdev *pdev, 375 qdf_netdev_t net_dev); 376 377 /** 378 * ucfg_ipa_uc_disconnect_ap() - send ap disconnect event 379 * @pdev: pdev obj 380 * @net_dev: Interface net device 381 * 382 * Send disconnect ap event to IPA driver during SSR 383 * 384 * Return: QDF_STATUS 385 */ 386 QDF_STATUS ucfg_ipa_uc_disconnect_ap(struct wlan_objmgr_pdev *pdev, 387 qdf_netdev_t net_dev); 388 389 /** 390 * ucfg_ipa_cleanup_dev_iface() - Clean up net dev IPA interface 391 * @pdev: pdev obj 392 * @net_dev: Interface net device 393 * 394 * 395 * Return: None 396 */ 397 void ucfg_ipa_cleanup_dev_iface(struct wlan_objmgr_pdev *pdev, 398 qdf_netdev_t net_dev); 399 400 /** 401 * ucfg_ipa_uc_ssr_cleanup() - Handle IPA cleanup for SSR 402 * @pdev: pdev obj 403 * 404 * From hostside do cleanup such as deregister IPA interafces 405 * and send disconnect events so that it will be sync after SSR 406 * 407 * Return: None 408 */ 409 void ucfg_ipa_uc_ssr_cleanup(struct wlan_objmgr_pdev *pdev); 410 411 /** 412 * ucfg_ipa_fw_rejuvenate_send_msg() - Send msg to IPA driver in FW rejuvenate 413 * @pdev: pdev obj 414 * 415 * Return: None 416 */ 417 void ucfg_ipa_fw_rejuvenate_send_msg(struct wlan_objmgr_pdev *pdev); 418 419 /** 420 * ucfg_ipa_component_config_update() - update IPA component config 421 * @psoc: pointer to psoc object 422 * 423 * Return: None 424 */ 425 void ucfg_ipa_component_config_update(struct wlan_objmgr_psoc *psoc); 426 427 /** 428 * ucfg_ipa_component_config_free() - Free IPA component config 429 * 430 * Return: None 431 */ 432 void ucfg_ipa_component_config_free(void); 433 434 /** 435 * ucfg_get_ipa_tx_buf_count() - get IPA tx buffer count 436 * 437 * Return: IPA tx buffer count 438 */ 439 uint32_t ucfg_ipa_get_tx_buf_count(void); 440 441 /** 442 * ucfg_ipa_update_tx_stats() - send embedded tx traffic in bytes to IPA 443 * @pdev: pdev obj 444 * @sta_tx: tx in bytes on sta vdev 445 * @ap_tx: tx in bytes on sap vdev 446 * 447 * Return: void 448 */ 449 void ucfg_ipa_update_tx_stats(struct wlan_objmgr_pdev *pdev, uint64_t sta_tx, 450 uint64_t ap_tx); 451 /** 452 * ucfg_ipa_flush_pending_vdev_events() - flush pending vdev wlan ipa events 453 * @pdev: pdev obj 454 * @vdev_id: vdev id 455 * 456 * Return: None 457 */ 458 void ucfg_ipa_flush_pending_vdev_events(struct wlan_objmgr_pdev *pdev, 459 uint8_t vdev_id); 460 461 /** 462 * ucfg_ipa_is_wds_enabled() - get IPA AP WDS status 463 * 464 * IPA driver requires WDS status for adding filter rules 465 * to support easymesh feature, IPA expectes wds status 466 * with WLAN_IPA_AP_CONNECT event. 467 * 468 * Return: true - WDS is enabled 469 * false - WDS is not enabled 470 */ 471 bool ucfg_ipa_is_wds_enabled(void); 472 #else 473 static inline void ucfg_ipa_set_pld_enable(bool flag) 474 { 475 } 476 477 static inline bool ucfg_ipa_get_pld_enable(void) 478 { 479 return true; 480 } 481 482 static inline bool ucfg_ipa_is_present(void) 483 { 484 return false; 485 } 486 487 static inline bool ucfg_ipa_is_ready(void) 488 { 489 return false; 490 } 491 492 static inline void ucfg_ipa_update_config(struct wlan_ipa_config *config) 493 { 494 } 495 496 static inline bool ucfg_ipa_is_enabled(void) 497 { 498 return false; 499 } 500 501 static inline bool ucfg_ipa_uc_is_enabled(void) 502 { 503 return false; 504 } 505 506 static inline bool ucfg_ipa_is_vlan_enabled(void) 507 { 508 return false; 509 } 510 511 static inline 512 QDF_STATUS ucfg_ipa_set_dp_handle(struct wlan_objmgr_psoc *psoc, 513 void *dp_soc) 514 { 515 return QDF_STATUS_SUCCESS; 516 } 517 518 static inline 519 QDF_STATUS ucfg_ipa_set_pdev_id(struct wlan_objmgr_psoc *psoc, 520 uint8_t pdev_id) 521 { 522 return QDF_STATUS_SUCCESS; 523 } 524 525 static inline 526 QDF_STATUS ucfg_ipa_set_perf_level(struct wlan_objmgr_pdev *pdev, 527 uint64_t tx_packets, uint64_t rx_packets) 528 { 529 return QDF_STATUS_SUCCESS; 530 } 531 532 static inline 533 void ucfg_ipa_uc_info(struct wlan_objmgr_pdev *pdev) 534 { 535 } 536 537 static inline 538 void ucfg_ipa_uc_stat(struct wlan_objmgr_pdev *pdev) 539 { 540 } 541 542 static inline 543 void ucfg_ipa_uc_rt_debug_host_dump(struct wlan_objmgr_pdev *pdev) 544 { 545 } 546 547 static inline 548 void ucfg_ipa_dump_info(struct wlan_objmgr_pdev *pdev) 549 { 550 } 551 552 static inline 553 void ucfg_ipa_uc_stat_request(struct wlan_objmgr_pdev *pdev, 554 uint8_t reason) 555 { 556 } 557 558 static inline 559 void ucfg_ipa_uc_stat_query(struct wlan_objmgr_pdev *pdev, 560 uint32_t *ipa_tx_diff, uint32_t *ipa_rx_diff) 561 { 562 } 563 564 static inline 565 void ucfg_ipa_reg_sap_xmit_cb(struct wlan_objmgr_pdev *pdev, 566 wlan_ipa_softap_xmit cb) 567 { 568 } 569 570 static inline 571 void ucfg_ipa_reg_send_to_nw_cb(struct wlan_objmgr_pdev *pdev, 572 wlan_ipa_send_to_nw cb) 573 { 574 } 575 576 static inline 577 void ucfg_ipa_reg_rps_enable_cb(struct wlan_objmgr_pdev *pdev, 578 wlan_ipa_rps_enable cb) 579 { 580 } 581 582 static inline 583 void ucfg_ipa_reg_is_driver_unloading_cb(struct wlan_objmgr_pdev *pdev, 584 wlan_ipa_driver_unloading cb) 585 { 586 } 587 588 static inline 589 void ucfg_ipa_set_mcc_mode(struct wlan_objmgr_pdev *pdev, bool mcc_mode) 590 { 591 } 592 593 static inline 594 void ucfg_ipa_set_dfs_cac_tx(struct wlan_objmgr_pdev *pdev, bool tx_block) 595 { 596 } 597 598 static inline 599 void ucfg_ipa_set_ap_ibss_fwd(struct wlan_objmgr_pdev *pdev, uint8_t session_id, 600 bool intra_bss) 601 { 602 } 603 604 static inline 605 void ucfg_ipa_uc_force_pipe_shutdown(struct wlan_objmgr_pdev *pdev) 606 { 607 } 608 609 static inline 610 void ucfg_ipa_flush(struct wlan_objmgr_pdev *pdev) 611 { 612 } 613 614 static inline 615 QDF_STATUS ucfg_ipa_suspend(struct wlan_objmgr_pdev *pdev) 616 { 617 return QDF_STATUS_SUCCESS; 618 } 619 620 static inline 621 QDF_STATUS ucfg_ipa_resume(struct wlan_objmgr_pdev *pdev) 622 { 623 return QDF_STATUS_SUCCESS; 624 } 625 626 static inline 627 QDF_STATUS ucfg_ipa_uc_ol_init(struct wlan_objmgr_pdev *pdev, 628 qdf_device_t osdev) 629 { 630 return QDF_STATUS_SUCCESS; 631 } 632 633 static inline 634 QDF_STATUS ucfg_ipa_uc_ol_deinit(struct wlan_objmgr_pdev *pdev) 635 { 636 return QDF_STATUS_SUCCESS; 637 } 638 639 static inline bool ucfg_ipa_is_tx_pending(struct wlan_objmgr_pdev *pdev) 640 { 641 return false; 642 } 643 644 static inline 645 QDF_STATUS ucfg_ipa_send_mcc_scc_msg(struct wlan_objmgr_pdev *pdev, 646 bool mcc_mode) 647 { 648 return QDF_STATUS_SUCCESS; 649 } 650 651 static inline 652 QDF_STATUS ucfg_ipa_wlan_evt(struct wlan_objmgr_pdev *pdev, 653 qdf_netdev_t net_dev, uint8_t device_mode, 654 uint8_t session_id, 655 enum wlan_ipa_wlan_event ipa_event_type, 656 uint8_t *mac_addr, bool is_2g_iface) 657 { 658 return QDF_STATUS_SUCCESS; 659 } 660 661 static inline 662 int ucfg_ipa_uc_smmu_map(bool map, uint32_t num_buf, qdf_mem_info_t *buf_arr) 663 { 664 return 0; 665 } 666 667 static inline 668 bool ucfg_ipa_is_fw_wdi_activated(struct wlan_objmgr_pdev *pdev) 669 { 670 return false; 671 } 672 673 static inline 674 void ucfg_ipa_uc_cleanup_sta(struct wlan_objmgr_pdev *pdev, 675 qdf_netdev_t net_dev) 676 { 677 } 678 679 static inline 680 QDF_STATUS ucfg_ipa_uc_disconnect_ap(struct wlan_objmgr_pdev *pdev, 681 qdf_netdev_t net_dev) 682 { 683 return QDF_STATUS_SUCCESS; 684 } 685 686 static inline 687 void ucfg_ipa_cleanup_dev_iface(struct wlan_objmgr_pdev *pdev, 688 qdf_netdev_t net_dev) 689 { 690 } 691 692 static inline 693 void ucfg_ipa_uc_ssr_cleanup(struct wlan_objmgr_pdev *pdev) 694 { 695 } 696 697 static inline 698 void ucfg_ipa_fw_rejuvenate_send_msg(struct wlan_objmgr_pdev *pdev) 699 { 700 } 701 702 static inline 703 void ucfg_ipa_component_config_update(struct wlan_objmgr_psoc *psoc) 704 { 705 } 706 707 static inline 708 void ucfg_ipa_component_config_free(void) 709 { 710 } 711 712 static inline 713 uint32_t ucfg_ipa_get_tx_buf_count(void) 714 { 715 return 0; 716 } 717 718 static inline 719 void ucfg_ipa_update_tx_stats(struct wlan_objmgr_pdev *pdev, uint64_t sta_tx, 720 uint64_t ap_tx) 721 { 722 } 723 724 static inline 725 void ucfg_ipa_flush_pending_vdev_events(struct wlan_objmgr_pdev *pdev, 726 uint8_t vdev_id) 727 { 728 } 729 730 static inline 731 bool ucfg_ipa_is_wds_enabled(void) 732 { 733 return false; 734 } 735 #endif /* IPA_OFFLOAD */ 736 #endif /* _WLAN_IPA_UCFG_API_H_ */ 737