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