blob: 8c7808ad8a61e55147c7caf070611b0d7e8ecb25 [file] [log] [blame]
Mukul Sharmad75a6672017-06-22 15:40:53 +05301/*
Jeff Johnsonb4c29962017-10-07 19:35:14 -07002 * Copyright (c) 2017 The Linux Foundation. All rights reserved.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all
7 * copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
17 */
Mukul Sharmad75a6672017-06-22 15:40:53 +053018/**
19 * DOC: public API related to the pmo called by north bound HDD/OSIF
20 */
21
22#include "wlan_pmo_ucfg_api.h"
23#include "wlan_pmo_arp.h"
24#include "wlan_pmo_ns.h"
25#include "wlan_pmo_gtk.h"
26#include "wlan_pmo_wow.h"
27#include "wlan_pmo_mc_addr_filtering.h"
28#include "wlan_pmo_main.h"
29#include "wlan_pmo_lphb.h"
30#include "wlan_pmo_suspend_resume.h"
31#include "wlan_pmo_pkt_filter.h"
32#include "wlan_pmo_hw_filter.h"
33
34QDF_STATUS pmo_ucfg_get_psoc_config(struct wlan_objmgr_psoc *psoc,
35 struct pmo_psoc_cfg *psoc_cfg)
36{
37 return pmo_core_get_psoc_config(psoc, psoc_cfg);
38}
39
40QDF_STATUS pmo_ucfg_update_psoc_config(struct wlan_objmgr_psoc *psoc,
41 struct pmo_psoc_cfg *psoc_cfg)
42{
43 return pmo_core_update_psoc_config(psoc, psoc_cfg);
44}
45
46bool pmo_ucfg_is_ap_mode_supports_arp_ns(struct wlan_objmgr_psoc *psoc,
47 enum tQDF_ADAPTER_MODE vdev_opmode)
48{
49 return pmo_core_is_ap_mode_supports_arp_ns(psoc, vdev_opmode);
50}
51
52bool pmo_ucfg_is_vdev_connected(struct wlan_objmgr_vdev *vdev)
53{
54 return pmo_core_is_vdev_connected(vdev);
55}
56
57bool pmo_ucfg_is_vdev_supports_offload(struct wlan_objmgr_vdev *vdev)
58{
59 return pmo_core_is_vdev_supports_offload(vdev);
60}
61
62void pmo_ucfg_enable_wakeup_event(struct wlan_objmgr_psoc *psoc,
63 uint32_t vdev_id, uint32_t *bitmap)
64{
65 pmo_core_enable_wakeup_event(psoc, vdev_id, bitmap);
66}
67
68void pmo_ucfg_disable_wakeup_event(struct wlan_objmgr_psoc *psoc,
69 uint32_t vdev_id, uint32_t bitmap)
70{
71 pmo_core_disable_wakeup_event(psoc, vdev_id, &bitmap);
72}
73
74QDF_STATUS pmo_ucfg_cache_arp_offload_req(struct pmo_arp_req *arp_req)
75{
76 return pmo_core_cache_arp_offload_req(arp_req);
77}
78
79QDF_STATUS pmo_ucfg_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev)
80{
81 return pmo_core_flush_arp_offload_req(vdev);
82}
83
84QDF_STATUS pmo_ucfg_enable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
85 enum pmo_offload_trigger trigger)
86{
87 return pmo_core_enable_arp_offload_in_fwr(vdev, trigger);
88}
89
90QDF_STATUS pmo_ucfg_disable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
91 enum pmo_offload_trigger trigger)
92{
93 return pmo_core_disable_arp_offload_in_fwr(vdev, trigger);
94}
95
96QDF_STATUS pmo_ucfg_cache_ns_offload_req(struct pmo_ns_req *ns_req)
97{
98 return pmo_core_cache_ns_offload_req(ns_req);
99}
100
101QDF_STATUS pmo_ucfg_flush_ns_offload_req(struct wlan_objmgr_vdev *vdev)
102{
103 return pmo_core_flush_ns_offload_req(vdev);
104}
105
106QDF_STATUS pmo_ucfg_enable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
107 enum pmo_offload_trigger trigger)
108{
109 return pmo_core_enable_ns_offload_in_fwr(vdev, trigger);
110}
111
112QDF_STATUS pmo_ucfg_disable_ns_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
113 enum pmo_offload_trigger trigger)
114{
115 return pmo_core_disable_ns_offload_in_fwr(vdev, trigger);
116}
117
118QDF_STATUS pmo_ucfg_cache_mc_addr_list(
119 struct pmo_mc_addr_list_params *mc_list_config)
120{
121 return pmo_core_cache_mc_addr_list(mc_list_config);
122}
123
124QDF_STATUS pmo_ucfg_flush_mc_addr_list(struct wlan_objmgr_psoc *psoc,
125 uint8_t vdev_id)
126{
127 return pmo_core_flush_mc_addr_list(psoc, vdev_id);
128}
129
130QDF_STATUS pmo_ucfg_enable_mc_addr_filtering_in_fwr(
131 struct wlan_objmgr_psoc *psoc,
132 uint8_t vdev_id,
133 enum pmo_offload_trigger trigger)
134{
135 return pmo_core_enable_mc_addr_filtering_in_fwr(psoc,
136 vdev_id, trigger);
137}
138
139QDF_STATUS pmo_ucfg_disable_mc_addr_filtering_in_fwr(
140 struct wlan_objmgr_psoc *psoc,
141 uint8_t vdev_id,
142 enum pmo_offload_trigger trigger)
143{
144 return pmo_core_disable_mc_addr_filtering_in_fwr(psoc,
145 vdev_id, trigger);
146}
147
148uint8_t pmo_ucfg_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc)
149{
150 return pmo_core_max_mc_addr_supported(psoc);
151}
152
153QDF_STATUS pmo_ucfg_cache_gtk_offload_req(struct wlan_objmgr_vdev *vdev,
154 struct pmo_gtk_req *gtk_req)
155{
156 return pmo_core_cache_gtk_offload_req(vdev, gtk_req);
157}
158
159QDF_STATUS pmo_ucfg_flush_gtk_offload_req(struct wlan_objmgr_vdev *vdev)
160{
161 return pmo_core_flush_gtk_offload_req(vdev);
162}
163
164QDF_STATUS pmo_ucfg_enable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev)
165{
166 return pmo_core_enable_gtk_offload_in_fwr(vdev);
167}
168
169QDF_STATUS pmo_ucfg_disable_gtk_offload_in_fwr(struct wlan_objmgr_vdev *vdev)
170{
171 return pmo_core_disable_gtk_offload_in_fwr(vdev);
172}
173
174QDF_STATUS pmo_ucfg_set_pkt_filter(struct wlan_objmgr_psoc *psoc,
175 struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req,
176 uint8_t vdev_id)
177{
178 return pmo_core_set_pkt_filter(psoc, pmo_set_pkt_fltr_req, vdev_id);
179}
180
181QDF_STATUS pmo_ucfg_clear_pkt_filter(struct wlan_objmgr_psoc *psoc,
182 struct pmo_rcv_pkt_fltr_clear_param *pmo_clr_pkt_fltr_param,
183 uint8_t vdev_id)
184{
185 return pmo_core_clear_pkt_filter(psoc,
186 pmo_clr_pkt_fltr_param, vdev_id);
187}
188
189QDF_STATUS pmo_ucfg_get_gtk_rsp(struct wlan_objmgr_vdev *vdev,
190 struct pmo_gtk_rsp_req *gtk_rsp_req)
191{
192 return pmo_core_get_gtk_rsp(vdev, gtk_rsp_req);
193}
194
195void pmo_ucfg_update_extscan_in_progress(struct wlan_objmgr_vdev *vdev,
196 bool value)
197{
198 pmo_core_update_extscan_in_progress(vdev, value);
199}
200
201void pmo_ucfg_update_p2plo_in_progress(struct wlan_objmgr_vdev *vdev,
202 bool value)
203{
204 pmo_core_update_p2plo_in_progress(vdev, value);
205}
206
207QDF_STATUS pmo_ucfg_lphb_config_req(struct wlan_objmgr_psoc *psoc,
208 struct pmo_lphb_req *lphb_req, void *lphb_cb_ctx,
209 pmo_lphb_callback callback)
210{
211 return pmo_core_lphb_config_req(psoc, lphb_req, lphb_cb_ctx, callback);
212}
213
214void pmo_ucfg_update_alt_modulated_dtim_enable(struct wlan_objmgr_vdev *vdev,
215 bool value)
216{
217 pmo_core_update_alt_modulated_dtim_enable(vdev, value);
218}
219
220void pmo_ucfg_psoc_update_power_save_mode(struct wlan_objmgr_psoc *psoc,
221 uint8_t value)
222{
223 pmo_core_psoc_update_power_save_mode(psoc, value);
224}
225
226void pmo_ucfg_psoc_update_dp_handle(struct wlan_objmgr_psoc *psoc,
227 void *dp_handle)
228{
229 pmo_core_psoc_update_dp_handle(psoc, dp_handle);
230}
231
232void pmo_ucfg_vdev_update_dp_handle(struct wlan_objmgr_vdev *vdev,
233 void *dp_handle)
234{
235 pmo_core_vdev_update_dp_handle(vdev, dp_handle);
236}
237
238void pmo_ucfg_psoc_update_htc_handle(struct wlan_objmgr_psoc *psoc,
239 void *htc_handle)
240{
241 pmo_core_psoc_update_htc_handle(psoc, htc_handle);
242}
243
244void pmo_ucfg_psoc_set_hif_handle(struct wlan_objmgr_psoc *psoc,
245 void *hif_handle)
246{
247 pmo_core_psoc_set_hif_handle(psoc, hif_handle);
248}
249
250void pmo_ucfg_psoc_set_txrx_handle(struct wlan_objmgr_psoc *psoc,
251 void *txrx_handle)
252{
253 pmo_core_psoc_set_txrx_handle(psoc, txrx_handle);
254}
255
256void pmo_ucfg_psoc_handle_initial_wake_up(void *cb_ctx)
257{
258 return pmo_core_psoc_handle_initial_wake_up(cb_ctx);
259}
260
261QDF_STATUS pmo_ucfg_psoc_user_space_suspend_req(struct wlan_objmgr_psoc *psoc,
262 enum qdf_suspend_type type)
263{
264 return pmo_core_psoc_user_space_suspend_req(psoc, type);
265}
266
267
268QDF_STATUS pmo_ucfg_psoc_user_space_resume_req(struct wlan_objmgr_psoc *psoc,
269 enum qdf_suspend_type type)
270{
271 return pmo_core_psoc_user_space_resume_req(psoc, type);
272}
273
274QDF_STATUS pmo_ucfg_psoc_bus_suspend_req(struct wlan_objmgr_psoc *psoc,
275 enum qdf_suspend_type type,
276 struct pmo_wow_enable_params *wow_params)
277{
278 return pmo_core_psoc_bus_suspend_req(psoc, type, wow_params);
279}
280
281#ifdef FEATURE_RUNTIME_PM
282QDF_STATUS pmo_ucfg_psoc_bus_runtime_suspend(struct wlan_objmgr_psoc *psoc,
283 pmo_pld_auto_suspend_cb pld_cb)
284{
285 return pmo_core_psoc_bus_runtime_suspend(psoc, pld_cb);
286}
287
288QDF_STATUS pmo_ucfg_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc,
289 pmo_pld_auto_suspend_cb pld_cb)
290{
291 return pmo_core_psoc_bus_runtime_resume(psoc, pld_cb);
292}
293#endif
294
295QDF_STATUS pmo_ucfg_psoc_suspend_target(struct wlan_objmgr_psoc *psoc,
296 int disable_target_intr)
297{
298 return pmo_core_psoc_suspend_target(psoc, disable_target_intr);
299}
300
301QDF_STATUS pmo_ucfg_psoc_bus_resume_req(struct wlan_objmgr_psoc *psoc,
302 enum qdf_suspend_type type)
303{
304 return pmo_core_psoc_bus_resume_req(psoc, type);
305}
306
307bool pmo_ucfg_get_wow_bus_suspend(struct wlan_objmgr_psoc *psoc)
308{
309 return pmo_core_get_wow_bus_suspend(psoc);
310}
311
312int pmo_ucfg_psoc_is_target_wake_up_received(struct wlan_objmgr_psoc *psoc)
313{
314 return pmo_core_psoc_is_target_wake_up_received(psoc);
315}
316
317int pmo_ucfg_psoc_clear_target_wake_up(struct wlan_objmgr_psoc *psoc)
318{
319 return pmo_core_psoc_clear_target_wake_up(psoc);
320}
321
322void pmo_ucfg_psoc_target_suspend_acknowledge(void *context, bool wow_nack)
323{
324 pmo_core_psoc_target_suspend_acknowledge(context, wow_nack);
325}
326
327void pmo_ucfg_psoc_wakeup_host_event_received(struct wlan_objmgr_psoc *psoc)
328{
329 pmo_core_psoc_wakeup_host_event_received(psoc);
330}
331
332QDF_STATUS pmo_ucfg_enable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev)
333{
334 return pmo_core_enable_hw_filter_in_fwr(vdev);
335}
336
337QDF_STATUS pmo_ucfg_disable_hw_filter_in_fwr(struct wlan_objmgr_vdev *vdev)
338{
339 return pmo_core_disable_hw_filter_in_fwr(vdev);
340}
341
342