1 /* 2 * Copyright (c) 2017-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 pmo called by north bound HDD/OSIF 21 */ 22 23 #ifndef _WLAN_PMO_UCFG_API_H_ 24 #define _WLAN_PMO_UCFG_API_H_ 25 26 #include "wlan_pmo_arp_public_struct.h" 27 #include "wlan_pmo_ns_public_struct.h" 28 #include "wlan_pmo_gtk_public_struct.h" 29 #include "wlan_pmo_mc_addr_filtering.h" 30 #include "wlan_pmo_mc_addr_filtering_public_struct.h" 31 #include "wlan_pmo_wow_public_struct.h" 32 #include "wlan_pmo_common_public_struct.h" 33 #include "wlan_pmo_obj_mgmt_api.h" 34 #include "wlan_pmo_pkt_filter_public_struct.h" 35 #include "wlan_pmo_hw_filter_public_struct.h" 36 37 #ifdef WLAN_POWER_MANAGEMENT_OFFLOAD 38 39 /** 40 * ucfg_pmo_psoc_open() - pmo psoc object open 41 * @psoc: objmgr vdev 42 *. 43 * This function used to open pmo psoc object by user space 44 * 45 * Return: true in case success else false 46 */ 47 QDF_STATUS ucfg_pmo_psoc_open(struct wlan_objmgr_psoc *psoc); 48 49 /** 50 * ucfg_pmo_psoc_close() - pmo psoc object close 51 * @psoc: objmgr vdev 52 *. 53 * This function used to close pmo psoc object by user space 54 * 55 * Return: true in case success else false 56 */ 57 QDF_STATUS ucfg_pmo_psoc_close(struct wlan_objmgr_psoc *psoc); 58 59 /** 60 * ucfg_pmo_get_apf_instruction_size() - get the current APF instruction size 61 * @psoc: the psoc to query 62 * 63 * Return: APF instruction size 64 */ 65 uint32_t ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc); 66 67 /** 68 * ucfg_pmo_get_num_wow_filters() - get the supported number of WoW filters 69 * @psoc: the psoc to query 70 * 71 * Return: number of WoW filters supported 72 */ 73 uint8_t ucfg_pmo_get_num_wow_filters(struct wlan_objmgr_psoc *psoc); 74 75 /** 76 * ucfg_pmo_is_ap_mode_supports_arp_ns() - Check ap mode support arp&ns offload 77 * @psoc: objmgr psoc 78 * @vdev_opmode: vdev opmode 79 * 80 * Return: true in case support else false 81 */ 82 bool ucfg_pmo_is_ap_mode_supports_arp_ns(struct wlan_objmgr_psoc *psoc, 83 enum QDF_OPMODE vdev_opmode); 84 85 /** 86 * ucfg_pmo_is_vdev_connected() - to check whether peer is associated or not 87 * @vdev: objmgr vdev 88 * 89 * Return: true in case success else false 90 */ 91 bool ucfg_pmo_is_vdev_connected(struct wlan_objmgr_vdev *vdev); 92 93 /** 94 * ucfg_pmo_is_vdev_supports_offload() - check offload is supported on vdev 95 * @vdev: objmgr vdev 96 * 97 * Return: true in case success else false 98 */ 99 bool ucfg_pmo_is_vdev_supports_offload(struct wlan_objmgr_vdev *vdev); 100 101 /** 102 * ucfg_pmo_get_psoc_config(): API to get the psoc user configurations of pmo 103 * @psoc: objmgr psoc handle 104 * @psoc_cfg: fill the current psoc user configurations. 105 * 106 * Return: pmo psoc configurations 107 */ 108 QDF_STATUS ucfg_pmo_get_psoc_config(struct wlan_objmgr_psoc *psoc, 109 struct pmo_psoc_cfg *psoc_cfg); 110 111 /** 112 * ucfg_pmo_update_psoc_config(): API to update the psoc user configurations 113 * @psoc: objmgr psoc handle 114 * @psoc_cfg: pmo psoc configurations 115 * 116 * This api shall be used for soc config initialization as well update. 117 * In case of update caller must first call pmo_get_psoc_cfg to get 118 * current config and then apply changes on top of current config. 119 * 120 * Return: QDF_STATUS -in case of success else return error 121 */ 122 QDF_STATUS ucfg_pmo_update_psoc_config(struct wlan_objmgr_psoc *psoc, 123 struct pmo_psoc_cfg *psoc_cfg); 124 125 /** 126 * ucfg_pmo_psoc_set_caps() - overwrite configured device capability flags 127 * @psoc: the psoc for which the capabilities apply 128 * @caps: the cabability information to configure 129 * 130 * Return: QDF_STATUS 131 */ 132 QDF_STATUS ucfg_pmo_psoc_set_caps(struct wlan_objmgr_psoc *psoc, 133 struct pmo_device_caps *caps); 134 135 /** 136 * ucfg_pmo_is_arp_offload_enabled() - Get arp offload enable or not 137 * @psoc: pointer to psoc object 138 * 139 * Return: arp offload enable or not 140 */ 141 bool 142 ucfg_pmo_is_arp_offload_enabled(struct wlan_objmgr_psoc *psoc); 143 144 #ifdef WLAN_FEATURE_IGMP_OFFLOAD 145 /** 146 * ucfg_pmo_is_igmp_offload_enabled() - Get igmp offload enable or not 147 * @psoc: pointer to psoc object 148 * 149 * Return: igmp offload enable or not 150 */ 151 bool 152 ucfg_pmo_is_igmp_offload_enabled(struct wlan_objmgr_psoc *psoc); 153 154 /** 155 * ucfg_pmo_set_igmp_offload_enabled() - Set igmp offload enable or not 156 * @psoc: pointer to psoc object 157 * @val: enable/disable igmp offload 158 * 159 * Return: None 160 */ 161 void 162 ucfg_pmo_set_igmp_offload_enabled(struct wlan_objmgr_psoc *psoc, 163 bool val); 164 #endif 165 166 /** 167 * ucfg_pmo_set_arp_offload_enabled() - Set arp offload enable or not 168 * @psoc: pointer to psoc object 169 * @val: enable/disable arp offload 170 * 171 * Return: None 172 */ 173 void 174 ucfg_pmo_set_arp_offload_enabled(struct wlan_objmgr_psoc *psoc, 175 bool val); 176 177 /** 178 * ucfg_pmo_is_ssdp_enabled() - Get ssdp enable or not 179 * @psoc: pointer to psoc object 180 * 181 * Return: enable/disable ssdp 182 */ 183 bool 184 ucfg_pmo_is_ssdp_enabled(struct wlan_objmgr_psoc *psoc); 185 186 /** 187 * ucfg_pmo_is_ns_offloaded() - Get ns offload support or not 188 * @psoc: pointer to psoc object 189 * 190 * Return: ns offload or not 191 */ 192 bool 193 ucfg_pmo_is_ns_offloaded(struct wlan_objmgr_psoc *psoc); 194 195 /** 196 * ucfg_pmo_get_sta_dynamic_dtim() - Get dynamic dtim 197 * @psoc: pointer to psoc object 198 * 199 * Return: dynamic dtim 200 */ 201 uint8_t 202 ucfg_pmo_get_sta_dynamic_dtim(struct wlan_objmgr_psoc *psoc); 203 204 /** 205 * ucfg_pmo_get_sta_mod_dtim() - Get modulated dtim 206 * @psoc: pointer to psoc object 207 * 208 * Return: modulated dtim 209 */ 210 uint8_t 211 ucfg_pmo_get_sta_mod_dtim(struct wlan_objmgr_psoc *psoc); 212 213 /** 214 * ucfg_pmo_set_sta_mod_dtim() - Set modulated dtim 215 * @psoc: pointer to psoc object 216 * @val: modulated dtim 217 * 218 * Return: None 219 */ 220 void 221 ucfg_pmo_set_sta_mod_dtim(struct wlan_objmgr_psoc *psoc, 222 uint8_t val); 223 224 /** 225 * ucfg_pmo_is_mc_addr_list_enabled() - Get multicast address list enable or not 226 * @psoc: pointer to psoc object 227 * 228 * Return: multicast address list enable or not 229 */ 230 bool 231 ucfg_pmo_is_mc_addr_list_enabled(struct wlan_objmgr_psoc *psoc); 232 233 /** 234 * ucfg_pmo_get_power_save_mode() - Get power save mode 235 * @psoc: pointer to psoc object 236 * 237 * Return: power save mode 238 */ 239 enum powersave_mode 240 ucfg_pmo_get_power_save_mode(struct wlan_objmgr_psoc *psoc); 241 242 /** 243 * ucfg_pmo_get_default_power_save_mode() - Get default power save mode 244 * from ini config 245 * @psoc: pointer to psoc object 246 * 247 * Return: power save mode 248 */ 249 enum powersave_mode 250 ucfg_pmo_get_default_power_save_mode(struct wlan_objmgr_psoc *psoc); 251 252 /** 253 * ucfg_pmo_set_power_save_mode() - Set power save mode 254 * @psoc: pointer to psoc object 255 * @val: power save mode 256 * 257 * Return: None 258 */ 259 void 260 ucfg_pmo_set_power_save_mode(struct wlan_objmgr_psoc *psoc, 261 enum powersave_mode val); 262 263 /** 264 * ucfg_pmo_get_max_ps_poll() - Get max power save poll 265 * @psoc: pointer to psoc object 266 * 267 * Return: power save poll 268 */ 269 uint8_t 270 ucfg_pmo_get_max_ps_poll(struct wlan_objmgr_psoc *psoc); 271 272 /** 273 * ucfg_pmo_power_save_offload_enabled() - Get power save offload enabled type 274 * @psoc: pointer to psoc object 275 * 276 * Return: power save offload enabled type 277 */ 278 uint8_t 279 ucfg_pmo_power_save_offload_enabled(struct wlan_objmgr_psoc *psoc); 280 281 /** 282 * ucfg_pmo_tgt_psoc_send_idle_roam_suspend_mode() - Send suspend mode to 283 * firmware 284 * @psoc: pointer to psoc object 285 * @val: Set suspend mode on/off sent from userspace 286 * 287 * Return: QDF_STATUS_SUCCESS if suspend mode is sent to fw else return 288 * corresponding QDF_STATUS failure code. 289 */ 290 QDF_STATUS 291 ucfg_pmo_tgt_psoc_send_idle_roam_suspend_mode(struct wlan_objmgr_psoc *psoc, 292 uint8_t val); 293 294 /** 295 * ucfg_pmo_enable_wakeup_event() - enable wow wakeup events 296 * @psoc: objmgr psoc 297 * @vdev_id: vdev id 298 * @wow_event: wow event to enable 299 * 300 * Return: none 301 */ 302 void ucfg_pmo_enable_wakeup_event(struct wlan_objmgr_psoc *psoc, 303 uint32_t vdev_id, 304 WOW_WAKE_EVENT_TYPE wow_event); 305 306 /** 307 * ucfg_pmo_disable_wakeup_event() - disable wow wakeup events 308 * @psoc: objmgr psoc 309 * @vdev_id: vdev id 310 * @wow_event: wow event to disable 311 * 312 * Return: none 313 */ 314 void ucfg_pmo_disable_wakeup_event(struct wlan_objmgr_psoc *psoc, 315 uint32_t vdev_id, 316 WOW_WAKE_EVENT_TYPE wow_event); 317 318 /** 319 * ucfg_pmo_cache_arp_offload_req(): API to cache arp req in pmo vdev priv ctx 320 * @arp_req: pmo arp req param 321 * 322 * Return: QDF_STATUS -in case of success else return error 323 */ 324 QDF_STATUS ucfg_pmo_cache_arp_offload_req(struct pmo_arp_req *arp_req); 325 326 /** 327 * ucfg_pmo_check_arp_offload(): API to check if arp offload cache/send is req 328 * @psoc: objmgr psoc handle 329 * @trigger: trigger reason 330 * @vdev_id: vdev_id 331 * 332 * Return: QDF_STATUS -in case of success else return error 333 */ 334 QDF_STATUS ucfg_pmo_check_arp_offload(struct wlan_objmgr_psoc *psoc, 335 enum pmo_offload_trigger trigger, 336 uint8_t vdev_id); 337 338 /** 339 * ucfg_pmo_flush_arp_offload_req(): API to flush arp req from pmo vdev priv ctx 340 * @vdev: objmgr vdev param 341 * 342 * Return: QDF_STATUS -in case of success else return error 343 */ 344 QDF_STATUS ucfg_pmo_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev); 345 346 /** 347 * ucfg_pmo_enable_arp_offload_in_fwr(): API to enable arp req in fwr 348 * @vdev: objmgr vdev param 349 * @trigger: trigger reason for enable arp offload 350 * 351 * API to enable cache arp req in fwr from pmo vdev priv ctx 352 * 353 * Return: QDF_STATUS -in case of success else return error 354 */ 355 QDF_STATUS 356 ucfg_pmo_enable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev, 357 enum pmo_offload_trigger trigger); 358 359 /** 360 * ucfg_pmo_disable_arp_offload_in_fwr(): API to disable arp req in fwr 361 * @vdev: objmgr vdev param 362 * @trigger: trigger reason for disable arp offload 363 * API to disable cache arp req in fwr 364 * 365 * Return: QDF_STATUS -in case of success else return error 366 */ 367 QDF_STATUS 368 ucfg_pmo_disable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev, 369 enum pmo_offload_trigger trigger); 370 371 /** 372 * ucfg_pmo_get_arp_offload_params() - API to get arp offload params 373 * @vdev: objmgr vdev 374 * @params: output pointer to hold offload params 375 * 376 * Return: QDF_STATUS_SUCCESS in case of success else return error 377 */ 378 QDF_STATUS 379 ucfg_pmo_get_arp_offload_params(struct wlan_objmgr_vdev *vdev, 380 struct pmo_arp_offload_params *params); 381 382 /** 383 * ucfg_pmo_cache_ns_offload_req(): API to cache ns req in pmo vdev priv ctx 384 * @ns_req: pmo ns req param 385 * 386 * Return: QDF_STATUS -in case of success else return error 387 */ 388 QDF_STATUS ucfg_pmo_cache_ns_offload_req(struct pmo_ns_req *ns_req); 389 390 /** 391 * ucfg_pmo_ns_offload_check(): API to check if offload cache/send is required 392 * @psoc: pbjmgr psoc handle 393 * @trigger: trigger reason to enable ns offload 394 * @vdev_id: vdev id 395 * 396 * Return: QDF_STATUS -in case of success else return error 397 */ 398 QDF_STATUS ucfg_pmo_ns_offload_check(struct wlan_objmgr_psoc *psoc, 399 enum pmo_offload_trigger trigger, 400 uint8_t vdev_id); 401 402 /** 403 * ucfg_pmo_flush_ns_offload_req(): API to flush ns req from pmo vdev priv ctx 404 * @vdev: vdev ojbmgr handle 405 * 406 * Return: QDF_STATUS -in case of success else return error 407 */ 408 QDF_STATUS ucfg_pmo_flush_ns_offload_req(struct wlan_objmgr_vdev *vdev); 409 410 /** 411 * ucfg_pmo_enable_ns_offload_in_fwr(): API to enable ns req in fwr 412 * @vdev: objmgr vdev 413 * @trigger: trigger reason to enable ns offload 414 * 415 * API to enable cache ns req in fwr from pmo vdev priv ctx 416 * 417 * Return: QDF_STATUS -in case of success else return error 418 */ 419 QDF_STATUS 420 ucfg_pmo_enable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev, 421 enum pmo_offload_trigger trigger); 422 423 /** 424 * ucfg_pmo_disable_ns_offload_in_fwr(): API to disable ns req in fwr 425 * @vdev: objmgr vdev 426 * @trigger: trigger reason to disable ns offload 427 * 428 * API to disable ns req in fwr 429 * 430 * Return: QDF_STATUS -in case of success else return error 431 */ 432 QDF_STATUS 433 ucfg_pmo_disable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev, 434 enum pmo_offload_trigger trigger); 435 436 /** 437 * ucfg_pmo_get_ns_offload_params() - API to get ns offload params 438 * @vdev: objmgr vdev 439 * @params: output pointer to hold offload params 440 * 441 * Return: QDF_STATUS_SUCCESS in case of success else return error 442 */ 443 QDF_STATUS 444 ucfg_pmo_get_ns_offload_params(struct wlan_objmgr_vdev *vdev, 445 struct pmo_ns_offload_params *params); 446 447 /** 448 * ucfg_pmo_ns_addr_scope() - Convert linux specific IPv6 addr scope to 449 * WLAN driver specific value 450 * @ipv6_scope: linux specific IPv6 addr scope 451 * 452 * Return: PMO identifier of linux IPv6 addr scope 453 */ 454 enum pmo_ns_addr_scope 455 ucfg_pmo_ns_addr_scope(uint32_t ipv6_scope); 456 457 /** 458 * ucfg_pmo_enable_hw_filter_in_fwr() - enable previously configured hw filter 459 * @vdev: objmgr vdev to configure 460 * 461 * Return: QDF_STATUS 462 */ 463 QDF_STATUS ucfg_pmo_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev); 464 465 /** 466 * ucfg_pmo_enable_action_frame_patterns() - enable the action frame wake up 467 * patterns as part of the enable host offloads. 468 * @vdev: objmgr vdev to configure 469 * @suspend_type: Suspend type. Runtime PM or System Suspend mode 470 * 471 * Return: QDF_STATUS 472 */ 473 QDF_STATUS 474 ucfg_pmo_enable_action_frame_patterns(struct wlan_objmgr_vdev *vdev, 475 enum qdf_suspend_type suspend_type); 476 477 /** 478 * ucfg_pmo_disable_action_frame_patterns() - Reset the action frame wake up 479 * patterns as a part of suspend resume. 480 * @vdev: objmgr vdev to configure 481 * 482 * Return: QDF_STATUS 483 */ 484 QDF_STATUS 485 ucfg_pmo_disable_action_frame_patterns(struct wlan_objmgr_vdev *vdev); 486 487 /** 488 * ucfg_pmo_disable_hw_filter_in_fwr() - disable previously configured hw filter 489 * @vdev: objmgr vdev to configure 490 * 491 * Return: QDF_STATUS 492 */ 493 QDF_STATUS ucfg_pmo_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev); 494 495 /** 496 * ucfg_pmo_max_mc_addr_supported() - to get max support mc address 497 * @psoc: objmgr psoc 498 * 499 * Return: max mc addr supported count for all vdev in corresponding psoc 500 */ 501 uint8_t ucfg_pmo_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc); 502 503 /** 504 * ucfg_pmo_cache_mc_addr_list(): API to cache mc addr list in pmo vdev priv obj 505 * @mc_list_config: list configuration 506 * 507 * Return: QDF_STATUS_SUCCESS -in case of success else return error 508 */ 509 QDF_STATUS ucfg_pmo_cache_mc_addr_list( 510 struct pmo_mc_addr_list_params *mc_list_config); 511 512 /** 513 * ucfg_pmo_flush_mc_addr_list(): API to flush mc addr list in pmo vdev priv obj 514 * @psoc: objmgr psoc handle 515 * @vdev_id: vdev id 516 * 517 * Return: QDF_STATUS_SUCCESS -in case of success else return error 518 */ 519 QDF_STATUS ucfg_pmo_flush_mc_addr_list(struct wlan_objmgr_psoc *psoc, 520 uint8_t vdev_id); 521 522 /** 523 * ucfg_pmo_enhanced_mc_filter_enable() - enable enhanced multicast filtering 524 * @vdev: the vdev to enable enhanced multicast filtering for 525 * 526 * Return: QDF_STATUS 527 */ 528 static inline QDF_STATUS ucfg_pmo_enhanced_mc_filter_enable(struct wlan_objmgr_vdev * vdev)529 ucfg_pmo_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev) 530 { 531 return pmo_core_enhanced_mc_filter_enable(vdev); 532 } 533 534 /** 535 * ucfg_pmo_enhanced_mc_filter_disable() - disable enhanced multicast filtering 536 * @vdev: the vdev to disable enhanced multicast filtering for 537 * 538 * Return: QDF_STATUS 539 */ 540 static inline QDF_STATUS ucfg_pmo_enhanced_mc_filter_disable(struct wlan_objmgr_vdev * vdev)541 ucfg_pmo_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev) 542 { 543 return pmo_core_enhanced_mc_filter_disable(vdev); 544 } 545 546 #ifdef FEATURE_WLAN_DYNAMIC_ARP_NS_OFFLOAD 547 /** 548 * ucfg_pmo_dynamic_arp_ns_offload_enable() - enable arp/ns offload 549 * @vdev: vdev objmgr handle 550 * 551 * Return: QDF_STATUS 552 */ 553 QDF_STATUS 554 ucfg_pmo_dynamic_arp_ns_offload_enable(struct wlan_objmgr_vdev *vdev); 555 556 /** 557 * ucfg_pmo_dynamic_arp_ns_offload_disable() - disable arp/ns offload 558 * @vdev: vdev objmgr handle 559 * 560 * Return: QDF_STATUS 561 */ 562 QDF_STATUS 563 ucfg_pmo_dynamic_arp_ns_offload_disable(struct wlan_objmgr_vdev *vdev); 564 565 /** 566 * ucfg_pmo_get_arp_ns_offload_dynamic_disable() - get arp/ns offload state 567 * @vdev: vdev objmgr handle 568 * 569 * Return: QDF_STATUS 570 */ 571 bool 572 ucfg_pmo_get_arp_ns_offload_dynamic_disable(struct wlan_objmgr_vdev *vdev); 573 574 /** 575 * ucfg_pmo_dynamic_arp_ns_offload_runtime_prevent() - prevent runtime suspend 576 * @vdev: vdev objmgr handle 577 * 578 * Return: none 579 */ 580 void 581 ucfg_pmo_dynamic_arp_ns_offload_runtime_prevent(struct wlan_objmgr_vdev *vdev); 582 583 /** 584 * ucfg_pmo_dynamic_arp_ns_offload_runtime_allow() - allow runtime suspend 585 * @vdev: vdev objmgr handle 586 * 587 * Return: none 588 */ 589 void 590 ucfg_pmo_dynamic_arp_ns_offload_runtime_allow(struct wlan_objmgr_vdev *vdev); 591 #else 592 static inline QDF_STATUS ucfg_pmo_dynamic_arp_ns_offload_enable(struct wlan_objmgr_vdev * vdev)593 ucfg_pmo_dynamic_arp_ns_offload_enable(struct wlan_objmgr_vdev *vdev) 594 { 595 return QDF_STATUS_SUCCESS; 596 } 597 598 static inline QDF_STATUS ucfg_pmo_dynamic_arp_ns_offload_disable(struct wlan_objmgr_vdev * vdev)599 ucfg_pmo_dynamic_arp_ns_offload_disable(struct wlan_objmgr_vdev *vdev) 600 { 601 return QDF_STATUS_SUCCESS; 602 } 603 604 static inline bool ucfg_pmo_get_arp_ns_offload_dynamic_disable(struct wlan_objmgr_vdev * vdev)605 ucfg_pmo_get_arp_ns_offload_dynamic_disable(struct wlan_objmgr_vdev *vdev) 606 { 607 return false; 608 } 609 610 static inline void ucfg_pmo_dynamic_arp_ns_offload_runtime_prevent(struct wlan_objmgr_vdev * vdev)611 ucfg_pmo_dynamic_arp_ns_offload_runtime_prevent(struct wlan_objmgr_vdev *vdev) 612 { 613 } 614 615 static inline void ucfg_pmo_dynamic_arp_ns_offload_runtime_allow(struct wlan_objmgr_vdev * vdev)616 ucfg_pmo_dynamic_arp_ns_offload_runtime_allow(struct wlan_objmgr_vdev *vdev) {} 617 #endif 618 619 /** 620 * ucfg_pmo_enable_mc_addr_filtering_in_fwr(): Enable cached mc add list in fwr 621 * @psoc: objmgr psoc handle 622 * @vdev_id: vdev id 623 * @trigger: reason for trigger 624 * 625 * API to enable cached mc add list in fwr 626 * 627 * Return: QDF_STATUS_SUCCESS -in case of success else return error 628 */ 629 QDF_STATUS ucfg_pmo_enable_mc_addr_filtering_in_fwr( 630 struct wlan_objmgr_psoc *psoc, 631 uint8_t vdev_id, 632 enum pmo_offload_trigger trigger); 633 634 /** 635 * ucfg_pmo_disable_mc_addr_filtering_in_fwr(): Disable cached mc addr list 636 * @psoc: objmgr psoc handle 637 * @vdev_id: vdev id 638 * @trigger: reason for trigger 639 * 640 * API to disable cached mc add list in fwr 641 * 642 * Return: QDF_STATUS_SUCCESS -in case of success else return error 643 */ 644 QDF_STATUS ucfg_pmo_disable_mc_addr_filtering_in_fwr( 645 struct wlan_objmgr_psoc *psoc, 646 uint8_t vdev_id, 647 enum pmo_offload_trigger trigger); 648 649 /** 650 * ucfg_pmo_get_mc_addr_list() - API to get mc addr list configured 651 * @psoc: objmgr psoc 652 * @vdev_id: vdev identifier 653 * @mc_list_req: output pointer to hold mc addr list params 654 * 655 * Return: QDF_STATUS_SUCCESS in case of success else return error 656 */ 657 QDF_STATUS 658 ucfg_pmo_get_mc_addr_list(struct wlan_objmgr_psoc *psoc, 659 uint8_t vdev_id, 660 struct pmo_mc_addr_list *mc_list_req); 661 662 /** 663 * ucfg_pmo_cache_gtk_offload_req(): API to cache gtk req in pmo vdev priv obj 664 * @vdev: objmgr vdev handle 665 * @gtk_req: pmo gtk req param 666 * 667 * Return: QDF_STATUS_SUCCESS -in case of success else return error 668 */ 669 QDF_STATUS ucfg_pmo_cache_gtk_offload_req(struct wlan_objmgr_vdev *vdev, 670 struct pmo_gtk_req *gtk_req); 671 672 /** 673 * ucfg_pmo_flush_gtk_offload_req(): Flush saved gtk req from pmo vdev priv obj 674 * @vdev: objmgr vdev handle 675 * 676 * Return: QDF_STATUS_SUCCESS -in case of success else return error 677 */ 678 QDF_STATUS ucfg_pmo_flush_gtk_offload_req(struct wlan_objmgr_vdev *vdev); 679 680 /** 681 * ucfg_pmo_enable_gtk_offload_in_fwr(): enable cached gtk request in fwr 682 * @vdev: objmgr vdev handle 683 * 684 * Return: QDF_STATUS_SUCCESS -in case of success else return error 685 */ 686 QDF_STATUS ucfg_pmo_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev); 687 688 #ifdef WLAN_FEATURE_IGMP_OFFLOAD 689 /** 690 * ucfg_pmo_enable_igmp_offload(): enable igmp request in fwr 691 * @vdev: objmgr vdev handle 692 * @pmo_igmp_req: struct pmo_igmp_offload_req 693 * 694 * Return: QDF_STATUS_SUCCESS -in case of success else return error 695 */ 696 QDF_STATUS ucfg_pmo_enable_igmp_offload( 697 struct wlan_objmgr_vdev *vdev, 698 struct pmo_igmp_offload_req *pmo_igmp_req); 699 #else 700 static inline ucfg_pmo_enable_igmp_offload(struct wlan_objmgr_vdev * vdev,struct pmo_igmp_offload_req * pmo_igmp_req)701 QDF_STATUS ucfg_pmo_enable_igmp_offload( 702 struct wlan_objmgr_vdev *vdev, 703 struct pmo_igmp_offload_req *pmo_igmp_req) 704 { 705 return QDF_STATUS_SUCCESS; 706 } 707 #endif 708 709 /** 710 * ucfg_pmo_disable_gtk_offload_in_fwr(): disable cached gtk request in fwr 711 * @vdev: objmgr vdev handle 712 * 713 * Return: QDF_STATUS_SUCCESS -in case of success else return error 714 */ 715 QDF_STATUS ucfg_pmo_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev); 716 717 #ifdef WLAN_FEATURE_PACKET_FILTERING 718 /** 719 * ucfg_pmo_get_pkt_filter_bitmap() - get default packet filters bitmap 720 * @psoc: the psoc to query 721 * 722 * Return: retrieve packet filter bitmap configuration 723 */ 724 uint8_t ucfg_pmo_get_pkt_filter_bitmap(struct wlan_objmgr_psoc *psoc); 725 726 /** 727 * ucfg_pmo_get_num_packet_filters() - get the number of packet filters 728 * @psoc: the psoc to query 729 * 730 * Return: number of packet filters 731 */ 732 uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc); 733 734 /** 735 * ucfg_pmo_set_pkt_filter() - Set packet filter 736 * @psoc: objmgr psoc handle 737 * @pmo_set_pkt_fltr_req: packet filter set param 738 * @vdev_id: vdev id 739 * 740 * Return: QDF_STATUS_SUCCESS -in case of success else return error 741 */ 742 QDF_STATUS 743 ucfg_pmo_set_pkt_filter(struct wlan_objmgr_psoc *psoc, 744 struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req, 745 uint8_t vdev_id); 746 747 /** 748 * ucfg_pmo_clear_pkt_filter() - Clear packet filter 749 * @psoc: objmgr psoc handle 750 * @pmo_clr_pkt_fltr_param: packet filter clear param 751 * @vdev_id: vdev id 752 * 753 * Return: QDF_STATUS_SUCCESS -in case of success else return error 754 */ 755 QDF_STATUS ucfg_pmo_clear_pkt_filter( 756 struct wlan_objmgr_psoc *psoc, 757 struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param, 758 uint8_t vdev_id); 759 #else 760 static inline uint8_t ucfg_pmo_get_pkt_filter_bitmap(struct wlan_objmgr_psoc * psoc)761 ucfg_pmo_get_pkt_filter_bitmap(struct wlan_objmgr_psoc *psoc) 762 { 763 return 0; 764 } 765 766 static inline uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc * psoc)767 ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc) 768 { 769 return 0; 770 } 771 772 static inline QDF_STATUS ucfg_pmo_set_pkt_filter(struct wlan_objmgr_psoc * psoc,struct pmo_rcv_pkt_fltr_cfg * pmo_set_pkt_fltr_req,uint8_t vdev_id)773 ucfg_pmo_set_pkt_filter( 774 struct wlan_objmgr_psoc *psoc, 775 struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req, 776 uint8_t vdev_id) 777 { 778 return QDF_STATUS_SUCCESS; 779 } 780 781 static inline QDF_STATUS ucfg_pmo_clear_pkt_filter(struct wlan_objmgr_psoc * psoc,struct pmo_rcv_pkt_fltr_clear_param * pmo_clr_pkt_fltr_param,uint8_t vdev_id)782 ucfg_pmo_clear_pkt_filter( 783 struct wlan_objmgr_psoc *psoc, 784 struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param, 785 uint8_t vdev_id) 786 { 787 return QDF_STATUS_SUCCESS; 788 } 789 #endif 790 791 /** 792 * ucfg_pmo_get_wow_enable() - Get wow enable type 793 * @psoc: pointer to psoc object 794 * 795 * Return: wow enable type 796 */ 797 enum pmo_wow_enable_type 798 ucfg_pmo_get_wow_enable(struct wlan_objmgr_psoc *psoc); 799 800 /** 801 * ucfg_pmo_set_wow_enable() - Set wow enable type 802 * @psoc: pointer to psoc object 803 * @val: wow enable value 804 * 805 * Return: None 806 */ 807 void 808 ucfg_pmo_set_wow_enable(struct wlan_objmgr_psoc *psoc, 809 enum pmo_wow_enable_type val); 810 811 /** 812 * ucfg_pmo_set_ps_params() - Set vdev OPM params 813 * @vdev: pointer to vdev object 814 * @ps_params: pointer to OPM params 815 * 816 * Return: None 817 */ 818 void 819 ucfg_pmo_set_ps_params(struct wlan_objmgr_vdev *vdev, 820 struct pmo_ps_params *ps_params); 821 822 /** 823 * ucfg_pmo_get_ps_params() - Get vdev OPM params 824 * @vdev: pointer to vdev object 825 * @ps_params: Pointer to get OPM params 826 * 827 * Return: QDF Status 828 */ 829 QDF_STATUS ucfg_pmo_get_ps_params(struct wlan_objmgr_vdev *vdev, 830 struct pmo_ps_params *ps_params); 831 832 /** 833 * ucfg_pmo_core_vdev_set_ps_opm_mode() - Set OPM mode 834 * @vdev: pointer to vdev object 835 * @opm_mode: OPM mode 836 * 837 * Return: QDF Status 838 */ 839 QDF_STATUS ucfg_pmo_core_vdev_set_ps_opm_mode(struct wlan_objmgr_vdev *vdev, 840 enum powersave_mode opm_mode); 841 842 /** 843 * ucfg_pmo_core_vdev_get_ps_opm_mode() - Get OPM mode 844 * @vdev: pointer to vdev object 845 * @opm_mode: OPM mode 846 * 847 * Return: QDF Status 848 */ 849 QDF_STATUS ucfg_pmo_core_vdev_get_ps_opm_mode(struct wlan_objmgr_vdev *vdev, 850 enum powersave_mode *opm_mode); 851 852 /** 853 * ucfg_pmo_get_gtk_rsp(): API to send gtk response request to fwr 854 * @vdev: objmgr vdev handle 855 * @gtk_rsp_req: pmo gtk response request 856 * 857 * This api will send gtk response request to fwr 858 * 859 * Return: QDF_STATUS_SUCCESS -in case of success else return error 860 */ 861 QDF_STATUS 862 ucfg_pmo_get_gtk_rsp(struct wlan_objmgr_vdev *vdev, 863 struct pmo_gtk_rsp_req *gtk_rsp_req); 864 865 /** 866 * ucfg_pmo_update_extscan_in_progress(): update extscan is in progress flags 867 * @vdev: objmgr vdev handle 868 * @value:true if extscan is in progress else false 869 * 870 * Return: TRUE/FALSE 871 */ 872 void ucfg_pmo_update_extscan_in_progress(struct wlan_objmgr_vdev *vdev, 873 bool value); 874 875 /** 876 * ucfg_pmo_update_p2plo_in_progress(): update p2plo is in progress flags 877 * @vdev: objmgr vdev handle 878 * @value:true if p2plo is in progress else false 879 * 880 * Return: TRUE/FALSE 881 */ 882 void ucfg_pmo_update_p2plo_in_progress(struct wlan_objmgr_vdev *vdev, 883 bool value); 884 885 /** 886 * ucfg_pmo_lphb_config_req() - Handles lphb config request for psoc 887 * @psoc: objmgr psoc handle 888 * @lphb_req: low power heart beat request 889 * @lphb_cb_ctx: Context which needs to pass to soif when lphb callback called 890 * @callback: upon receiving of lphb indication from fwr call lphb callback 891 * 892 * Return: QDF status 893 */ 894 QDF_STATUS ucfg_pmo_lphb_config_req(struct wlan_objmgr_psoc *psoc, 895 struct pmo_lphb_req *lphb_req, 896 void *lphb_cb_ctx, 897 pmo_lphb_callback callback); 898 899 /** 900 * ucfg_pmo_psoc_update_power_save_mode() - update power save mode 901 * @psoc: objmgr psoc handle 902 * @value: power save mode 903 * 904 * Return: None 905 */ 906 void ucfg_pmo_psoc_update_power_save_mode(struct wlan_objmgr_psoc *psoc, 907 uint8_t value); 908 909 /** 910 * ucfg_pmo_psoc_update_dp_handle() - update psoc data path handle 911 * @psoc: objmgr psoc handle 912 * @dp_hdl: psoc data path handle 913 * 914 * Return: None 915 */ 916 void ucfg_pmo_psoc_update_dp_handle(struct wlan_objmgr_psoc *psoc, 917 void *dp_hdl); 918 919 /** 920 * ucfg_pmo_psoc_update_htc_handle() - update psoc htc layer handle 921 * @psoc: objmgr psoc handle 922 * @htc_handle: psoc host-to-tagret layer (htc) handle 923 * 924 * Return: None 925 */ 926 void ucfg_pmo_psoc_update_htc_handle(struct wlan_objmgr_psoc *psoc, 927 void *htc_handle); 928 929 /** 930 * ucfg_pmo_psoc_set_hif_handle() - Set psoc hif layer handle 931 * @psoc: objmgr psoc handle 932 * @hif_handle: hif context handle 933 * 934 * Return: None 935 */ 936 void ucfg_pmo_psoc_set_hif_handle(struct wlan_objmgr_psoc *psoc, 937 void *hif_handle); 938 939 /** 940 * ucfg_pmo_psoc_set_txrx_pdev_id() - Set psoc pdev txrx layer handle 941 * @psoc: objmgr psoc handle 942 * @txrx_pdev_id: txrx pdev identifier 943 * 944 * Return: None 945 */ 946 void ucfg_pmo_psoc_set_txrx_pdev_id(struct wlan_objmgr_psoc *psoc, 947 uint8_t txrx_pdev_id); 948 949 /** 950 * ucfg_pmo_psoc_user_space_suspend_req() - Handles user space suspend req 951 * @psoc: objmgr psoc handle 952 * @type: type of suspend 953 * 954 * Handles user space suspend indication for psoc 955 * 956 * Return: QDF status 957 */ 958 QDF_STATUS ucfg_pmo_psoc_user_space_suspend_req(struct wlan_objmgr_psoc *psoc, 959 enum qdf_suspend_type type); 960 961 /** 962 * ucfg_pmo_psoc_user_space_resume_req() - Handles user space resume req 963 * @psoc: objmgr psoc handle 964 * @type: type of suspend from which resume needed 965 * 966 * Handles user space resume indication for psoc 967 * 968 * Return: QDF status 969 */ 970 QDF_STATUS ucfg_pmo_psoc_user_space_resume_req(struct wlan_objmgr_psoc *psoc, 971 enum qdf_suspend_type type); 972 973 /** 974 * ucfg_pmo_suspend_all_components() - Suspend all components 975 * @psoc: objmgr psoc handle 976 * @type: type of suspend 977 * 978 * Suspend all components registered to pmo 979 * 980 * Return: QDF status 981 */ 982 QDF_STATUS ucfg_pmo_suspend_all_components(struct wlan_objmgr_psoc *psoc, 983 enum qdf_suspend_type type); 984 985 /** 986 * ucfg_pmo_resume_all_components() - Resume all components 987 * @psoc: objmgr psoc handle 988 * @type: type of suspend from which resume needed 989 * 990 * Resume all components registered to pmo 991 * 992 * Return: QDF status 993 */ 994 QDF_STATUS ucfg_pmo_resume_all_components(struct wlan_objmgr_psoc *psoc, 995 enum qdf_suspend_type type); 996 997 /** 998 * ucfg_pmo_psoc_bus_suspend_req(): handles bus suspend for psoc 999 * @psoc: objmgr psoc 1000 * @type: is this suspend part of runtime suspend or system suspend? 1001 * @wow_params: collection of wow enable override parameters 1002 * 1003 * Bails if a scan is in progress. 1004 * Calls the appropriate handlers based on configuration and event. 1005 * 1006 * Return: QDF_STATUS_SUCCESS for success or error code 1007 */ 1008 QDF_STATUS ucfg_pmo_psoc_bus_suspend_req( 1009 struct wlan_objmgr_psoc *psoc, 1010 enum qdf_suspend_type type, 1011 struct pmo_wow_enable_params *wow_params); 1012 1013 #ifdef FEATURE_RUNTIME_PM 1014 /** 1015 * ucfg_pmo_psoc_bus_runtime_suspend(): handles bus runtime suspend for psoc 1016 * @psoc: objmgr psoc 1017 * @pld_cb: callback to call link auto suspend 1018 * 1019 * Return: QDF_STATUS_SUCCESS for success or error code 1020 */ 1021 QDF_STATUS ucfg_pmo_psoc_bus_runtime_suspend(struct wlan_objmgr_psoc *psoc, 1022 pmo_pld_auto_suspend_cb pld_cb); 1023 1024 /** 1025 * ucfg_pmo_psoc_bus_runtime_resume(): handles bus runtime resume for psoc 1026 * @psoc: objmgr psoc 1027 * @pld_cb: callback to call link auto resume 1028 * 1029 * Return: QDF_STATUS_SUCCESS for success or error code 1030 */ 1031 QDF_STATUS ucfg_pmo_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc, 1032 pmo_pld_auto_resume_cb pld_cb); 1033 #endif 1034 1035 /** 1036 * ucfg_pmo_psoc_suspend_target() -Send suspend target command 1037 * @psoc: objmgr psoc handle 1038 * @disable_target_intr: disable target interrupt 1039 * 1040 * Return: QDF_STATUS_SUCCESS for success or error code 1041 */ 1042 QDF_STATUS 1043 ucfg_pmo_psoc_suspend_target(struct wlan_objmgr_psoc *psoc, 1044 int disable_target_intr); 1045 1046 QDF_STATUS 1047 ucfg_pmo_add_wow_user_pattern(struct wlan_objmgr_vdev *vdev, 1048 struct pmo_wow_add_pattern *ptrn); 1049 1050 /** 1051 * ucfg_pmo_register_wow_default_patterns() - register default wow patterns 1052 * with fw 1053 * @vdev: Pointer to object manager vdev 1054 * 1055 * Return: none 1056 */ 1057 void ucfg_pmo_register_wow_default_patterns(struct wlan_objmgr_vdev *vdev); 1058 1059 /** 1060 * ucfg_pmo_del_wow_pattern() - Delete WoWl patterns 1061 * @vdev: objmgr vdev 1062 * 1063 * Return:QDF_STATUS_SUCCESS on success else error code 1064 */ 1065 QDF_STATUS 1066 ucfg_pmo_del_wow_pattern(struct wlan_objmgr_vdev *vdev); 1067 1068 QDF_STATUS 1069 ucfg_pmo_del_wow_user_pattern(struct wlan_objmgr_vdev *vdev, 1070 uint8_t pattern_id); 1071 1072 /** 1073 * ucfg_pmo_psoc_bus_resume_req() - handle bus resume request for psoc 1074 * @psoc: objmgr psoc handle 1075 * @type: is this suspend part of runtime suspend or system suspend? 1076 * 1077 * Return:QDF_STATUS_SUCCESS on success else error code 1078 */ 1079 QDF_STATUS ucfg_pmo_psoc_bus_resume_req(struct wlan_objmgr_psoc *psoc, 1080 enum qdf_suspend_type type); 1081 1082 /** 1083 * ucfg_pmo_get_wow_bus_suspend(): API to check if wow bus is suspended or not 1084 * @psoc: objmgr psoc handle 1085 * 1086 * Return: True if bus suspende else false 1087 */ 1088 bool ucfg_pmo_get_wow_bus_suspend(struct wlan_objmgr_psoc *psoc); 1089 1090 /** 1091 * ucfg_pmo_psoc_handle_initial_wake_up() - update initial wake up 1092 * @cb_ctx: objmgr psoc handle as void * due to htc layer is not aware psoc 1093 * 1094 * Return: None 1095 */ 1096 void ucfg_pmo_psoc_handle_initial_wake_up(void *cb_ctx); 1097 1098 /** 1099 * ucfg_pmo_psoc_is_target_wake_up_received() - Get initial wake up status 1100 * @psoc: objmgr psoc handle 1101 * 1102 * Return: 0 on success else error code 1103 */ 1104 int ucfg_pmo_psoc_is_target_wake_up_received(struct wlan_objmgr_psoc *psoc); 1105 1106 /** 1107 * ucfg_pmo_psoc_clear_target_wake_up() - Clear initial wake up status 1108 * @psoc: objmgr psoc handle 1109 * 1110 * Return: 0 on success else error code 1111 */ 1112 int ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc); 1113 1114 /** 1115 * ucfg_pmo_psoc_target_suspend_acknowledge() - Clear initial wake up status 1116 * @context: caller-provided context 1117 * @wow_nack: Was WoW NACK'ed 1118 * @reason_code: WoW status reason code 1119 * 1120 * Return: None 1121 */ 1122 void ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack, 1123 uint16_t reason_code); 1124 1125 /** 1126 * ucfg_pmo_psoc_wakeup_host_event_received() - got host wake up evennt from fwr 1127 * @psoc: objmgr psoc handle 1128 * 1129 * Return: None 1130 */ 1131 void ucfg_pmo_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc *psoc); 1132 1133 /** 1134 * ucfg_pmo_config_listen_interval() - function to configure listen interval 1135 * @vdev: objmgr vdev 1136 * @listen_interval: new listen interval passed by user 1137 * 1138 * This function allows user to configure listen interval dynamically 1139 * 1140 * Return: QDF_STATUS 1141 */ 1142 QDF_STATUS ucfg_pmo_config_listen_interval(struct wlan_objmgr_vdev *vdev, 1143 uint32_t listen_interval); 1144 1145 /** 1146 * ucfg_pmo_get_listen_interval() - function to get listen interval 1147 * @vdev: objmgr vdev 1148 * @listen_interval: pointer to store listen interval 1149 * 1150 * This function allows user to get listen interval dynamically 1151 * 1152 * Return: QDF_STATUS 1153 */ 1154 QDF_STATUS ucfg_pmo_get_listen_interval(struct wlan_objmgr_vdev *vdev, 1155 uint32_t *listen_interval); 1156 1157 /** 1158 * ucfg_pmo_config_modulated_dtim() - function to configure modulated dtim 1159 * @vdev: objmgr vdev handle 1160 * @mod_dtim: New modulated dtim value passed by user 1161 * 1162 * This function configures the modulated dtim in firmware 1163 * 1164 * Return: QDF_STATUS 1165 */ 1166 QDF_STATUS ucfg_pmo_config_modulated_dtim(struct wlan_objmgr_vdev *vdev, 1167 uint32_t mod_dtim); 1168 1169 #ifdef WLAN_FEATURE_WOW_PULSE 1170 /** 1171 * ucfg_pmo_is_wow_pulse_enabled() - to get wow pulse enable configuration 1172 * @psoc: objmgr psoc handle 1173 * 1174 * Return: wow pulse enable configuration 1175 */ 1176 bool ucfg_pmo_is_wow_pulse_enabled(struct wlan_objmgr_psoc *psoc); 1177 1178 /** 1179 * ucfg_pmo_get_wow_pulse_pin() - to get wow pulse pin configuration 1180 * @psoc: objmgr psoc handle 1181 * 1182 * Return: wow pulse pin configuration 1183 */ 1184 uint8_t ucfg_pmo_get_wow_pulse_pin(struct wlan_objmgr_psoc *psoc); 1185 1186 /** 1187 * ucfg_pmo_get_wow_pulse_interval_high() - to get wow pulse interval high 1188 * @psoc: objmgr psoc handle 1189 * 1190 * Return: wow pulse interval high configuration 1191 */ 1192 uint16_t ucfg_pmo_get_wow_pulse_interval_high(struct wlan_objmgr_psoc *psoc); 1193 1194 /** 1195 * ucfg_pmo_get_wow_pulse_interval_low() - to get wow pulse interval low 1196 * @psoc: objmgr psoc handle 1197 * 1198 * Return: wow pulse interval high configuration 1199 */ 1200 uint16_t ucfg_pmo_get_wow_pulse_interval_low(struct wlan_objmgr_psoc *psoc); 1201 1202 /** 1203 * ucfg_pmo_get_wow_pulse_repeat_count() - to get wow pulse repeat count 1204 * @psoc: objmgr psoc handle 1205 * 1206 * Return: wow pulse repeat count configuration 1207 */ 1208 uint32_t ucfg_pmo_get_wow_pulse_repeat_count(struct wlan_objmgr_psoc *psoc); 1209 1210 /** 1211 * ucfg_pmo_get_wow_pulse_init_state() - to get wow pulse init state 1212 * @psoc: objmgr psoc handle 1213 * 1214 * Return: wow pulse init state configuration 1215 */ 1216 uint32_t ucfg_pmo_get_wow_pulse_init_state(struct wlan_objmgr_psoc *psoc); 1217 #else 1218 static inline bool ucfg_pmo_is_wow_pulse_enabled(struct wlan_objmgr_psoc * psoc)1219 ucfg_pmo_is_wow_pulse_enabled(struct wlan_objmgr_psoc *psoc) 1220 { 1221 return false; 1222 } 1223 1224 static inline uint8_t ucfg_pmo_get_wow_pulse_pin(struct wlan_objmgr_psoc * psoc)1225 ucfg_pmo_get_wow_pulse_pin(struct wlan_objmgr_psoc *psoc) 1226 { 1227 return 0; 1228 } 1229 1230 static inline uint16_t ucfg_pmo_get_wow_pulse_interval_high(struct wlan_objmgr_psoc * psoc)1231 ucfg_pmo_get_wow_pulse_interval_high(struct wlan_objmgr_psoc *psoc) 1232 { 1233 return 0; 1234 } 1235 1236 static inline uint32_t ucfg_pmo_get_wow_pulse_repeat_count(struct wlan_objmgr_psoc * psoc)1237 ucfg_pmo_get_wow_pulse_repeat_count(struct wlan_objmgr_psoc *psoc) 1238 { 1239 return 0; 1240 } 1241 1242 static inline uint32_t ucfg_pmo_get_wow_pulse_init_state(struct wlan_objmgr_psoc * psoc)1243 ucfg_pmo_get_wow_pulse_init_state(struct wlan_objmgr_psoc *psoc) 1244 { 1245 return 0; 1246 } 1247 #endif 1248 1249 /** 1250 * ucfg_pmo_is_active_mode_offloaded() - get active mode offload configuration 1251 * @psoc: objmgr psoc handle 1252 * 1253 * Return: retrieve active mode offload configuration 1254 */ 1255 bool ucfg_pmo_is_active_mode_offloaded(struct wlan_objmgr_psoc *psoc); 1256 1257 /** 1258 * ucfg_pmo_get_auto_power_fail_mode() - to get auto power save failure mode 1259 * @psoc: objmgr psoc handle 1260 * 1261 * Return: auto power save failure mode configuration 1262 */ 1263 enum pmo_auto_pwr_detect_failure_mode 1264 ucfg_pmo_get_auto_power_fail_mode(struct wlan_objmgr_psoc *psoc); 1265 1266 /** 1267 * ucfg_pmo_set_wow_data_inactivity_timeout() - Set wow data inactivity timeout 1268 * @psoc: pointer to psoc object 1269 * @val: wow data inactivity timeout value 1270 * 1271 * Return: None 1272 */ 1273 void 1274 ucfg_pmo_set_wow_data_inactivity_timeout(struct wlan_objmgr_psoc *psoc, 1275 uint8_t val); 1276 1277 /** 1278 * ucfg_pmo_is_pkt_filter_enabled() - pmo packet filter feature enable or not 1279 * @psoc: objmgr psoc handle 1280 * 1281 * Return: pmo packet filter feature enable/disable 1282 */ 1283 bool ucfg_pmo_is_pkt_filter_enabled(struct wlan_objmgr_psoc *psoc); 1284 1285 /** 1286 * ucfg_pmo_get_active_uc_apf_mode() - to get the modes active APF 1287 * for MC/BC packets 1288 * @psoc: objmgr psoc handle 1289 * 1290 * Return: the modes active APF 1291 */ 1292 enum active_apf_mode 1293 ucfg_pmo_get_active_uc_apf_mode(struct wlan_objmgr_psoc *psoc); 1294 1295 /** 1296 * ucfg_pmo_get_active_mc_bc_apf_mode() - to get the modes active APF 1297 * for uc packets 1298 * @psoc: objmgr psoc handle 1299 * 1300 * Return: the modes active APF 1301 */ 1302 enum active_apf_mode 1303 ucfg_pmo_get_active_mc_bc_apf_mode(struct wlan_objmgr_psoc *psoc); 1304 #ifdef FEATURE_WLAN_APF 1305 /** 1306 * ucfg_pmo_is_apf_enabled() - to get apf configuration 1307 * @psoc: objmgr psoc handle 1308 * 1309 * Return: true if enabled, it is intersection of ini and target cap 1310 */ 1311 bool ucfg_pmo_is_apf_enabled(struct wlan_objmgr_psoc *psoc); 1312 #else ucfg_pmo_is_apf_enabled(struct wlan_objmgr_psoc * psoc)1313 static inline bool ucfg_pmo_is_apf_enabled(struct wlan_objmgr_psoc *psoc) 1314 { 1315 return false; 1316 } 1317 #endif 1318 1319 #ifdef WLAN_ENABLE_GPIO_WAKEUP 1320 /** 1321 * ucfg_pmo_is_gpio_wakeup_enabled() - to get gpio wakeup enable configuration 1322 * @psoc: objmgr psoc handle 1323 * 1324 * Return: gpio wakeup enable configuration 1325 */ 1326 bool ucfg_pmo_is_gpio_wakeup_enabled(struct wlan_objmgr_psoc *psoc); 1327 1328 /** 1329 * ucfg_pmo_get_gpio_wakeup_pin() - to get gpio wakeup pin number 1330 * @psoc: objmgr psoc handle 1331 * 1332 * Return: gpio wakeup pin number 1333 */ 1334 uint32_t ucfg_pmo_get_gpio_wakeup_pin(struct wlan_objmgr_psoc *psoc); 1335 1336 /** 1337 * ucfg_pmo_get_gpio_wakeup_mode() - to get gpio wakeup interrupt mode 1338 * @psoc: objmgr psoc handle 1339 * 1340 * Return: gpio wakeup mode 1341 */ 1342 enum pmo_gpio_wakeup_mode 1343 ucfg_pmo_get_gpio_wakeup_mode(struct wlan_objmgr_psoc *psoc); 1344 #else 1345 static inline bool ucfg_pmo_is_gpio_wakeup_enabled(struct wlan_objmgr_psoc * psoc)1346 ucfg_pmo_is_gpio_wakeup_enabled(struct wlan_objmgr_psoc *psoc) 1347 { 1348 return false; 1349 } 1350 1351 static inline uint32_t ucfg_pmo_get_gpio_wakeup_pin(struct wlan_objmgr_psoc * psoc)1352 ucfg_pmo_get_gpio_wakeup_pin(struct wlan_objmgr_psoc *psoc) 1353 { 1354 return 0; 1355 } 1356 1357 static inline enum pmo_gpio_wakeup_mode ucfg_pmo_get_gpio_wakeup_mode(struct wlan_objmgr_psoc * psoc)1358 ucfg_pmo_get_gpio_wakeup_mode(struct wlan_objmgr_psoc *psoc) 1359 { 1360 return PMO_GPIO_WAKEUP_MODE_INVALID; 1361 } 1362 #endif 1363 1364 /** 1365 * ucfg_pmo_core_txrx_suspend(): suspends TX/RX 1366 * @psoc: objmgr psoc 1367 * 1368 * Return: QDF_STATUS_SUCCESS for success or error code 1369 */ 1370 QDF_STATUS ucfg_pmo_core_txrx_suspend(struct wlan_objmgr_psoc *psoc); 1371 1372 /** 1373 * ucfg_pmo_core_txrx_resume(): resumes TX/RX 1374 * @psoc: objmgr psoc 1375 * 1376 * Return: QDF_STATUS_SUCCESS for success or error code 1377 */ 1378 QDF_STATUS ucfg_pmo_core_txrx_resume(struct wlan_objmgr_psoc *psoc); 1379 1380 /** 1381 * ucfg_pmo_get_moddtim_user_enable() - Get moddtim user enable 1382 * @vdev: objmgr vdev handle 1383 * 1384 * Return: moddtim user enabled or not 1385 */ 1386 bool ucfg_pmo_get_moddtim_user_enable(struct wlan_objmgr_vdev *vdev); 1387 1388 /** 1389 * ucfg_pmo_set_moddtim_user_enable() - Set moddtim user enable 1390 * @vdev: objmgr vdev handle 1391 * @value: moddtim user enable or not 1392 * 1393 * Return: none 1394 */ 1395 void ucfg_pmo_set_moddtim_user_enable(struct wlan_objmgr_vdev *vdev, 1396 bool value); 1397 /** 1398 * ucfg_pmo_get_moddtim_user_active() - Get moddtim user active 1399 * @vdev: objmgr vdev handle 1400 * 1401 * Return: moddtim user active 1402 */ 1403 bool ucfg_pmo_get_moddtim_user_active(struct wlan_objmgr_vdev *vdev); 1404 1405 /** 1406 * ucfg_pmo_get_moddtim_user() - Get moddtim user value 1407 * @vdev: objmgr vdev handle 1408 * 1409 * Return: moddtim user value 1410 */ 1411 uint32_t ucfg_pmo_get_moddtim_user(struct wlan_objmgr_vdev *vdev); 1412 1413 /* 1414 * ucfg_pmo_get_ssr_frequency_on_pagefault: get ssr frequency on pagefault 1415 * @psoc: objmgr psoc 1416 * 1417 * Return: SSR frequency on pagefault 1418 */ 1419 uint32_t ucfg_pmo_get_ssr_frequency_on_pagefault(struct wlan_objmgr_psoc *psoc); 1420 1421 /* 1422 * ucfg_pmo_get_disconnect_sap_tdls_in_wow: get if disconnect sap/p2p_go 1423 * or tdls in wow 1424 * @psoc: objmgr psoc 1425 * 1426 * Return: true in case support else false 1427 */ 1428 bool 1429 ucfg_pmo_get_disconnect_sap_tdls_in_wow(struct wlan_objmgr_psoc *psoc); 1430 1431 #ifdef WLAN_FEATURE_ICMP_OFFLOAD 1432 /** 1433 * ucfg_pmo_check_icmp_offload() - API to check if icmp offload is enabled 1434 * @psoc: objmgr psoc handle 1435 * @vdev_id: vdev_id 1436 * 1437 * Return: QDF_STATUS_SUCCESS for success or error code 1438 */ 1439 QDF_STATUS ucfg_pmo_check_icmp_offload(struct wlan_objmgr_psoc *psoc, 1440 uint8_t vdev_id); 1441 1442 /** 1443 * ucfg_pmo_is_icmp_offload_enabled() - Get icmp offload enable or not 1444 * @psoc: pointer to psoc object 1445 * 1446 * Return: icmp offload enable or not 1447 */ 1448 bool 1449 ucfg_pmo_is_icmp_offload_enabled(struct wlan_objmgr_psoc *psoc); 1450 1451 /** 1452 * ucfg_pmo_config_icmp_offload() - API to enable icmp offload request 1453 * @psoc: pointer to psoc object 1454 * @pmo_icmp_req: ICMP offload parameters 1455 * 1456 * Return: QDF_STATUS_SUCCESS for success or error code 1457 */ 1458 QDF_STATUS 1459 ucfg_pmo_config_icmp_offload(struct wlan_objmgr_psoc *psoc, 1460 struct pmo_icmp_offload *pmo_icmp_req); 1461 #endif 1462 #else /* WLAN_POWER_MANAGEMENT_OFFLOAD */ 1463 static inline QDF_STATUS ucfg_pmo_psoc_open(struct wlan_objmgr_psoc * psoc)1464 ucfg_pmo_psoc_open(struct wlan_objmgr_psoc *psoc) 1465 { 1466 return QDF_STATUS_SUCCESS; 1467 } 1468 1469 static inline QDF_STATUS ucfg_pmo_psoc_close(struct wlan_objmgr_psoc * psoc)1470 ucfg_pmo_psoc_close(struct wlan_objmgr_psoc *psoc) 1471 { 1472 return QDF_STATUS_SUCCESS; 1473 } 1474 1475 static inline uint32_t ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc * psoc)1476 ucfg_pmo_get_apf_instruction_size(struct wlan_objmgr_psoc *psoc) 1477 { 1478 return 0; 1479 } 1480 1481 static inline uint8_t ucfg_pmo_get_pkt_filter_bitmap(struct wlan_objmgr_psoc * psoc)1482 ucfg_pmo_get_pkt_filter_bitmap(struct wlan_objmgr_psoc *psoc) 1483 { 1484 return 0; 1485 } 1486 1487 static inline uint32_t ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc * psoc)1488 ucfg_pmo_get_num_packet_filters(struct wlan_objmgr_psoc *psoc) 1489 { 1490 return 0; 1491 } 1492 1493 static inline uint8_t ucfg_pmo_get_num_wow_filters(struct wlan_objmgr_psoc * psoc)1494 ucfg_pmo_get_num_wow_filters(struct wlan_objmgr_psoc *psoc) 1495 { 1496 return 0; 1497 } 1498 1499 static inline QDF_STATUS ucfg_pmo_get_psoc_config(struct wlan_objmgr_psoc * psoc,struct pmo_psoc_cfg * psoc_cfg)1500 ucfg_pmo_get_psoc_config( 1501 struct wlan_objmgr_psoc *psoc, 1502 struct pmo_psoc_cfg *psoc_cfg) 1503 { 1504 return QDF_STATUS_SUCCESS; 1505 } 1506 1507 static inline QDF_STATUS ucfg_pmo_update_psoc_config(struct wlan_objmgr_psoc * psoc,struct pmo_psoc_cfg * psoc_cfg)1508 ucfg_pmo_update_psoc_config( 1509 struct wlan_objmgr_psoc *psoc, 1510 struct pmo_psoc_cfg *psoc_cfg) 1511 { 1512 return QDF_STATUS_SUCCESS; 1513 } 1514 1515 static inline QDF_STATUS ucfg_pmo_psoc_set_caps(struct wlan_objmgr_psoc * psoc,struct pmo_device_caps * caps)1516 ucfg_pmo_psoc_set_caps( 1517 struct wlan_objmgr_psoc *psoc, 1518 struct pmo_device_caps *caps) 1519 { 1520 return QDF_STATUS_SUCCESS; 1521 } 1522 1523 static inline bool ucfg_pmo_is_ap_mode_supports_arp_ns(struct wlan_objmgr_psoc * psoc,enum QDF_OPMODE vdev_opmode)1524 ucfg_pmo_is_ap_mode_supports_arp_ns( 1525 struct wlan_objmgr_psoc *psoc, 1526 enum QDF_OPMODE vdev_opmode) 1527 { 1528 return true; 1529 } 1530 1531 static inline bool ucfg_pmo_is_vdev_connected(struct wlan_objmgr_vdev * vdev)1532 ucfg_pmo_is_vdev_connected(struct wlan_objmgr_vdev *vdev) 1533 { 1534 return true; 1535 } 1536 1537 static inline bool ucfg_pmo_is_vdev_supports_offload(struct wlan_objmgr_vdev * vdev)1538 ucfg_pmo_is_vdev_supports_offload(struct wlan_objmgr_vdev *vdev) 1539 { 1540 return true; 1541 } 1542 1543 static inline void ucfg_pmo_enable_wakeup_event(struct wlan_objmgr_psoc * psoc,uint32_t vdev_id,uint32_t * bitmap)1544 ucfg_pmo_enable_wakeup_event( 1545 struct wlan_objmgr_psoc *psoc, 1546 uint32_t vdev_id, uint32_t *bitmap) 1547 { 1548 } 1549 1550 static inline void ucfg_pmo_disable_wakeup_event(struct wlan_objmgr_psoc * psoc,uint32_t vdev_id,uint32_t bitmap)1551 ucfg_pmo_disable_wakeup_event( 1552 struct wlan_objmgr_psoc *psoc, 1553 uint32_t vdev_id, uint32_t bitmap) 1554 { 1555 } 1556 1557 static inline QDF_STATUS ucfg_pmo_cache_arp_offload_req(struct pmo_arp_req * arp_req)1558 ucfg_pmo_cache_arp_offload_req(struct pmo_arp_req *arp_req) 1559 { 1560 return QDF_STATUS_SUCCESS; 1561 } 1562 1563 static inline ucfg_pmo_check_arp_offload(struct wlan_objmgr_psoc * psoc,enum pmo_offload_trigger trigger,uint8_t vdev_id)1564 QDF_STATUS ucfg_pmo_check_arp_offload(struct wlan_objmgr_psoc *psoc, 1565 enum pmo_offload_trigger trigger, 1566 uint8_t vdev_id) 1567 { 1568 return QDF_STATUS_SUCCESS; 1569 } 1570 1571 static inline QDF_STATUS ucfg_pmo_flush_arp_offload_req(struct wlan_objmgr_vdev * vdev)1572 ucfg_pmo_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev) 1573 { 1574 return QDF_STATUS_SUCCESS; 1575 } 1576 1577 static inline QDF_STATUS ucfg_pmo_enable_arp_offload_in_fwr(struct wlan_objmgr_vdev * vdev,enum pmo_offload_trigger trigger)1578 ucfg_pmo_enable_arp_offload_in_fwr( 1579 struct wlan_objmgr_vdev *vdev, 1580 enum pmo_offload_trigger trigger) 1581 { 1582 return QDF_STATUS_SUCCESS; 1583 } 1584 1585 static inline QDF_STATUS ucfg_pmo_disable_arp_offload_in_fwr(struct wlan_objmgr_vdev * vdev,enum pmo_offload_trigger trigger)1586 ucfg_pmo_disable_arp_offload_in_fwr( 1587 struct wlan_objmgr_vdev *vdev, 1588 enum pmo_offload_trigger trigger) 1589 { 1590 return QDF_STATUS_SUCCESS; 1591 } 1592 1593 static inline QDF_STATUS ucfg_pmo_get_arp_offload_params(struct wlan_objmgr_vdev * vdev,struct pmo_arp_offload_params * params)1594 ucfg_pmo_get_arp_offload_params(struct wlan_objmgr_vdev *vdev, 1595 struct pmo_arp_offload_params *params) 1596 { 1597 return QDF_STATUS_SUCCESS; 1598 } 1599 1600 static inline QDF_STATUS ucfg_pmo_cache_ns_offload_req(struct pmo_ns_req * ns_req)1601 ucfg_pmo_cache_ns_offload_req(struct pmo_ns_req *ns_req) 1602 { 1603 return QDF_STATUS_SUCCESS; 1604 } 1605 ucfg_pmo_ns_offload_check(struct wlan_objmgr_psoc * psoc,enum pmo_offload_trigger trigger,uint8_t vdev_id)1606 QDF_STATUS ucfg_pmo_ns_offload_check(struct wlan_objmgr_psoc *psoc, 1607 enum pmo_offload_trigger trigger, 1608 uint8_t vdev_id) 1609 { 1610 return QDF_STATUS_SUCCESS; 1611 } 1612 1613 static inline QDF_STATUS ucfg_pmo_flush_ns_offload_req(struct wlan_objmgr_vdev * vdev)1614 ucfg_pmo_flush_ns_offload_req(struct wlan_objmgr_vdev *vdev) 1615 { 1616 return QDF_STATUS_SUCCESS; 1617 } 1618 1619 static inline QDF_STATUS ucfg_pmo_enable_ns_offload_in_fwr(struct wlan_objmgr_vdev * vdev,enum pmo_offload_trigger trigger)1620 ucfg_pmo_enable_ns_offload_in_fwr( 1621 struct wlan_objmgr_vdev *vdev, 1622 enum pmo_offload_trigger trigger) 1623 { 1624 return QDF_STATUS_SUCCESS; 1625 } 1626 1627 static inline QDF_STATUS ucfg_pmo_disable_ns_offload_in_fwr(struct wlan_objmgr_vdev * vdev,enum pmo_offload_trigger trigger)1628 ucfg_pmo_disable_ns_offload_in_fwr( 1629 struct wlan_objmgr_vdev *vdev, 1630 enum pmo_offload_trigger trigger) 1631 { 1632 return QDF_STATUS_SUCCESS; 1633 } 1634 1635 static inline QDF_STATUS ucfg_pmo_get_ns_offload_params(struct wlan_objmgr_vdev * vdev,struct pmo_ns_offload_params * params)1636 ucfg_pmo_get_ns_offload_params(struct wlan_objmgr_vdev *vdev, 1637 struct pmo_ns_offload_params *params) 1638 { 1639 return QDF_STATUS_SUCCESS; 1640 } 1641 1642 static inline enum pmo_ns_addr_scope ucfg_pmo_ns_addr_scope(uint32_t ipv6_scope)1643 ucfg_pmo_ns_addr_scope(uint32_t ipv6_scope) 1644 { 1645 return PMO_NS_ADDR_SCOPE_INVALID; 1646 } 1647 1648 static inline QDF_STATUS ucfg_pmo_cache_mc_addr_list(struct pmo_mc_addr_list_params * mc_list_config)1649 ucfg_pmo_cache_mc_addr_list( 1650 struct pmo_mc_addr_list_params *mc_list_config) 1651 { 1652 return QDF_STATUS_SUCCESS; 1653 } 1654 1655 static inline QDF_STATUS ucfg_pmo_flush_mc_addr_list(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)1656 ucfg_pmo_flush_mc_addr_list( 1657 struct wlan_objmgr_psoc *psoc, 1658 uint8_t vdev_id) 1659 { 1660 return QDF_STATUS_SUCCESS; 1661 } 1662 1663 static inline QDF_STATUS ucfg_pmo_enable_mc_addr_filtering_in_fwr(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,enum pmo_offload_trigger trigger)1664 ucfg_pmo_enable_mc_addr_filtering_in_fwr( 1665 struct wlan_objmgr_psoc *psoc, 1666 uint8_t vdev_id, 1667 enum pmo_offload_trigger trigger) 1668 { 1669 return QDF_STATUS_SUCCESS; 1670 } 1671 1672 static inline QDF_STATUS ucfg_pmo_disable_mc_addr_filtering_in_fwr(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,enum pmo_offload_trigger trigger)1673 ucfg_pmo_disable_mc_addr_filtering_in_fwr( 1674 struct wlan_objmgr_psoc *psoc, 1675 uint8_t vdev_id, 1676 enum pmo_offload_trigger trigger) 1677 { 1678 return QDF_STATUS_SUCCESS; 1679 } 1680 1681 static inline uint8_t ucfg_pmo_max_mc_addr_supported(struct wlan_objmgr_psoc * psoc)1682 ucfg_pmo_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc) 1683 { 1684 return 0; 1685 } 1686 1687 static inline QDF_STATUS ucfg_pmo_get_mc_addr_list(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,struct pmo_mc_addr_list * mc_list_req)1688 ucfg_pmo_get_mc_addr_list(struct wlan_objmgr_psoc *psoc, 1689 uint8_t vdev_id, 1690 struct pmo_mc_addr_list *mc_list_req) 1691 { 1692 return QDF_STATUS_SUCCESS; 1693 } 1694 1695 static inline QDF_STATUS ucfg_pmo_cache_gtk_offload_req(struct wlan_objmgr_vdev * vdev,struct pmo_gtk_req * gtk_req)1696 ucfg_pmo_cache_gtk_offload_req( 1697 struct wlan_objmgr_vdev *vdev, 1698 struct pmo_gtk_req *gtk_req) 1699 { 1700 return QDF_STATUS_SUCCESS; 1701 } 1702 1703 static inline QDF_STATUS ucfg_pmo_flush_gtk_offload_req(struct wlan_objmgr_vdev * vdev)1704 ucfg_pmo_flush_gtk_offload_req(struct wlan_objmgr_vdev *vdev) 1705 { 1706 return QDF_STATUS_SUCCESS; 1707 } 1708 1709 static inline QDF_STATUS ucfg_pmo_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev * vdev)1710 ucfg_pmo_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev) 1711 { 1712 return QDF_STATUS_SUCCESS; 1713 } 1714 1715 static inline QDF_STATUS ucfg_pmo_enable_igmp_offload(struct wlan_objmgr_vdev * vdev,struct pmo_igmp_offload_req * pmo_igmp_req)1716 ucfg_pmo_enable_igmp_offload(struct wlan_objmgr_vdev *vdev, 1717 struct pmo_igmp_offload_req *pmo_igmp_req) 1718 { 1719 return QDF_STATUS_E_NOSUPPORT; 1720 } 1721 1722 static inline QDF_STATUS ucfg_pmo_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev * vdev)1723 ucfg_pmo_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev) 1724 { 1725 return QDF_STATUS_SUCCESS; 1726 } 1727 1728 static inline QDF_STATUS ucfg_pmo_set_pkt_filter(struct wlan_objmgr_psoc * psoc,struct pmo_rcv_pkt_fltr_cfg * pmo_set_pkt_fltr_req,uint8_t vdev_id)1729 ucfg_pmo_set_pkt_filter( 1730 struct wlan_objmgr_psoc *psoc, 1731 struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req, 1732 uint8_t vdev_id) 1733 { 1734 return QDF_STATUS_SUCCESS; 1735 } 1736 1737 static inline QDF_STATUS ucfg_pmo_clear_pkt_filter(struct wlan_objmgr_psoc * psoc,struct pmo_rcv_pkt_fltr_clear_param * pmo_clr_pkt_fltr_param,uint8_t vdev_id)1738 ucfg_pmo_clear_pkt_filter( 1739 struct wlan_objmgr_psoc *psoc, 1740 struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param, 1741 uint8_t vdev_id) 1742 { 1743 return QDF_STATUS_SUCCESS; 1744 } 1745 1746 static inline QDF_STATUS ucfg_pmo_get_gtk_rsp(struct wlan_objmgr_vdev * vdev,struct pmo_gtk_rsp_req * gtk_rsp_req)1747 ucfg_pmo_get_gtk_rsp( 1748 struct wlan_objmgr_vdev *vdev, 1749 struct pmo_gtk_rsp_req *gtk_rsp_req) 1750 { 1751 return QDF_STATUS_SUCCESS; 1752 } 1753 1754 static inline void ucfg_pmo_update_extscan_in_progress(struct wlan_objmgr_vdev * vdev,bool value)1755 ucfg_pmo_update_extscan_in_progress( 1756 struct wlan_objmgr_vdev *vdev, 1757 bool value) 1758 { 1759 } 1760 1761 static inline void ucfg_pmo_update_p2plo_in_progress(struct wlan_objmgr_vdev * vdev,bool value)1762 ucfg_pmo_update_p2plo_in_progress( 1763 struct wlan_objmgr_vdev *vdev, 1764 bool value) 1765 { 1766 } 1767 1768 static inline QDF_STATUS ucfg_pmo_lphb_config_req(struct wlan_objmgr_psoc * psoc,struct pmo_lphb_req * lphb_req,void * lphb_cb_ctx,pmo_lphb_callback callback)1769 ucfg_pmo_lphb_config_req( 1770 struct wlan_objmgr_psoc *psoc, 1771 struct pmo_lphb_req *lphb_req, void *lphb_cb_ctx, 1772 pmo_lphb_callback callback) 1773 { 1774 return QDF_STATUS_SUCCESS; 1775 } 1776 1777 static inline void ucfg_pmo_psoc_update_power_save_mode(struct wlan_objmgr_psoc * psoc,uint8_t value)1778 ucfg_pmo_psoc_update_power_save_mode( 1779 struct wlan_objmgr_psoc *psoc, 1780 uint8_t value) 1781 { 1782 } 1783 1784 static inline void ucfg_pmo_psoc_update_dp_handle(struct wlan_objmgr_psoc * psoc,void * dp_handle)1785 ucfg_pmo_psoc_update_dp_handle( 1786 struct wlan_objmgr_psoc *psoc, 1787 void *dp_handle) 1788 { 1789 } 1790 1791 static inline void ucfg_pmo_psoc_update_htc_handle(struct wlan_objmgr_psoc * psoc,void * htc_handle)1792 ucfg_pmo_psoc_update_htc_handle( 1793 struct wlan_objmgr_psoc *psoc, 1794 void *htc_handle) 1795 { 1796 } 1797 1798 static inline void ucfg_pmo_psoc_set_hif_handle(struct wlan_objmgr_psoc * psoc,void * hif_handle)1799 ucfg_pmo_psoc_set_hif_handle( 1800 struct wlan_objmgr_psoc *psoc, 1801 void *hif_handle) 1802 { 1803 } 1804 1805 static inline void ucfg_pmo_psoc_set_txrx_pdev_id(struct wlan_objmgr_psoc * psoc,uint8_t txrx_pdev_id)1806 ucfg_pmo_psoc_set_txrx_pdev_id( 1807 struct wlan_objmgr_psoc *psoc, 1808 uint8_t txrx_pdev_id) 1809 { 1810 } 1811 1812 static inline void ucfg_pmo_psoc_handle_initial_wake_up(void * cb_ctx)1813 ucfg_pmo_psoc_handle_initial_wake_up(void *cb_ctx) 1814 { 1815 } 1816 1817 static inline QDF_STATUS ucfg_pmo_psoc_user_space_suspend_req(struct wlan_objmgr_psoc * psoc,enum qdf_suspend_type type)1818 ucfg_pmo_psoc_user_space_suspend_req( 1819 struct wlan_objmgr_psoc *psoc, 1820 enum qdf_suspend_type type) 1821 { 1822 return QDF_STATUS_SUCCESS; 1823 } 1824 1825 static inline QDF_STATUS ucfg_pmo_psoc_user_space_resume_req(struct wlan_objmgr_psoc * psoc,enum qdf_suspend_type type)1826 ucfg_pmo_psoc_user_space_resume_req( 1827 struct wlan_objmgr_psoc *psoc, 1828 enum qdf_suspend_type type) 1829 { 1830 return QDF_STATUS_SUCCESS; 1831 } 1832 1833 static inline QDF_STATUS ucfg_pmo_suspend_all_components(struct wlan_objmgr_psoc * psoc,enum qdf_suspend_type type)1834 ucfg_pmo_suspend_all_components(struct wlan_objmgr_psoc *psoc, 1835 enum qdf_suspend_type type) 1836 { 1837 return QDF_STATUS_SUCCESS; 1838 } 1839 1840 static inline QDF_STATUS ucfg_pmo_resume_all_components(struct wlan_objmgr_psoc * psoc,enum qdf_suspend_type type)1841 ucfg_pmo_resume_all_components(struct wlan_objmgr_psoc *psoc, 1842 enum qdf_suspend_type type) 1843 { 1844 return QDF_STATUS_SUCCESS; 1845 } 1846 1847 static inline QDF_STATUS ucfg_pmo_psoc_bus_suspend_req(struct wlan_objmgr_psoc * psoc,enum qdf_suspend_type type,struct pmo_wow_enable_params * wow_params)1848 ucfg_pmo_psoc_bus_suspend_req( 1849 struct wlan_objmgr_psoc *psoc, 1850 enum qdf_suspend_type type, 1851 struct pmo_wow_enable_params *wow_params) 1852 { 1853 return QDF_STATUS_SUCCESS; 1854 } 1855 1856 #ifdef FEATURE_RUNTIME_PM 1857 static inline QDF_STATUS ucfg_pmo_psoc_bus_runtime_suspend(struct wlan_objmgr_psoc * psoc,pmo_pld_auto_suspend_cb pld_cb)1858 ucfg_pmo_psoc_bus_runtime_suspend( 1859 struct wlan_objmgr_psoc *psoc, 1860 pmo_pld_auto_suspend_cb pld_cb) 1861 { 1862 return QDF_STATUS_SUCCESS; 1863 } 1864 1865 static inline QDF_STATUS ucfg_pmo_psoc_bus_runtime_resume(struct wlan_objmgr_psoc * psoc,pmo_pld_auto_suspend_cb pld_cb)1866 ucfg_pmo_psoc_bus_runtime_resume( 1867 struct wlan_objmgr_psoc *psoc, 1868 pmo_pld_auto_suspend_cb pld_cb) 1869 { 1870 return QDF_STATUS_SUCCESS; 1871 } 1872 #endif 1873 1874 static inline QDF_STATUS ucfg_pmo_psoc_suspend_target(struct wlan_objmgr_psoc * psoc,int disable_target_intr)1875 ucfg_pmo_psoc_suspend_target( 1876 struct wlan_objmgr_psoc *psoc, 1877 int disable_target_intr) 1878 { 1879 return QDF_STATUS_SUCCESS; 1880 } 1881 1882 static inline QDF_STATUS ucfg_pmo_add_wow_user_pattern(struct wlan_objmgr_vdev * vdev,struct pmo_wow_add_pattern * ptrn)1883 ucfg_pmo_add_wow_user_pattern( 1884 struct wlan_objmgr_vdev *vdev, 1885 struct pmo_wow_add_pattern *ptrn) 1886 { 1887 return QDF_STATUS_SUCCESS; 1888 } 1889 1890 static inline QDF_STATUS ucfg_pmo_del_wow_user_pattern(struct wlan_objmgr_vdev * vdev,uint8_t pattern_id)1891 ucfg_pmo_del_wow_user_pattern( 1892 struct wlan_objmgr_vdev *vdev, 1893 uint8_t pattern_id) 1894 { 1895 return QDF_STATUS_SUCCESS; 1896 } 1897 1898 static inline void ucfg_pmo_register_wow_default_patterns(struct wlan_objmgr_vdev * vdev)1899 ucfg_pmo_register_wow_default_patterns(struct wlan_objmgr_vdev *vdev) 1900 { 1901 } 1902 1903 QDF_STATUS ucfg_pmo_del_wow_pattern(struct wlan_objmgr_vdev * vdev)1904 ucfg_pmo_del_wow_pattern(struct wlan_objmgr_vdev *vdev) 1905 { 1906 return QDF_STATUS_SUCCESS; 1907 } 1908 1909 static inline QDF_STATUS ucfg_pmo_psoc_bus_resume_req(struct wlan_objmgr_psoc * psoc,enum qdf_suspend_type type)1910 ucfg_pmo_psoc_bus_resume_req( 1911 struct wlan_objmgr_psoc *psoc, 1912 enum qdf_suspend_type type) 1913 { 1914 return QDF_STATUS_SUCCESS; 1915 } 1916 1917 static inline bool ucfg_pmo_get_wow_bus_suspend(struct wlan_objmgr_psoc * psoc)1918 ucfg_pmo_get_wow_bus_suspend(struct wlan_objmgr_psoc *psoc) 1919 { 1920 return true; 1921 } 1922 1923 static inline int ucfg_pmo_psoc_is_target_wake_up_received(struct wlan_objmgr_psoc * psoc)1924 ucfg_pmo_psoc_is_target_wake_up_received(struct wlan_objmgr_psoc *psoc) 1925 { 1926 return 0; 1927 } 1928 1929 static inline int ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc * psoc)1930 ucfg_pmo_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc) 1931 { 1932 return 0; 1933 } 1934 1935 static inline void ucfg_pmo_psoc_target_suspend_acknowledge(void * context,bool wow_nack,uint16_t reason_code)1936 ucfg_pmo_psoc_target_suspend_acknowledge(void *context, bool wow_nack, 1937 uint16_t reason_code) 1938 { 1939 } 1940 1941 static inline void ucfg_pmo_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc * psoc)1942 ucfg_pmo_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc *psoc) 1943 { 1944 } 1945 1946 static inline QDF_STATUS ucfg_pmo_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev * vdev)1947 ucfg_pmo_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev) 1948 { 1949 return QDF_STATUS_SUCCESS; 1950 } 1951 1952 static inline QDF_STATUS ucfg_pmo_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev * vdev)1953 ucfg_pmo_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev) 1954 { 1955 return QDF_STATUS_SUCCESS; 1956 } 1957 1958 static inline QDF_STATUS ucfg_pmo_enhanced_mc_filter_enable(struct wlan_objmgr_vdev * vdev)1959 ucfg_pmo_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev) 1960 { 1961 return QDF_STATUS_SUCCESS; 1962 } 1963 1964 static inline QDF_STATUS ucfg_pmo_enhanced_mc_filter_disable(struct wlan_objmgr_vdev * vdev)1965 ucfg_pmo_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev) 1966 { 1967 return QDF_STATUS_SUCCESS; 1968 } 1969 1970 static inline QDF_STATUS ucfg_pmo_config_listen_interval(struct wlan_objmgr_vdev * vdev,uint32_t listen_interval)1971 ucfg_pmo_config_listen_interval(struct wlan_objmgr_vdev *vdev, 1972 uint32_t listen_interval) 1973 { 1974 return QDF_STATUS_SUCCESS; 1975 } 1976 1977 static inline QDF_STATUS ucfg_pmo_config_modulated_dtim(struct wlan_objmgr_vdev * vdev,uint32_t mod_dtim)1978 ucfg_pmo_config_modulated_dtim(struct wlan_objmgr_vdev *vdev, 1979 uint32_t mod_dtim) 1980 { 1981 return QDF_STATUS_SUCCESS; 1982 } 1983 1984 static inline bool ucfg_pmo_is_arp_offload_enabled(struct wlan_objmgr_psoc * psoc)1985 ucfg_pmo_is_arp_offload_enabled(struct wlan_objmgr_psoc *psoc) 1986 { 1987 return false; 1988 } 1989 1990 static inline bool ucfg_pmo_is_igmp_offload_enabled(struct wlan_objmgr_psoc * psoc)1991 ucfg_pmo_is_igmp_offload_enabled(struct wlan_objmgr_psoc *psoc) 1992 { 1993 return false; 1994 } 1995 1996 static inline void ucfg_pmo_set_arp_offload_enabled(struct wlan_objmgr_psoc * psoc,bool val)1997 ucfg_pmo_set_arp_offload_enabled(struct wlan_objmgr_psoc *psoc, 1998 bool val) 1999 { 2000 } 2001 2002 static inline void ucfg_pmo_set_igmp_offload_enabled(struct wlan_objmgr_psoc * psoc,bool val)2003 ucfg_pmo_set_igmp_offload_enabled(struct wlan_objmgr_psoc *psoc, 2004 bool val) 2005 { 2006 } 2007 2008 static inline bool ucfg_pmo_is_wow_pulse_enabled(struct wlan_objmgr_psoc * psoc)2009 ucfg_pmo_is_wow_pulse_enabled(struct wlan_objmgr_psoc *psoc) 2010 { 2011 return false; 2012 } 2013 2014 static inline uint8_t ucfg_pmo_get_wow_pulse_pin(struct wlan_objmgr_psoc * psoc)2015 ucfg_pmo_get_wow_pulse_pin(struct wlan_objmgr_psoc *psoc) 2016 { 2017 return 0; 2018 } 2019 2020 static inline uint16_t ucfg_pmo_get_wow_pulse_interval_high(struct wlan_objmgr_psoc * psoc)2021 ucfg_pmo_get_wow_pulse_interval_high(struct wlan_objmgr_psoc *psoc) 2022 { 2023 return 0; 2024 } 2025 2026 static inline uint16_t ucfg_pmo_get_wow_pulse_interval_low(struct wlan_objmgr_psoc * psoc)2027 ucfg_pmo_get_wow_pulse_interval_low(struct wlan_objmgr_psoc *psoc) 2028 { 2029 return 0; 2030 } 2031 2032 static inline bool ucfg_pmo_is_active_mode_offloaded(struct wlan_objmgr_psoc * psoc)2033 ucfg_pmo_is_active_mode_offloaded(struct wlan_objmgr_psoc *psoc) 2034 { 2035 return true; 2036 } 2037 2038 static inline enum pmo_auto_pwr_detect_failure_mode ucfg_pmo_get_auto_power_fail_mode(struct wlan_objmgr_psoc * psoc)2039 ucfg_pmo_get_auto_power_fail_mode(struct wlan_objmgr_psoc *psoc) 2040 { 2041 return PMO_FW_TO_CRASH_ON_PWR_FAILURE; 2042 } 2043 ucfg_pmo_is_apf_enabled(struct wlan_objmgr_psoc * psoc)2044 static inline bool ucfg_pmo_is_apf_enabled(struct wlan_objmgr_psoc *psoc) 2045 { 2046 return false; 2047 } 2048 ucfg_pmo_is_ssdp_enabled(struct wlan_objmgr_psoc * psoc)2049 static inline bool ucfg_pmo_is_ssdp_enabled(struct wlan_objmgr_psoc *psoc) 2050 { 2051 return false; 2052 } 2053 ucfg_pmo_is_ns_offloaded(struct wlan_objmgr_psoc * psoc)2054 static inline bool ucfg_pmo_is_ns_offloaded(struct wlan_objmgr_psoc *psoc) 2055 { 2056 return false; 2057 } 2058 2059 static inline uint8_t ucfg_pmo_get_sta_dynamic_dtim(struct wlan_objmgr_psoc * psoc)2060 ucfg_pmo_get_sta_dynamic_dtim(struct wlan_objmgr_psoc *psoc) 2061 { 2062 return 0; 2063 } 2064 2065 static inline uint8_t ucfg_pmo_get_sta_mod_dtim(struct wlan_objmgr_psoc * psoc)2066 ucfg_pmo_get_sta_mod_dtim(struct wlan_objmgr_psoc *psoc) 2067 { 2068 return 0; 2069 } 2070 2071 static inline void ucfg_pmo_set_sta_mod_dtim(struct wlan_objmgr_psoc * psoc,uint8_t val)2072 ucfg_pmo_set_sta_mod_dtim(struct wlan_objmgr_psoc *psoc, 2073 uint8_t val) 2074 { 2075 } 2076 2077 static inline bool ucfg_pmo_is_mc_addr_list_enabled(struct wlan_objmgr_psoc * psoc)2078 ucfg_pmo_is_mc_addr_list_enabled(struct wlan_objmgr_psoc *psoc) 2079 { 2080 return false; 2081 } 2082 2083 static inline enum powersave_mode ucfg_pmo_get_power_save_mode(struct wlan_objmgr_psoc * psoc)2084 ucfg_pmo_get_power_save_mode(struct wlan_objmgr_psoc *psoc) 2085 { 2086 return 0; 2087 } 2088 2089 static inline enum powersave_mode ucfg_pmo_get_default_power_save_mode(struct wlan_objmgr_psoc * psoc)2090 ucfg_pmo_get_default_power_save_mode(struct wlan_objmgr_psoc *psoc) 2091 { 2092 return PMO_PS_ADVANCED_POWER_SAVE_DISABLE; 2093 } 2094 2095 static inline void ucfg_pmo_set_power_save_mode(struct wlan_objmgr_psoc * psoc,enum powersave_mode val)2096 ucfg_pmo_set_power_save_mode(struct wlan_objmgr_psoc *psoc, 2097 enum powersave_mode val) 2098 { 2099 } 2100 2101 static inline uint8_t ucfg_pmo_get_max_ps_poll(struct wlan_objmgr_psoc * psoc)2102 ucfg_pmo_get_max_ps_poll(struct wlan_objmgr_psoc *psoc) 2103 { 2104 return 0; 2105 } 2106 2107 static inline uint8_t ucfg_pmo_power_save_offload_enabled(struct wlan_objmgr_psoc * psoc)2108 ucfg_pmo_power_save_offload_enabled(struct wlan_objmgr_psoc *psoc) 2109 { 2110 return 0; 2111 } 2112 2113 static inline void ucfg_pmo_set_wow_data_inactivity_timeout(struct wlan_objmgr_psoc * psoc,uint8_t val)2114 ucfg_pmo_set_wow_data_inactivity_timeout(struct wlan_objmgr_psoc *psoc, 2115 uint8_t val) 2116 { 2117 } 2118 2119 static inline bool ucfg_pmo_is_pkt_filter_enabled(struct wlan_objmgr_psoc * psoc)2120 ucfg_pmo_is_pkt_filter_enabled(struct wlan_objmgr_psoc *psoc) 2121 { 2122 return false; 2123 } 2124 2125 enum active_apf_mode 2126 ucfg_pmo_get_active_uc_apf_mode(struct wlan_objmgr_psoc *psoc); 2127 { 2128 return 0; 2129 } 2130 2131 enum active_apf_mode ucfg_pmo_get_active_mc_bc_apf_mode(struct wlan_objmgr_psoc * psoc)2132 ucfg_pmo_get_active_mc_bc_apf_mode(struct wlan_objmgr_psoc *psoc) 2133 { 2134 return 0; 2135 } 2136 ucfg_pmo_core_txrx_suspend(struct wlan_objmgr_psoc * psoc)2137 QDF_STATUS ucfg_pmo_core_txrx_suspend(struct wlan_objmgr_psoc *psoc) 2138 { 2139 return QDF_STATUS_SUCCESS; 2140 } 2141 ucfg_pmo_core_txrx_resume(struct wlan_objmgr_psoc * psoc)2142 QDF_STATUS ucfg_pmo_core_txrx_resume(struct wlan_objmgr_psoc *psoc) 2143 { 2144 return QDF_STATUS_SUCCESS; 2145 } 2146 2147 static inline bool ucfg_pmo_get_moddtim_user_enable(struct wlan_objmgr_vdev * vdev)2148 ucfg_pmo_get_moddtim_user_enable(struct wlan_objmgr_vdev *vdev) 2149 { 2150 return false; 2151 } 2152 2153 static inline void ucfg_pmo_set_moddtim_user_enable(struct wlan_objmgr_vdev * vdev,bool value)2154 ucfg_pmo_set_moddtim_user_enable(struct wlan_objmgr_vdev *vdev, 2155 bool value) 2156 { 2157 } 2158 2159 static inline bool ucfg_pmo_get_moddtim_user_active(struct wlan_objmgr_vdev * vdev)2160 ucfg_pmo_get_moddtim_user_active(struct wlan_objmgr_vdev *vdev) 2161 { 2162 return false; 2163 } 2164 2165 static inline uint32_t ucfg_pmo_get_moddtim_user(struct wlan_objmgr_vdev * vdev)2166 ucfg_pmo_get_moddtim_user(struct wlan_objmgr_vdev *vdev) 2167 { 2168 return 0; 2169 } 2170 2171 static inline uint32_t ucfg_pmo_get_ssr_frequency_on_pagefault(struct wlan_objmgr_psoc * psoc)2172 ucfg_pmo_get_ssr_frequency_on_pagefault(struct wlan_objmgr_psoc *psoc) 2173 { 2174 return 0; 2175 } 2176 2177 static inline bool ucfg_pmo_get_disconnect_sap_tdls_in_wow(struct wlan_objmgr_psoc * psoc)2178 ucfg_pmo_get_disconnect_sap_tdls_in_wow(struct wlan_objmgr_psoc *psoc) 2179 { 2180 return false; 2181 } 2182 2183 static inline ucfg_pmo_check_icmp_offload(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)2184 QDF_STATUS ucfg_pmo_check_icmp_offload(struct wlan_objmgr_psoc *psoc, 2185 uint8_t vdev_id) 2186 { 2187 return QDF_STATUS_SUCCESS; 2188 } 2189 2190 static inline bool ucfg_pmo_is_icmp_offload_enabled(struct wlan_objmgr_psoc * psoc)2191 ucfg_pmo_is_icmp_offload_enabled(struct wlan_objmgr_psoc *psoc) 2192 { 2193 return false; 2194 } 2195 2196 QDF_STATUS ucfg_pmo_config_icmp_offload(struct wlan_objmgr_psoc * psoc,struct pmo_icmp_offload * pmo_icmp_req)2197 ucfg_pmo_config_icmp_offload(struct wlan_objmgr_psoc *psoc, 2198 struct pmo_icmp_offload *pmo_icmp_req) 2199 { 2200 return QDF_STATUS_SUCCESS; 2201 } 2202 #endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */ 2203 2204 #ifdef WLAN_FEATURE_EXTWOW_SUPPORT 2205 /** 2206 * ucfg_pmo_extwow_is_goto_suspend_enabled() - Get extwow goto suspend enable 2207 * @psoc: pointer to psoc object 2208 * 2209 * Return: extend wow goto suspend enable or not 2210 */ 2211 bool 2212 ucfg_pmo_extwow_is_goto_suspend_enabled(struct wlan_objmgr_psoc *psoc); 2213 2214 /** 2215 * ucfg_pmo_extwow_app1_wakeup_pin_num() - Get wakeup1 PIN number 2216 * @psoc: pointer to psoc object 2217 * 2218 * Return: wakeup1 PIN number 2219 */ 2220 uint8_t 2221 ucfg_pmo_extwow_app1_wakeup_pin_num(struct wlan_objmgr_psoc *psoc); 2222 2223 /** 2224 * ucfg_pmo_extwow_app2_wakeup_pin_num() - Get wakeup2 PIN number 2225 * @psoc: pointer to psoc object 2226 * 2227 * Return: wakeup2 PIN number 2228 */ 2229 uint8_t 2230 ucfg_pmo_extwow_app2_wakeup_pin_num(struct wlan_objmgr_psoc *psoc); 2231 2232 /** 2233 * ucfg_pmo_extwow_app2_init_ping_interval() - Get keep alive init ping interval 2234 * @psoc: pointer to psoc object 2235 * 2236 * Return: keep alive init ping interval 2237 */ 2238 uint32_t 2239 ucfg_pmo_extwow_app2_init_ping_interval(struct wlan_objmgr_psoc *psoc); 2240 2241 /** 2242 * ucfg_pmo_extwow_app2_min_ping_interval() - Get keep alive min ping interval 2243 * @psoc: pointer to psoc object 2244 * 2245 * Return: keep alive min ping interval 2246 */ 2247 uint32_t 2248 ucfg_pmo_extwow_app2_min_ping_interval(struct wlan_objmgr_psoc *psoc); 2249 2250 /** 2251 * ucfg_pmo_extwow_app2_max_ping_interval() - Get keep alive max ping interval 2252 * @psoc: pointer to psoc object 2253 * 2254 * Return: keep alive max ping interval 2255 */ 2256 uint32_t 2257 ucfg_pmo_extwow_app2_max_ping_interval(struct wlan_objmgr_psoc *psoc); 2258 2259 /** 2260 * ucfg_pmo_extwow_app2_inc_ping_interval() - Get keep alive inc ping interval 2261 * @psoc: pointer to psoc object 2262 * 2263 * Return: keep alive inc ping interval 2264 */ 2265 uint32_t 2266 ucfg_pmo_extwow_app2_inc_ping_interval(struct wlan_objmgr_psoc *psoc); 2267 2268 /** 2269 * ucfg_pmo_extwow_app2_tcp_src_port() - Get TCP source port 2270 * @psoc: pointer to psoc object 2271 * 2272 * Return: TCP source port 2273 */ 2274 uint16_t 2275 ucfg_pmo_extwow_app2_tcp_src_port(struct wlan_objmgr_psoc *psoc); 2276 2277 /** 2278 * ucfg_pmo_extwow_app2_tcp_dst_port() - Get TCP Destination port 2279 * @psoc: pointer to psoc object 2280 * 2281 * Return: TCP Destination port 2282 */ 2283 uint16_t 2284 ucfg_pmo_extwow_app2_tcp_dst_port(struct wlan_objmgr_psoc *psoc); 2285 2286 /** 2287 * ucfg_pmo_extwow_app2_tcp_tx_timeout() - Get TCP Tx timeout 2288 * @psoc: pointer to psoc object 2289 * 2290 * Return: TCP Tx timeout 2291 */ 2292 uint32_t 2293 ucfg_pmo_extwow_app2_tcp_tx_timeout(struct wlan_objmgr_psoc *psoc); 2294 2295 /** 2296 * ucfg_pmo_extwow_app2_tcp_rx_timeout() - to get extwow tcp rx timeout 2297 * @psoc: objmgr psoc handle 2298 * 2299 * Return: retrieve extwow app2 tcp rx timeout configuration 2300 */ 2301 uint32_t 2302 ucfg_pmo_extwow_app2_tcp_rx_timeout(struct wlan_objmgr_psoc *psoc); 2303 2304 #else 2305 static inline bool ucfg_pmo_extwow_is_goto_suspend_enabled(struct wlan_objmgr_psoc * psoc)2306 ucfg_pmo_extwow_is_goto_suspend_enabled(struct wlan_objmgr_psoc *psoc) 2307 { 2308 return false; 2309 } 2310 2311 static inline uint32_t ucfg_pmo_extwow_app1_wakeup_pin_num(struct wlan_objmgr_psoc * psoc)2312 ucfg_pmo_extwow_app1_wakeup_pin_num(struct wlan_objmgr_psoc *psoc) 2313 { 2314 return 0; 2315 } 2316 2317 static inline uint32_t ucfg_pmo_extwow_app2_wakeup_pin_num(struct wlan_objmgr_psoc * psoc)2318 ucfg_pmo_extwow_app2_wakeup_pin_num(struct wlan_objmgr_psoc *psoc) 2319 { 2320 return 0; 2321 } 2322 2323 static inline uint32_t ucfg_pmo_extwow_app2_init_ping_interval(struct wlan_objmgr_psoc * psoc)2324 ucfg_pmo_extwow_app2_init_ping_interval(struct wlan_objmgr_psoc *psoc) 2325 { 2326 return 0; 2327 } 2328 2329 static inline uint32_t ucfg_pmo_extwow_app2_min_ping_interval(struct wlan_objmgr_psoc * psoc)2330 ucfg_pmo_extwow_app2_min_ping_interval(struct wlan_objmgr_psoc *psoc) 2331 { 2332 return 0; 2333 } 2334 2335 static inline uint32_t ucfg_pmo_extwow_app2_max_ping_interval(struct wlan_objmgr_psoc * psoc)2336 ucfg_pmo_extwow_app2_max_ping_interval(struct wlan_objmgr_psoc *psoc) 2337 { 2338 return 0; 2339 } 2340 2341 static inline uint32_t ucfg_pmo_extwow_app2_inc_ping_interval(struct wlan_objmgr_psoc * psoc)2342 ucfg_pmo_extwow_app2_inc_ping_interval(struct wlan_objmgr_psoc *psoc) 2343 { 2344 return 0; 2345 } 2346 2347 static inline uint16_t ucfg_pmo_extwow_app2_tcp_src_port(struct wlan_objmgr_psoc * psoc)2348 ucfg_pmo_extwow_app2_tcp_src_port(struct wlan_objmgr_psoc *psoc) 2349 { 2350 return 0; 2351 } 2352 2353 static inline uint16_t ucfg_pmo_extwow_app2_tcp_dst_port(struct wlan_objmgr_psoc * psoc)2354 ucfg_pmo_extwow_app2_tcp_dst_port(struct wlan_objmgr_psoc *psoc) 2355 { 2356 return 0; 2357 } 2358 2359 static inline uint32_t ucfg_pmo_extwow_app2_tcp_tx_timeout(struct wlan_objmgr_psoc * psoc)2360 ucfg_pmo_extwow_app2_tcp_tx_timeout(struct wlan_objmgr_psoc *psoc) 2361 { 2362 return 0; 2363 } 2364 2365 static inline uint32_t ucfg_pmo_extwow_app2_tcp_rx_timeout(struct wlan_objmgr_psoc * psoc)2366 ucfg_pmo_extwow_app2_tcp_rx_timeout(struct wlan_objmgr_psoc *psoc) 2367 { 2368 return 0; 2369 } 2370 #endif 2371 2372 #ifdef FEATURE_RUNTIME_PM 2373 /** 2374 * ucfg_pmo_get_runtime_pm_delay() - Get runtime pm's inactivity timer 2375 * @psoc: pointer to psoc object 2376 * 2377 * Return: runtime pm's inactivity timer 2378 */ 2379 uint32_t 2380 ucfg_pmo_get_runtime_pm_delay(struct wlan_objmgr_psoc *psoc); 2381 #else 2382 static inline uint32_t ucfg_pmo_get_runtime_pm_delay(struct wlan_objmgr_psoc * psoc)2383 ucfg_pmo_get_runtime_pm_delay(struct wlan_objmgr_psoc *psoc) 2384 { 2385 return 0; 2386 } 2387 #endif /* FEATURE_RUNTIME_PM */ 2388 2389 /** 2390 * ucfg_pmo_get_enable_sap_suspend - Return enable_sap_suspend value to caller 2391 * @psoc: Pointer to psoc object 2392 * 2393 * Return: The value of enable_sap_suspend as stored in CFG 2394 */ 2395 bool 2396 ucfg_pmo_get_enable_sap_suspend(struct wlan_objmgr_psoc *psoc); 2397 2398 /** 2399 * ucfg_pmo_get_sap_mode_bus_suspend() - get PMO config for PCIe bus 2400 * suspend in SAP mode with one or more clients 2401 * @psoc: pointer to psoc object 2402 * 2403 * Return: bool 2404 */ 2405 bool 2406 ucfg_pmo_get_sap_mode_bus_suspend(struct wlan_objmgr_psoc *psoc); 2407 2408 /** 2409 * ucfg_pmo_get_go_mode_bus_suspend() - get PMO config for PCIe bus 2410 * suspend in P2PGO mode with one or more clients 2411 * @psoc: pointer to psoc object 2412 * 2413 * Return: bool 2414 */ 2415 bool 2416 ucfg_pmo_get_go_mode_bus_suspend(struct wlan_objmgr_psoc *psoc); 2417 2418 /** 2419 * ucfg_pmo_get_suspend_mode - Return pmo_suspend_mode value to caller 2420 * @psoc: Pointer to psoc object 2421 * 2422 * Return: The value of suspend_mode as stored in CFG 2423 */ 2424 enum pmo_suspend_mode 2425 ucfg_pmo_get_suspend_mode(struct wlan_objmgr_psoc *psoc); 2426 2427 #ifdef SYSTEM_PM_CHECK 2428 /** 2429 * ucfg_pmo_notify_system_resume() - system resume notification to pmo 2430 * @psoc: pointer to psoc object 2431 * 2432 * Return: None 2433 */ 2434 void 2435 ucfg_pmo_notify_system_resume(struct wlan_objmgr_psoc *psoc); 2436 #else 2437 static inline ucfg_pmo_notify_system_resume(struct wlan_objmgr_psoc * psoc)2438 void ucfg_pmo_notify_system_resume(struct wlan_objmgr_psoc *psoc) 2439 { 2440 } 2441 #endif 2442 2443 /** 2444 * ucfg_pmo_set_vdev_bridge_addr() - API to set Bridge mac address 2445 * @vdev: objmgr vdev 2446 * @bridgeaddr: Bridge mac address 2447 * 2448 * Return: if success pmo vdev ctx else NULL 2449 */ 2450 QDF_STATUS ucfg_pmo_set_vdev_bridge_addr(struct wlan_objmgr_vdev *vdev, 2451 struct qdf_mac_addr *bridgeaddr); 2452 2453 /** 2454 * ucfg_pmo_get_vdev_bridge_addr() - API to get Bridge mac address 2455 * @vdev: objmgr vdev 2456 * @bridgeaddr: Bridge mac address 2457 * 2458 * Return: if success pmo vdev ctx else NULL 2459 */ 2460 QDF_STATUS ucfg_pmo_get_vdev_bridge_addr(struct wlan_objmgr_vdev *vdev, 2461 struct qdf_mac_addr *bridgeaddr); 2462 #endif /* end of _WLAN_PMO_UCFG_API_H_ */ 2463