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