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