1*5113495bSYour Name /*
2*5113495bSYour Name * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name *
5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name * above copyright notice and this permission notice appear in all
8*5113495bSYour Name * copies.
9*5113495bSYour Name *
10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name */
19*5113495bSYour Name
20*5113495bSYour Name /**
21*5113495bSYour Name * DOC: contains scan north bound interface api
22*5113495bSYour Name */
23*5113495bSYour Name
24*5113495bSYour Name #ifndef _WLAN_SCAN_UCFG_API_H_
25*5113495bSYour Name #define _WLAN_SCAN_UCFG_API_H_
26*5113495bSYour Name
27*5113495bSYour Name #include <scheduler_api.h>
28*5113495bSYour Name #include <wlan_objmgr_psoc_obj.h>
29*5113495bSYour Name #include <wlan_objmgr_pdev_obj.h>
30*5113495bSYour Name #include <wlan_objmgr_vdev_obj.h>
31*5113495bSYour Name #include <wlan_scan_public_structs.h>
32*5113495bSYour Name #include "wlan_scan_api.h"
33*5113495bSYour Name
34*5113495bSYour Name /**
35*5113495bSYour Name * ucfg_scan_register_requester() - Public ucfg API, assigns requester ID
36*5113495bSYour Name * to caller and registers scan event call back handler
37*5113495bSYour Name * @psoc: psoc object
38*5113495bSYour Name * @module_name:name of requester module
39*5113495bSYour Name * @event_cb: event callback function pointer
40*5113495bSYour Name * @arg: argument to @event_cb
41*5113495bSYour Name *
42*5113495bSYour Name * API, allows other components to allocate requester id.
43*5113495bSYour Name * Normally used by modules at init time to register their callback
44*5113495bSYour Name * and get one requester id. @event_cb will be invoked for
45*5113495bSYour Name * all scan events whose requester id matches with @requester.
46*5113495bSYour Name *
47*5113495bSYour Name * Return: assigned non zero requester id for success
48*5113495bSYour Name * zero (0) for failure
49*5113495bSYour Name */
50*5113495bSYour Name static inline wlan_scan_requester
ucfg_scan_register_requester(struct wlan_objmgr_psoc * psoc,uint8_t * module_name,scan_event_handler event_cb,void * arg)51*5113495bSYour Name ucfg_scan_register_requester(struct wlan_objmgr_psoc *psoc,
52*5113495bSYour Name uint8_t *module_name, scan_event_handler event_cb, void *arg)
53*5113495bSYour Name {
54*5113495bSYour Name return wlan_scan_register_requester(psoc, module_name, event_cb, arg);
55*5113495bSYour Name }
56*5113495bSYour Name
57*5113495bSYour Name /**
58*5113495bSYour Name * ucfg_scan_unregister_requester() -Public ucfg API, reclaims previously
59*5113495bSYour Name * allocated requester ID
60*5113495bSYour Name * @psoc: psoc object
61*5113495bSYour Name * @requester: requester ID to reclaim.
62*5113495bSYour Name *
63*5113495bSYour Name * API, reclaims previously allocated requester id.
64*5113495bSYour Name *
65*5113495bSYour Name * Return: void
66*5113495bSYour Name */
67*5113495bSYour Name static inline
ucfg_scan_unregister_requester(struct wlan_objmgr_psoc * psoc,wlan_scan_requester requester)68*5113495bSYour Name void ucfg_scan_unregister_requester(struct wlan_objmgr_psoc *psoc,
69*5113495bSYour Name wlan_scan_requester requester)
70*5113495bSYour Name {
71*5113495bSYour Name return wlan_scan_unregister_requester(psoc, requester);
72*5113495bSYour Name }
73*5113495bSYour Name
74*5113495bSYour Name /**
75*5113495bSYour Name * ucfg_get_scan_requester_name()- returns module name of requester ID owner
76*5113495bSYour Name * @psoc: psoc object
77*5113495bSYour Name * @requester: requester ID
78*5113495bSYour Name *
79*5113495bSYour Name * API, returns module name of requester id owner
80*5113495bSYour Name *
81*5113495bSYour Name * Return: pointer to module name or "unknown" if requester id not found.
82*5113495bSYour Name */
83*5113495bSYour Name uint8_t *ucfg_get_scan_requester_name(struct wlan_objmgr_psoc *psoc,
84*5113495bSYour Name wlan_scan_requester requester);
85*5113495bSYour Name
86*5113495bSYour Name /**
87*5113495bSYour Name * ucfg_scan_get_scan_id() - Public ucfg API to allocate scan ID
88*5113495bSYour Name * @psoc: psoc object
89*5113495bSYour Name *
90*5113495bSYour Name * Public ucfg API, allocates a new scan id for caller
91*5113495bSYour Name *
92*5113495bSYour Name * Return: newly allocated scan ID
93*5113495bSYour Name */
94*5113495bSYour Name static inline
ucfg_scan_get_scan_id(struct wlan_objmgr_psoc * psoc)95*5113495bSYour Name wlan_scan_id ucfg_scan_get_scan_id(struct wlan_objmgr_psoc *psoc)
96*5113495bSYour Name {
97*5113495bSYour Name return wlan_scan_get_scan_id(psoc);
98*5113495bSYour Name }
99*5113495bSYour Name
100*5113495bSYour Name /**
101*5113495bSYour Name * ucfg_scan_get_entry_frame_len() - API to get scan entry frame length
102*5113495bSYour Name * @scan_entry: Scan entry
103*5113495bSYour Name *
104*5113495bSYour Name * Return: scan entry frame length
105*5113495bSYour Name */
106*5113495bSYour Name uint32_t ucfg_scan_get_entry_frame_len(struct scan_cache_entry *scan_entry);
107*5113495bSYour Name
108*5113495bSYour Name #ifdef FEATURE_WLAN_SCAN_PNO
109*5113495bSYour Name /**
110*5113495bSYour Name * ucfg_scan_pno_start() - Public API to start PNO
111*5113495bSYour Name * @vdev: vdev pointer
112*5113495bSYour Name * @req: pno req params
113*5113495bSYour Name *
114*5113495bSYour Name * Return: 0 for success or error code.
115*5113495bSYour Name */
116*5113495bSYour Name QDF_STATUS ucfg_scan_pno_start(struct wlan_objmgr_vdev *vdev,
117*5113495bSYour Name struct pno_scan_req_params *req);
118*5113495bSYour Name
119*5113495bSYour Name /**
120*5113495bSYour Name * ucfg_scan_add_flags_to_pno_chan_list() - This API to update flags for all 6g
121*5113495bSYour Name * channels in pno scan request
122*5113495bSYour Name * @vdev: vdev pointer
123*5113495bSYour Name * @req: pno req params
124*5113495bSYour Name * @num_chan: number of channels
125*5113495bSYour Name * @short_ssid: short ssid
126*5113495bSYour Name * @list_idx: index of network_list in pno request
127*5113495bSYour Name *
128*5113495bSYour Name * Return: None
129*5113495bSYour Name */
130*5113495bSYour Name void ucfg_scan_add_flags_to_pno_chan_list(struct wlan_objmgr_vdev *vdev,
131*5113495bSYour Name struct pno_scan_req_params *req,
132*5113495bSYour Name uint8_t *num_chan,
133*5113495bSYour Name uint32_t short_ssid,
134*5113495bSYour Name int list_idx);
135*5113495bSYour Name
136*5113495bSYour Name /**
137*5113495bSYour Name * ucfg_is_6ghz_pno_scan_optimization_supported() - Public API to check
138*5113495bSYour Name * 6 GHz pno scan optimization supported in fw
139*5113495bSYour Name * @psoc: psoc object
140*5113495bSYour Name *
141*5113495bSYour Name * Return: 0 for success.
142*5113495bSYour Name */
143*5113495bSYour Name bool
144*5113495bSYour Name ucfg_is_6ghz_pno_scan_optimization_supported(struct wlan_objmgr_psoc *psoc);
145*5113495bSYour Name
146*5113495bSYour Name /**
147*5113495bSYour Name * ucfg_scan_pno_stop() - Public API to stop PNO
148*5113495bSYour Name * @vdev: vdev pointer
149*5113495bSYour Name *
150*5113495bSYour Name * Return: 0 for success or error code.
151*5113495bSYour Name */
152*5113495bSYour Name QDF_STATUS ucfg_scan_pno_stop(struct wlan_objmgr_vdev *vdev);
153*5113495bSYour Name
154*5113495bSYour Name /**
155*5113495bSYour Name * ucfg_scan_get_pno_in_progress() - Public API to check if pno is in progress
156*5113495bSYour Name * @vdev: vdev pointer
157*5113495bSYour Name *
158*5113495bSYour Name * Return: true if pno in progress else false.
159*5113495bSYour Name */
160*5113495bSYour Name bool ucfg_scan_get_pno_in_progress(struct wlan_objmgr_vdev *vdev);
161*5113495bSYour Name
162*5113495bSYour Name /**
163*5113495bSYour Name * ucfg_scan_get_pno_match() - Public API to check if pno matched
164*5113495bSYour Name * @vdev: vdev pointer
165*5113495bSYour Name *
166*5113495bSYour Name * Return: true if pno matched else false.
167*5113495bSYour Name */
168*5113495bSYour Name bool ucfg_scan_get_pno_match(struct wlan_objmgr_vdev *vdev);
169*5113495bSYour Name
170*5113495bSYour Name /**
171*5113495bSYour Name * ucfg_scan_register_pno_cb() - register pno cb
172*5113495bSYour Name * @psoc: psoc object
173*5113495bSYour Name * @event_cb: callback function pointer
174*5113495bSYour Name * @arg: argument to @event_cb
175*5113495bSYour Name *
176*5113495bSYour Name * Return: QDF_STATUS
177*5113495bSYour Name */
178*5113495bSYour Name QDF_STATUS
179*5113495bSYour Name ucfg_scan_register_pno_cb(struct wlan_objmgr_psoc *psoc,
180*5113495bSYour Name scan_event_handler event_cb, void *arg);
181*5113495bSYour Name
182*5113495bSYour Name /**
183*5113495bSYour Name * ucfg_scan_get_pno_def_params() - get the defaults pno params
184*5113495bSYour Name * @vdev: vdev object
185*5113495bSYour Name * @req: pno request object
186*5113495bSYour Name *
187*5113495bSYour Name * Return: QDF_STATUS_SUCCESS or error code
188*5113495bSYour Name */
189*5113495bSYour Name QDF_STATUS
190*5113495bSYour Name ucfg_scan_get_pno_def_params(struct wlan_objmgr_vdev *vdev,
191*5113495bSYour Name struct pno_scan_req_params *req);
192*5113495bSYour Name
193*5113495bSYour Name #else
194*5113495bSYour Name
195*5113495bSYour Name static inline bool
ucfg_scan_get_pno_in_progress(struct wlan_objmgr_vdev * vdev)196*5113495bSYour Name ucfg_scan_get_pno_in_progress(struct wlan_objmgr_vdev *vdev)
197*5113495bSYour Name {
198*5113495bSYour Name return false;
199*5113495bSYour Name }
200*5113495bSYour Name
201*5113495bSYour Name static inline bool
ucfg_scan_get_pno_match(struct wlan_objmgr_vdev * vdev)202*5113495bSYour Name ucfg_scan_get_pno_match(struct wlan_objmgr_vdev *vdev)
203*5113495bSYour Name {
204*5113495bSYour Name return false;
205*5113495bSYour Name }
206*5113495bSYour Name #endif /* FEATURE_WLAN_SCAN_PNO */
207*5113495bSYour Name /**
208*5113495bSYour Name * ucfg_scm_scan_free_scan_request_mem() - Free scan request memory
209*5113495bSYour Name * @req: scan_start_request object
210*5113495bSYour Name *
211*5113495bSYour Name * Return: QDF_STATUS
212*5113495bSYour Name */
213*5113495bSYour Name QDF_STATUS ucfg_scm_scan_free_scan_request_mem(struct scan_start_request *req);
214*5113495bSYour Name
215*5113495bSYour Name /**
216*5113495bSYour Name * ucfg_scan_start() - ucfg Public API to start a scan
217*5113495bSYour Name * @req: start scan req params
218*5113495bSYour Name *
219*5113495bSYour Name * The ucfg public API to start a scan. Post a msg to target_if queue
220*5113495bSYour Name *
221*5113495bSYour Name * Return: QDF_STATUS
222*5113495bSYour Name */
ucfg_scan_start(struct scan_start_request * req)223*5113495bSYour Name static inline QDF_STATUS ucfg_scan_start(struct scan_start_request *req)
224*5113495bSYour Name {
225*5113495bSYour Name return wlan_scan_start(req);
226*5113495bSYour Name }
227*5113495bSYour Name
228*5113495bSYour Name /**
229*5113495bSYour Name * ucfg_scan_psoc_set_enable() - Public API to enable scans for psoc
230*5113495bSYour Name * @psoc: psoc on which scans need to be disabled
231*5113495bSYour Name * @reason: reason for enable/disabled
232*5113495bSYour Name *
233*5113495bSYour Name * Return: QDF_STATUS.
234*5113495bSYour Name */
235*5113495bSYour Name QDF_STATUS ucfg_scan_psoc_set_enable(struct wlan_objmgr_psoc *psoc,
236*5113495bSYour Name enum scan_disable_reason reason);
237*5113495bSYour Name
238*5113495bSYour Name /**
239*5113495bSYour Name * ucfg_scan_psoc_set_disable() - Public API to disable scans for psoc
240*5113495bSYour Name * @psoc: psoc on which scans need to be disabled
241*5113495bSYour Name * @reason: reason for enable/disabled
242*5113495bSYour Name *
243*5113495bSYour Name * Return: QDF_STATUS.
244*5113495bSYour Name */
245*5113495bSYour Name QDF_STATUS ucfg_scan_psoc_set_disable(struct wlan_objmgr_psoc *psoc,
246*5113495bSYour Name enum scan_disable_reason reason);
247*5113495bSYour Name
248*5113495bSYour Name /**
249*5113495bSYour Name * ucfg_scan_vdev_set_enable() - Public API to enable scans for vdev
250*5113495bSYour Name * @vdev: vdev on which scans need to be disabled
251*5113495bSYour Name * @reason: reason for enable/disabled
252*5113495bSYour Name *
253*5113495bSYour Name * Return: QDF_STATUS.
254*5113495bSYour Name */
255*5113495bSYour Name QDF_STATUS ucfg_scan_vdev_set_enable(struct wlan_objmgr_vdev *vdev,
256*5113495bSYour Name enum scan_disable_reason reason);
257*5113495bSYour Name
258*5113495bSYour Name /**
259*5113495bSYour Name * ucfg_scan_vdev_set_disable() - Public API to disable scans for vdev
260*5113495bSYour Name * @vdev: vdev on which scans need to be disabled
261*5113495bSYour Name * @reason: reason for enable/disabled
262*5113495bSYour Name *
263*5113495bSYour Name * Return: QDF_STATUS.
264*5113495bSYour Name */
265*5113495bSYour Name QDF_STATUS ucfg_scan_vdev_set_disable(struct wlan_objmgr_vdev *vdev,
266*5113495bSYour Name enum scan_disable_reason reason);
267*5113495bSYour Name
268*5113495bSYour Name /**
269*5113495bSYour Name * ucfg_scan_set_miracast() - Public API to disable/enable miracast flag
270*5113495bSYour Name * @psoc: psoc pointer
271*5113495bSYour Name * @enable: enable miracast if true disable is false
272*5113495bSYour Name *
273*5113495bSYour Name * Return: QDF_STATUS.
274*5113495bSYour Name */
275*5113495bSYour Name QDF_STATUS ucfg_scan_set_miracast(
276*5113495bSYour Name struct wlan_objmgr_psoc *psoc, bool enable);
277*5113495bSYour Name
278*5113495bSYour Name /**
279*5113495bSYour Name * ucfg_scan_set_global_config() - Public API to set global scan config
280*5113495bSYour Name * @psoc: psoc context
281*5113495bSYour Name * @config: config to set
282*5113495bSYour Name * @val: new config value
283*5113495bSYour Name *
284*5113495bSYour Name * Return: QDF_STATUS.
285*5113495bSYour Name */
286*5113495bSYour Name QDF_STATUS
287*5113495bSYour Name ucfg_scan_set_global_config(struct wlan_objmgr_psoc *psoc,
288*5113495bSYour Name enum scan_config config, uint32_t val);
289*5113495bSYour Name
290*5113495bSYour Name /**
291*5113495bSYour Name * ucfg_scan_get_global_config() - Public API to get global scan config
292*5113495bSYour Name * @psoc: psoc context
293*5113495bSYour Name * @config: config to set
294*5113495bSYour Name * @val: uint32* to hold returned config value
295*5113495bSYour Name *
296*5113495bSYour Name * Return: QDF_STATUS.
297*5113495bSYour Name */
298*5113495bSYour Name QDF_STATUS
299*5113495bSYour Name ucfg_scan_get_global_config(struct wlan_objmgr_psoc *psoc,
300*5113495bSYour Name enum scan_config config, uint32_t *val);
301*5113495bSYour Name
302*5113495bSYour Name /**
303*5113495bSYour Name * ucfg_scan_set_obss_scan_offload() - Public API to set obss scan flag
304*5113495bSYour Name * @psoc: psoc context
305*5113495bSYour Name * @value: the value to be set
306*5113495bSYour Name *
307*5113495bSYour Name * Return: void.
308*5113495bSYour Name */
309*5113495bSYour Name void ucfg_scan_set_obss_scan_offload(struct wlan_objmgr_psoc *psoc, bool value);
310*5113495bSYour Name
311*5113495bSYour Name /**
312*5113495bSYour Name * ucfg_scan_set_wide_band_scan() - Public API to disable/enable wide band scan
313*5113495bSYour Name * @pdev: psoc on which scans need to be disabled
314*5113495bSYour Name * @enable: enable wide band scan if @enable is true, disable otherwise
315*5113495bSYour Name *
316*5113495bSYour Name * Return: QDF_STATUS.
317*5113495bSYour Name */
318*5113495bSYour Name QDF_STATUS ucfg_scan_set_wide_band_scan(
319*5113495bSYour Name struct wlan_objmgr_pdev *pdev, bool enable);
320*5113495bSYour Name
321*5113495bSYour Name /**
322*5113495bSYour Name * ucfg_scan_get_wide_band_scan() - Public API to check if
323*5113495bSYour Name * wide band scan is enabled or disabled
324*5113495bSYour Name * @pdev: psoc on which scans status need to be checked
325*5113495bSYour Name *
326*5113495bSYour Name * Return: true if enabled else false.
327*5113495bSYour Name */
328*5113495bSYour Name bool ucfg_scan_get_wide_band_scan(struct wlan_objmgr_pdev *pdev);
329*5113495bSYour Name
330*5113495bSYour Name /**
331*5113495bSYour Name * ucfg_scan_set_custom_scan_chan_list() - Public API to restrict scan
332*5113495bSYour Name * to few pre configured channels
333*5113495bSYour Name * @pdev: psoc on which scans need to be disabled
334*5113495bSYour Name * @chan_list: list of channels to scan if set
335*5113495bSYour Name *
336*5113495bSYour Name * Return: QDF_STATUS.
337*5113495bSYour Name */
338*5113495bSYour Name QDF_STATUS ucfg_scan_set_custom_scan_chan_list(
339*5113495bSYour Name struct wlan_objmgr_pdev *pdev, struct chan_list *chan_list);
340*5113495bSYour Name
341*5113495bSYour Name /**
342*5113495bSYour Name * ucfg_scan_config_hidden_ssid_for_bssid() - API to configure
343*5113495bSYour Name * ssid, bssid of hidden beacon
344*5113495bSYour Name * @pdev: psoc on which ssid bssid need to configure
345*5113495bSYour Name * @bssid: bssid of the hidden AP
346*5113495bSYour Name * @ssid: desired ssid
347*5113495bSYour Name *
348*5113495bSYour Name * Return: QDF_STATUS.
349*5113495bSYour Name */
350*5113495bSYour Name #ifdef WLAN_DFS_CHAN_HIDDEN_SSID
351*5113495bSYour Name QDF_STATUS
352*5113495bSYour Name ucfg_scan_config_hidden_ssid_for_bssid(struct wlan_objmgr_pdev *pdev,
353*5113495bSYour Name uint8_t *bssid,
354*5113495bSYour Name struct wlan_ssid *ssid);
355*5113495bSYour Name #else
356*5113495bSYour Name static inline QDF_STATUS
ucfg_scan_config_hidden_ssid_for_bssid(struct wlan_objmgr_pdev * pdev,uint8_t * bssid,struct wlan_ssid * ssid)357*5113495bSYour Name ucfg_scan_config_hidden_ssid_for_bssid(struct wlan_objmgr_pdev *pdev,
358*5113495bSYour Name uint8_t *bssid,
359*5113495bSYour Name struct wlan_ssid *ssid)
360*5113495bSYour Name {
361*5113495bSYour Name return QDF_STATUS_SUCCESS;
362*5113495bSYour Name }
363*5113495bSYour Name #endif /* WLAN_DFS_CHAN_HIDDEN_SSID */
364*5113495bSYour Name
365*5113495bSYour Name /**
366*5113495bSYour Name * ucfg_scan_cancel() - ucfg Public API to cancel the scan
367*5113495bSYour Name * @req: stop scan request params
368*5113495bSYour Name *
369*5113495bSYour Name * The ucfg public API to stop a scan. Post a msg to target_if queue
370*5113495bSYour Name *
371*5113495bSYour Name * Return: QDF_STATUS.
372*5113495bSYour Name */
ucfg_scan_cancel(struct scan_cancel_request * req)373*5113495bSYour Name static inline QDF_STATUS ucfg_scan_cancel(struct scan_cancel_request *req)
374*5113495bSYour Name {
375*5113495bSYour Name return wlan_scan_cancel(req);
376*5113495bSYour Name }
377*5113495bSYour Name
378*5113495bSYour Name /**
379*5113495bSYour Name * ucfg_scan_cancel_sync() - Public API to stop a scan and wait
380*5113495bSYour Name * till all scan are completed
381*5113495bSYour Name * @req: stop scan request params
382*5113495bSYour Name *
383*5113495bSYour Name * The Public API to stop a scan and wait
384*5113495bSYour Name * till all scan are completed
385*5113495bSYour Name *
386*5113495bSYour Name * Return: 0 for success or error code.
387*5113495bSYour Name */
388*5113495bSYour Name QDF_STATUS
389*5113495bSYour Name ucfg_scan_cancel_sync(struct scan_cancel_request *req);
390*5113495bSYour Name
391*5113495bSYour Name /**
392*5113495bSYour Name * ucfg_scan_get_result() - The Public API to get scan results
393*5113495bSYour Name * @pdev: pdev info
394*5113495bSYour Name * @filter: Filters
395*5113495bSYour Name *
396*5113495bSYour Name * This function fetches scan result
397*5113495bSYour Name *
398*5113495bSYour Name * Return: scan list pointer
399*5113495bSYour Name */
400*5113495bSYour Name qdf_list_t *ucfg_scan_get_result(struct wlan_objmgr_pdev *pdev,
401*5113495bSYour Name struct scan_filter *filter);
402*5113495bSYour Name
403*5113495bSYour Name /**
404*5113495bSYour Name * ucfg_scan_purge_results() - purge the scan list
405*5113495bSYour Name * @scan_list: scan list to be purged
406*5113495bSYour Name *
407*5113495bSYour Name * This function purge the temp scan list
408*5113495bSYour Name *
409*5113495bSYour Name * Return: QDF_STATUS
410*5113495bSYour Name */
411*5113495bSYour Name QDF_STATUS ucfg_scan_purge_results(qdf_list_t *scan_list);
412*5113495bSYour Name
413*5113495bSYour Name /**
414*5113495bSYour Name * ucfg_scan_flush_results() - The Public API to flush scan result
415*5113495bSYour Name * @pdev: pdev object
416*5113495bSYour Name * @filter: filter to flush the scan entries
417*5113495bSYour Name *
418*5113495bSYour Name * The Public API to flush scan result.
419*5113495bSYour Name *
420*5113495bSYour Name * Return: 0 for success or error code.
421*5113495bSYour Name */
422*5113495bSYour Name QDF_STATUS ucfg_scan_flush_results(struct wlan_objmgr_pdev *pdev,
423*5113495bSYour Name struct scan_filter *filter);
424*5113495bSYour Name
425*5113495bSYour Name /**
426*5113495bSYour Name * ucfg_scan_filter_valid_channel() - The Public API to filter scan result
427*5113495bSYour Name * based on valid channel list
428*5113495bSYour Name * @pdev: pdev object
429*5113495bSYour Name * @chan_freq_list: valid channel frequency (in MHz) list
430*5113495bSYour Name * @num_chan: number of valid channels
431*5113495bSYour Name *
432*5113495bSYour Name * The Public API to to filter scan result
433*5113495bSYour Name * based on valid channel list.
434*5113495bSYour Name *
435*5113495bSYour Name * Return: void.
436*5113495bSYour Name */
437*5113495bSYour Name void ucfg_scan_filter_valid_channel(struct wlan_objmgr_pdev *pdev,
438*5113495bSYour Name uint32_t *chan_freq_list, uint32_t num_chan);
439*5113495bSYour Name
440*5113495bSYour Name /**
441*5113495bSYour Name * ucfg_scan_db_iterate() - function to iterate scan table
442*5113495bSYour Name * @pdev: pdev object
443*5113495bSYour Name * @func: iterator function pointer
444*5113495bSYour Name * @arg: argument to be passed to func()
445*5113495bSYour Name *
446*5113495bSYour Name * API, this API iterates scan table and invokes func
447*5113495bSYour Name * on each scan enetry by passing scan entry and arg.
448*5113495bSYour Name *
449*5113495bSYour Name * Return: QDF_STATUS
450*5113495bSYour Name */
451*5113495bSYour Name QDF_STATUS
452*5113495bSYour Name ucfg_scan_db_iterate(struct wlan_objmgr_pdev *pdev,
453*5113495bSYour Name scan_iterator_func func, void *arg);
454*5113495bSYour Name
455*5113495bSYour Name /**
456*5113495bSYour Name * ucfg_scan_register_event_handler() - The Public API to register
457*5113495bSYour Name * an event cb handler
458*5113495bSYour Name * @pdev: pdev object
459*5113495bSYour Name * @event_cb: callback function to register
460*5113495bSYour Name * @arg: component specific priv argument to @event_cb callback function
461*5113495bSYour Name *
462*5113495bSYour Name * The Public API to register a event cb handler. This cb is called whenever
463*5113495bSYour Name * any scan event is received on @pdev.
464*5113495bSYour Name *
465*5113495bSYour Name * Return: 0 for success or error code.
466*5113495bSYour Name */
467*5113495bSYour Name
468*5113495bSYour Name QDF_STATUS
469*5113495bSYour Name ucfg_scan_register_event_handler(struct wlan_objmgr_pdev *pdev,
470*5113495bSYour Name scan_event_handler event_cb, void *arg);
471*5113495bSYour Name
472*5113495bSYour Name /**
473*5113495bSYour Name * ucfg_scan_unregister_event_handler() - Public API to unregister
474*5113495bSYour Name * event cb handler
475*5113495bSYour Name * @pdev: pdev object
476*5113495bSYour Name * @event_cb: callback function to unregister
477*5113495bSYour Name * @arg: component specific priv argument to @event_cb callback function
478*5113495bSYour Name *
479*5113495bSYour Name * Unregister a event cb handler. cb and arg will be used to
480*5113495bSYour Name * find the callback.
481*5113495bSYour Name *
482*5113495bSYour Name * Return: void
483*5113495bSYour Name */
484*5113495bSYour Name
485*5113495bSYour Name void
486*5113495bSYour Name ucfg_scan_unregister_event_handler(struct wlan_objmgr_pdev *pdev,
487*5113495bSYour Name scan_event_handler event_cb, void *arg);
488*5113495bSYour Name
489*5113495bSYour Name /**
490*5113495bSYour Name * ucfg_scan_init_default_params() - Public ucfg API to initialize scan params
491*5113495bSYour Name * @vdev: vdev object
492*5113495bSYour Name * @req: scan request object
493*5113495bSYour Name *
494*5113495bSYour Name * Public ucfg API to initialize scan start request with defaults scan params
495*5113495bSYour Name *
496*5113495bSYour Name * Return: QDF_STATUS_SUCCESS or error code
497*5113495bSYour Name */
498*5113495bSYour Name static inline QDF_STATUS
ucfg_scan_init_default_params(struct wlan_objmgr_vdev * vdev,struct scan_start_request * req)499*5113495bSYour Name ucfg_scan_init_default_params(struct wlan_objmgr_vdev *vdev,
500*5113495bSYour Name struct scan_start_request *req)
501*5113495bSYour Name {
502*5113495bSYour Name return wlan_scan_init_default_params(vdev, req);
503*5113495bSYour Name }
504*5113495bSYour Name
505*5113495bSYour Name /**
506*5113495bSYour Name * ucfg_scan_init_ssid_params() - initialize scan request ssid list
507*5113495bSYour Name *
508*5113495bSYour Name * @scan_req: scan request object
509*5113495bSYour Name * @num_ssid: number of ssid's in ssid list
510*5113495bSYour Name * @ssid_list: ssid list
511*5113495bSYour Name *
512*5113495bSYour Name * Return: QDF_STATUS_SUCCESS for success or error code
513*5113495bSYour Name */
514*5113495bSYour Name QDF_STATUS
515*5113495bSYour Name ucfg_scan_init_ssid_params(struct scan_start_request *scan_req,
516*5113495bSYour Name uint32_t num_ssid, struct wlan_ssid *ssid_list);
517*5113495bSYour Name
518*5113495bSYour Name /**
519*5113495bSYour Name * ucfg_scan_init_bssid_params() - initialize scan request bssid list
520*5113495bSYour Name * @scan_req: scan request object
521*5113495bSYour Name * @num_ssid: number of bssid's in bssid list
522*5113495bSYour Name * @bssid_list: bssid list
523*5113495bSYour Name *
524*5113495bSYour Name * Return: QDF_STATUS_SUCCESS for success or error code
525*5113495bSYour Name */
526*5113495bSYour Name QDF_STATUS
527*5113495bSYour Name ucfg_scan_init_bssid_params(struct scan_start_request *scan_req,
528*5113495bSYour Name uint32_t num_ssid, struct qdf_mac_addr *bssid_list);
529*5113495bSYour Name
530*5113495bSYour Name /**
531*5113495bSYour Name * ucfg_scan_init_chanlist_params() - initialize scan request channel list
532*5113495bSYour Name * @scan_req: scan request object
533*5113495bSYour Name * @num_chans: number of channels in channel list
534*5113495bSYour Name * @chan_list: channel list
535*5113495bSYour Name * @phymode: phymode in which scan shall be done
536*5113495bSYour Name *
537*5113495bSYour Name * Return: QDF_STATUS_SUCCESS for success or error code
538*5113495bSYour Name */
539*5113495bSYour Name QDF_STATUS
540*5113495bSYour Name ucfg_scan_init_chanlist_params(struct scan_start_request *scan_req,
541*5113495bSYour Name uint32_t num_chans, uint32_t *chan_list, uint32_t *phymode);
542*5113495bSYour Name
543*5113495bSYour Name /**
544*5113495bSYour Name * ucfg_scan_get_vdev_status() - API to check vdev scan status
545*5113495bSYour Name * @vdev: vdev object
546*5113495bSYour Name *
547*5113495bSYour Name * Return: enum scm_scan_status
548*5113495bSYour Name */
549*5113495bSYour Name enum scm_scan_status
550*5113495bSYour Name ucfg_scan_get_vdev_status(struct wlan_objmgr_vdev *vdev);
551*5113495bSYour Name
552*5113495bSYour Name /**
553*5113495bSYour Name * ucfg_scan_get_pdev_status() - API to check pdev scan status
554*5113495bSYour Name * @pdev: pdev object
555*5113495bSYour Name *
556*5113495bSYour Name * Return: enum scm_scan_status
557*5113495bSYour Name */
558*5113495bSYour Name enum scm_scan_status
559*5113495bSYour Name ucfg_scan_get_pdev_status(struct wlan_objmgr_pdev *pdev);
560*5113495bSYour Name
561*5113495bSYour Name /**
562*5113495bSYour Name * ucfg_scan_register_bcn_cb() - API to register api
563*5113495bSYour Name * to inform/update bcn/probe as soon as they are received
564*5113495bSYour Name * @psoc: psoc
565*5113495bSYour Name * @cb: callback to be registered
566*5113495bSYour Name * @type: Type of callback to be registered
567*5113495bSYour Name *
568*5113495bSYour Name * Return: enum scm_scan_status
569*5113495bSYour Name */
570*5113495bSYour Name QDF_STATUS ucfg_scan_register_bcn_cb(struct wlan_objmgr_psoc *psoc,
571*5113495bSYour Name update_beacon_cb cb, enum scan_cb_type type);
572*5113495bSYour Name
573*5113495bSYour Name /**
574*5113495bSYour Name * ucfg_scan_update_user_config() - Update scan cache user config
575*5113495bSYour Name * @psoc: psoc
576*5113495bSYour Name * @scan_cfg: scan user config
577*5113495bSYour Name *
578*5113495bSYour Name * Return: QDF_STATUS
579*5113495bSYour Name */
580*5113495bSYour Name QDF_STATUS ucfg_scan_update_user_config(struct wlan_objmgr_psoc *psoc,
581*5113495bSYour Name struct scan_user_cfg *scan_cfg);
582*5113495bSYour Name
583*5113495bSYour Name /**
584*5113495bSYour Name * ucfg_scan_init() - Scan module initialization API
585*5113495bSYour Name *
586*5113495bSYour Name * Return: QDF_STATUS
587*5113495bSYour Name */
588*5113495bSYour Name QDF_STATUS ucfg_scan_init(void);
589*5113495bSYour Name
590*5113495bSYour Name /**
591*5113495bSYour Name * ucfg_scan_deinit() - Scan module deinitialization API
592*5113495bSYour Name *
593*5113495bSYour Name * Return: QDF_STATUS
594*5113495bSYour Name */
595*5113495bSYour Name QDF_STATUS ucfg_scan_deinit(void);
596*5113495bSYour Name
597*5113495bSYour Name /**
598*5113495bSYour Name * ucfg_scan_psoc_enable() - Scan module enable API
599*5113495bSYour Name * @psoc: psoc object
600*5113495bSYour Name *
601*5113495bSYour Name * Return: QDF_STATUS
602*5113495bSYour Name */
603*5113495bSYour Name QDF_STATUS ucfg_scan_psoc_enable(struct wlan_objmgr_psoc *psoc);
604*5113495bSYour Name
605*5113495bSYour Name /**
606*5113495bSYour Name * ucfg_scan_psoc_disable() - Scan module disable API
607*5113495bSYour Name * @psoc: psoc object
608*5113495bSYour Name *
609*5113495bSYour Name * Return: QDF_STATUS
610*5113495bSYour Name */
611*5113495bSYour Name QDF_STATUS ucfg_scan_psoc_disable(struct wlan_objmgr_psoc *psoc);
612*5113495bSYour Name
613*5113495bSYour Name /**
614*5113495bSYour Name * ucfg_scan_psoc_open() - Scan module psoc open API
615*5113495bSYour Name * @psoc: psoc object
616*5113495bSYour Name *
617*5113495bSYour Name * Return: QDF_STATUS
618*5113495bSYour Name */
619*5113495bSYour Name QDF_STATUS ucfg_scan_psoc_open(struct wlan_objmgr_psoc *psoc);
620*5113495bSYour Name
621*5113495bSYour Name /**
622*5113495bSYour Name * ucfg_scan_psoc_close() - Scan module psoc close API
623*5113495bSYour Name * @psoc: psoc object
624*5113495bSYour Name *
625*5113495bSYour Name * Return: QDF_STATUS
626*5113495bSYour Name */
627*5113495bSYour Name QDF_STATUS ucfg_scan_psoc_close(struct wlan_objmgr_psoc *psoc);
628*5113495bSYour Name
629*5113495bSYour Name /**
630*5113495bSYour Name * ucfg_scan_get_max_active_scans() - API to get max active scans
631*5113495bSYour Name * supported on this psoc
632*5113495bSYour Name * @psoc: psoc object
633*5113495bSYour Name *
634*5113495bSYour Name * Return: uint32_t
635*5113495bSYour Name */
636*5113495bSYour Name uint32_t ucfg_scan_get_max_active_scans(struct wlan_objmgr_psoc *psoc);
637*5113495bSYour Name
638*5113495bSYour Name /**
639*5113495bSYour Name * ucfg_ie_allowlist_enabled() - Checks for IE allowlisting enable
640*5113495bSYour Name * @psoc: pointer to psoc object
641*5113495bSYour Name * @vdev: pointer to vdev
642*5113495bSYour Name *
643*5113495bSYour Name * This function is used to check whether IE allowlisting is enabled or not
644*5113495bSYour Name *
645*5113495bSYour Name * Return: If enabled returns true else returns false
646*5113495bSYour Name */
647*5113495bSYour Name bool ucfg_ie_allowlist_enabled(struct wlan_objmgr_psoc *psoc,
648*5113495bSYour Name struct wlan_objmgr_vdev *vdev);
649*5113495bSYour Name
650*5113495bSYour Name /**
651*5113495bSYour Name * ucfg_copy_ie_allowlist_attrs() - Populate probe req IE allowlist attrs
652*5113495bSYour Name * @psoc: pointer to psoc object
653*5113495bSYour Name * @ie_allowlist: output parameter to hold ie allowlist attrs
654*5113495bSYour Name *
655*5113495bSYour Name * If IE allowlisting is enabled then invoke this function to copy
656*5113495bSYour Name * IE allowlisting attrs from wlan scan object
657*5113495bSYour Name *
658*5113495bSYour Name * Return: true - successful copy
659*5113495bSYour Name * false - copy failed
660*5113495bSYour Name */
661*5113495bSYour Name bool
662*5113495bSYour Name ucfg_copy_ie_allowlist_attrs(struct wlan_objmgr_psoc *psoc,
663*5113495bSYour Name struct probe_req_allowlist_attr *ie_allowlist);
664*5113495bSYour Name
665*5113495bSYour Name /**
666*5113495bSYour Name * ucfg_scan_set_bt_activity() - API to set bt activity
667*5113495bSYour Name * @psoc: pointer to psoc object
668*5113495bSYour Name * @bt_a2dp_active: bt activiy value
669*5113495bSYour Name *
670*5113495bSYour Name * Return: None
671*5113495bSYour Name */
672*5113495bSYour Name void ucfg_scan_set_bt_activity(struct wlan_objmgr_psoc *psoc,
673*5113495bSYour Name bool bt_a2dp_active);
674*5113495bSYour Name /**
675*5113495bSYour Name * ucfg_scan_get_bt_activity() - API to get bt activity
676*5113495bSYour Name * @psoc: pointer to psoc object
677*5113495bSYour Name *
678*5113495bSYour Name * Return: true if enabled else false.
679*5113495bSYour Name */
680*5113495bSYour Name bool ucfg_scan_get_bt_activity(struct wlan_objmgr_psoc *psoc);
681*5113495bSYour Name
682*5113495bSYour Name /**
683*5113495bSYour Name * ucfg_scan_is_mac_spoofing_enabled() - API to check if mac spoofing is enabled
684*5113495bSYour Name * @psoc: pointer to psoc object
685*5113495bSYour Name *
686*5113495bSYour Name * Return: true if enabled else false.
687*5113495bSYour Name */
688*5113495bSYour Name bool ucfg_scan_is_mac_spoofing_enabled(struct wlan_objmgr_psoc *psoc);
689*5113495bSYour Name
690*5113495bSYour Name /**
691*5113495bSYour Name * ucfg_scan_get_extscan_adaptive_dwell_mode() - API to get the adaptive dwell
692*5113495bSYour Name * mode during ext scan
693*5113495bSYour Name * @psoc: pointer to psoc object
694*5113495bSYour Name *
695*5113495bSYour Name * Return: value of type enum scan_dwelltime_adaptive_mode
696*5113495bSYour Name */
697*5113495bSYour Name enum scan_dwelltime_adaptive_mode
698*5113495bSYour Name ucfg_scan_get_extscan_adaptive_dwell_mode(struct wlan_objmgr_psoc *psoc);
699*5113495bSYour Name
700*5113495bSYour Name /**
701*5113495bSYour Name * ucfg_scan_cfg_set_active_dwelltime() - API to set scan active dwelltime
702*5113495bSYour Name * @psoc: pointer to psoc object
703*5113495bSYour Name * @dwell_time: scan active dwell time
704*5113495bSYour Name *
705*5113495bSYour Name * Return: none
706*5113495bSYour Name */
707*5113495bSYour Name static inline
ucfg_scan_cfg_set_active_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t dwell_time)708*5113495bSYour Name void ucfg_scan_cfg_set_active_dwelltime(struct wlan_objmgr_psoc *psoc,
709*5113495bSYour Name uint32_t dwell_time)
710*5113495bSYour Name {
711*5113495bSYour Name return wlan_scan_cfg_set_active_dwelltime(psoc, dwell_time);
712*5113495bSYour Name }
713*5113495bSYour Name
714*5113495bSYour Name /**
715*5113495bSYour Name * ucfg_scan_cfg_set_active_2g_dwelltime() - API to set scan active 2g dwelltime
716*5113495bSYour Name * @psoc: pointer to psoc object
717*5113495bSYour Name * @dwell_time: scan active dwell time
718*5113495bSYour Name *
719*5113495bSYour Name * Return: none
720*5113495bSYour Name */
721*5113495bSYour Name static inline
ucfg_scan_cfg_set_active_2g_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t dwell_time)722*5113495bSYour Name void ucfg_scan_cfg_set_active_2g_dwelltime(struct wlan_objmgr_psoc *psoc,
723*5113495bSYour Name uint32_t dwell_time)
724*5113495bSYour Name {
725*5113495bSYour Name return wlan_scan_cfg_set_active_2g_dwelltime(psoc, dwell_time);
726*5113495bSYour Name }
727*5113495bSYour Name
728*5113495bSYour Name /**
729*5113495bSYour Name * ucfg_scan_cfg_get_active_dwelltime() - API to get active dwelltime
730*5113495bSYour Name * @psoc: pointer to psoc object
731*5113495bSYour Name * @dwell_time: scan active dwelltime
732*5113495bSYour Name *
733*5113495bSYour Name * Return: scan active dwell time
734*5113495bSYour Name */
735*5113495bSYour Name static inline
ucfg_scan_cfg_get_active_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t * dwell_time)736*5113495bSYour Name void ucfg_scan_cfg_get_active_dwelltime(struct wlan_objmgr_psoc *psoc,
737*5113495bSYour Name uint32_t *dwell_time)
738*5113495bSYour Name {
739*5113495bSYour Name return wlan_scan_cfg_get_active_dwelltime(psoc, dwell_time);
740*5113495bSYour Name }
741*5113495bSYour Name
742*5113495bSYour Name /**
743*5113495bSYour Name * ucfg_scan_cfg_set_passive_dwelltime() - API to set scan passive dwelltime
744*5113495bSYour Name * @psoc: pointer to psoc object
745*5113495bSYour Name * @dwell_time: scan passive dwell time
746*5113495bSYour Name *
747*5113495bSYour Name * Return: none
748*5113495bSYour Name */
749*5113495bSYour Name static inline
ucfg_scan_cfg_set_passive_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t dwell_time)750*5113495bSYour Name void ucfg_scan_cfg_set_passive_dwelltime(struct wlan_objmgr_psoc *psoc,
751*5113495bSYour Name uint32_t dwell_time)
752*5113495bSYour Name {
753*5113495bSYour Name return wlan_scan_cfg_set_passive_dwelltime(psoc, dwell_time);
754*5113495bSYour Name }
755*5113495bSYour Name /**
756*5113495bSYour Name * ucfg_scan_cfg_get_passive_dwelltime() - API to get passive dwelltime
757*5113495bSYour Name * @psoc: pointer to psoc object
758*5113495bSYour Name * @dwell_time: scan passive dwelltime
759*5113495bSYour Name *
760*5113495bSYour Name * Return: scan passive dwell time
761*5113495bSYour Name */
762*5113495bSYour Name static inline
ucfg_scan_cfg_get_passive_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t * dwell_time)763*5113495bSYour Name void ucfg_scan_cfg_get_passive_dwelltime(struct wlan_objmgr_psoc *psoc,
764*5113495bSYour Name uint32_t *dwell_time)
765*5113495bSYour Name {
766*5113495bSYour Name return wlan_scan_cfg_get_passive_dwelltime(psoc, dwell_time);
767*5113495bSYour Name }
768*5113495bSYour Name
769*5113495bSYour Name /**
770*5113495bSYour Name * ucfg_scan_cfg_get_active_2g_dwelltime() - API to get active 2g dwelltime
771*5113495bSYour Name * @psoc: pointer to psoc object
772*5113495bSYour Name * @dwell_time: scan active 2g dwelltime
773*5113495bSYour Name *
774*5113495bSYour Name * Return: scan active 2g dwelltime
775*5113495bSYour Name */
776*5113495bSYour Name static inline
ucfg_scan_cfg_get_active_2g_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t * dwell_time)777*5113495bSYour Name void ucfg_scan_cfg_get_active_2g_dwelltime(struct wlan_objmgr_psoc *psoc,
778*5113495bSYour Name uint32_t *dwell_time)
779*5113495bSYour Name {
780*5113495bSYour Name return wlan_scan_cfg_get_active_2g_dwelltime(psoc, dwell_time);
781*5113495bSYour Name }
782*5113495bSYour Name
783*5113495bSYour Name #ifdef CONFIG_BAND_6GHZ
784*5113495bSYour Name /**
785*5113495bSYour Name * ucfg_scan_cfg_set_active_6g_dwelltime() - API to set scan active 6g dwelltime
786*5113495bSYour Name * @psoc: pointer to psoc object
787*5113495bSYour Name * @dwell_time: scan active dwell time
788*5113495bSYour Name *
789*5113495bSYour Name * Return: QDF_STATUS
790*5113495bSYour Name */
791*5113495bSYour Name static inline
ucfg_scan_cfg_set_active_6g_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t dwell_time)792*5113495bSYour Name QDF_STATUS ucfg_scan_cfg_set_active_6g_dwelltime(struct wlan_objmgr_psoc *psoc,
793*5113495bSYour Name uint32_t dwell_time)
794*5113495bSYour Name {
795*5113495bSYour Name return wlan_scan_cfg_set_active_6g_dwelltime(psoc, dwell_time);
796*5113495bSYour Name }
797*5113495bSYour Name
798*5113495bSYour Name /**
799*5113495bSYour Name * ucfg_scan_cfg_get_passive_6g_dwelltime() - API to get passive 6g dwelltime
800*5113495bSYour Name * @psoc: pointer to psoc object
801*5113495bSYour Name * @dwell_time: scan passive 6g dwelltime
802*5113495bSYour Name *
803*5113495bSYour Name * Return: QDF_STATUS
804*5113495bSYour Name */
805*5113495bSYour Name static inline
ucfg_scan_cfg_get_passive_6g_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t * dwell_time)806*5113495bSYour Name QDF_STATUS ucfg_scan_cfg_get_passive_6g_dwelltime(struct wlan_objmgr_psoc *psoc,
807*5113495bSYour Name uint32_t *dwell_time)
808*5113495bSYour Name {
809*5113495bSYour Name return wlan_scan_cfg_get_passive_6g_dwelltime(psoc, dwell_time);
810*5113495bSYour Name }
811*5113495bSYour Name
812*5113495bSYour Name /**
813*5113495bSYour Name * ucfg_scan_cfg_set_passive_6g_dwelltime() - API to set scan passive 6g
814*5113495bSYour Name * dwelltime
815*5113495bSYour Name * @psoc: pointer to psoc object
816*5113495bSYour Name * @dwell_time: scan passive dwell time
817*5113495bSYour Name *
818*5113495bSYour Name * Return: QDF_STATUS
819*5113495bSYour Name */
820*5113495bSYour Name static inline
ucfg_scan_cfg_set_passive_6g_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t dwell_time)821*5113495bSYour Name QDF_STATUS ucfg_scan_cfg_set_passive_6g_dwelltime(struct wlan_objmgr_psoc *psoc,
822*5113495bSYour Name uint32_t dwell_time)
823*5113495bSYour Name {
824*5113495bSYour Name return wlan_scan_cfg_set_passive_6g_dwelltime(psoc, dwell_time);
825*5113495bSYour Name }
826*5113495bSYour Name
827*5113495bSYour Name /**
828*5113495bSYour Name * ucfg_scan_cfg_get_active_6g_dwelltime() - API to get active 6g dwelltime
829*5113495bSYour Name * @psoc: pointer to psoc object
830*5113495bSYour Name * @dwell_time: scan active 6g dwelltime
831*5113495bSYour Name *
832*5113495bSYour Name * Return: QDF_STATUS
833*5113495bSYour Name */
834*5113495bSYour Name static inline
ucfg_scan_cfg_get_active_6g_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t * dwell_time)835*5113495bSYour Name QDF_STATUS ucfg_scan_cfg_get_active_6g_dwelltime(struct wlan_objmgr_psoc *psoc,
836*5113495bSYour Name uint32_t *dwell_time)
837*5113495bSYour Name {
838*5113495bSYour Name return wlan_scan_cfg_get_active_6g_dwelltime(psoc, dwell_time);
839*5113495bSYour Name }
840*5113495bSYour Name #endif
841*5113495bSYour Name
842*5113495bSYour Name /**
843*5113495bSYour Name * ucfg_scan_cfg_get_conc_active_dwelltime() - Get concurrent active dwelltime
844*5113495bSYour Name * @psoc: pointer to psoc object
845*5113495bSYour Name * @dwell_time: scan active dwelltime
846*5113495bSYour Name *
847*5113495bSYour Name * Return: scan concurrent active dwell time
848*5113495bSYour Name */
849*5113495bSYour Name static inline
ucfg_scan_cfg_get_conc_active_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t * dwell_time)850*5113495bSYour Name void ucfg_scan_cfg_get_conc_active_dwelltime(struct wlan_objmgr_psoc *psoc,
851*5113495bSYour Name uint32_t *dwell_time)
852*5113495bSYour Name {
853*5113495bSYour Name return wlan_scan_cfg_get_conc_active_dwelltime(psoc, dwell_time);
854*5113495bSYour Name }
855*5113495bSYour Name
856*5113495bSYour Name /**
857*5113495bSYour Name * ucfg_scan_cfg_set_conc_active_dwelltime() - Set concurrent active dwelltime
858*5113495bSYour Name * @psoc: pointer to psoc object
859*5113495bSYour Name * @dwell_time: scan active dwelltime
860*5113495bSYour Name *
861*5113495bSYour Name * Return: scan concurrent active dwell time
862*5113495bSYour Name */
863*5113495bSYour Name static inline
ucfg_scan_cfg_set_conc_active_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t dwell_time)864*5113495bSYour Name void ucfg_scan_cfg_set_conc_active_dwelltime(struct wlan_objmgr_psoc *psoc,
865*5113495bSYour Name uint32_t dwell_time)
866*5113495bSYour Name {
867*5113495bSYour Name return wlan_scan_cfg_set_conc_active_dwelltime(psoc, dwell_time);
868*5113495bSYour Name }
869*5113495bSYour Name
870*5113495bSYour Name /**
871*5113495bSYour Name * ucfg_scan_cfg_get_conc_passive_dwelltime() - Get passive concurrent dwelltime
872*5113495bSYour Name * @psoc: pointer to psoc object
873*5113495bSYour Name * @dwell_time: scan passive dwelltime
874*5113495bSYour Name *
875*5113495bSYour Name * Return: scan concurrent passive dwell time
876*5113495bSYour Name */
877*5113495bSYour Name static inline
ucfg_scan_cfg_get_conc_passive_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t * dwell_time)878*5113495bSYour Name void ucfg_scan_cfg_get_conc_passive_dwelltime(struct wlan_objmgr_psoc *psoc,
879*5113495bSYour Name uint32_t *dwell_time)
880*5113495bSYour Name {
881*5113495bSYour Name return wlan_scan_cfg_get_conc_passive_dwelltime(psoc, dwell_time);
882*5113495bSYour Name }
883*5113495bSYour Name
884*5113495bSYour Name /**
885*5113495bSYour Name * ucfg_scan_cfg_set_conc_passive_dwelltime() - Set passive concurrent dwelltime
886*5113495bSYour Name * @psoc: pointer to psoc object
887*5113495bSYour Name * @dwell_time: scan passive dwelltime
888*5113495bSYour Name *
889*5113495bSYour Name * Return: scan concurrent passive dwell time
890*5113495bSYour Name */
891*5113495bSYour Name static inline
ucfg_scan_cfg_set_conc_passive_dwelltime(struct wlan_objmgr_psoc * psoc,uint32_t dwell_time)892*5113495bSYour Name void ucfg_scan_cfg_set_conc_passive_dwelltime(struct wlan_objmgr_psoc *psoc,
893*5113495bSYour Name uint32_t dwell_time)
894*5113495bSYour Name {
895*5113495bSYour Name return wlan_scan_cfg_set_conc_passive_dwelltime(psoc, dwell_time);
896*5113495bSYour Name }
897*5113495bSYour Name
898*5113495bSYour Name /**
899*5113495bSYour Name * ucfg_scan_cfg_get_dfs_chan_scan_allowed() - API to get dfs scan enabled
900*5113495bSYour Name * @psoc: pointer to psoc object
901*5113495bSYour Name * @dfs_scan_enable: Set DFS scan enabled or not.
902*5113495bSYour Name *
903*5113495bSYour Name * Return: None
904*5113495bSYour Name */
905*5113495bSYour Name static inline
ucfg_scan_cfg_get_dfs_chan_scan_allowed(struct wlan_objmgr_psoc * psoc,bool * dfs_scan_enable)906*5113495bSYour Name void ucfg_scan_cfg_get_dfs_chan_scan_allowed(struct wlan_objmgr_psoc *psoc,
907*5113495bSYour Name bool *dfs_scan_enable)
908*5113495bSYour Name {
909*5113495bSYour Name return wlan_scan_cfg_get_dfs_chan_scan_allowed(psoc, dfs_scan_enable);
910*5113495bSYour Name }
911*5113495bSYour Name
912*5113495bSYour Name /**
913*5113495bSYour Name * ucfg_scan_cfg_set_dfs_chan_scan_allowed() - API to set dfs scan enabled
914*5113495bSYour Name * @psoc: pointer to psoc object
915*5113495bSYour Name * @dfs_scan_enable: Set DFS scan enabled or not.
916*5113495bSYour Name *
917*5113495bSYour Name * Return: None
918*5113495bSYour Name */
919*5113495bSYour Name static inline
ucfg_scan_cfg_set_dfs_chan_scan_allowed(struct wlan_objmgr_psoc * psoc,bool dfs_scan_enable)920*5113495bSYour Name void ucfg_scan_cfg_set_dfs_chan_scan_allowed(struct wlan_objmgr_psoc *psoc,
921*5113495bSYour Name bool dfs_scan_enable)
922*5113495bSYour Name {
923*5113495bSYour Name return wlan_scan_cfg_set_dfs_chan_scan_allowed(psoc, dfs_scan_enable);
924*5113495bSYour Name }
925*5113495bSYour Name
926*5113495bSYour Name /**
927*5113495bSYour Name * ucfg_scan_wake_lock_in_user_scan() - API to determine if wake lock in user
928*5113495bSYour Name * scan is used.
929*5113495bSYour Name * @psoc: pointer to psoc object
930*5113495bSYour Name *
931*5113495bSYour Name * Return: true if wake lock in user scan is required
932*5113495bSYour Name */
933*5113495bSYour Name bool ucfg_scan_wake_lock_in_user_scan(struct wlan_objmgr_psoc *psoc);
934*5113495bSYour Name
935*5113495bSYour Name /**
936*5113495bSYour Name * ucfg_scan_cfg_honour_nl_scan_policy_flags() - API to get nl scan policy
937*5113495bSYour Name * flags honoured.
938*5113495bSYour Name * @psoc: pointer to psoc object
939*5113495bSYour Name *
940*5113495bSYour Name * Return: nl scan flags is honoured or not
941*5113495bSYour Name */
942*5113495bSYour Name static inline
ucfg_scan_cfg_honour_nl_scan_policy_flags(struct wlan_objmgr_psoc * psoc)943*5113495bSYour Name bool ucfg_scan_cfg_honour_nl_scan_policy_flags(struct wlan_objmgr_psoc *psoc)
944*5113495bSYour Name {
945*5113495bSYour Name return wlan_scan_cfg_honour_nl_scan_policy_flags(psoc);
946*5113495bSYour Name }
947*5113495bSYour Name
948*5113495bSYour Name /**
949*5113495bSYour Name * ucfg_scan_cfg_get_conc_max_resttime() - API to get max rest time
950*5113495bSYour Name * @psoc: pointer to psoc object
951*5113495bSYour Name * @rest_time: scan concurrent max resttime
952*5113495bSYour Name *
953*5113495bSYour Name * Return: scan concurrent max rest time
954*5113495bSYour Name */
955*5113495bSYour Name static inline
ucfg_scan_cfg_get_conc_max_resttime(struct wlan_objmgr_psoc * psoc,uint32_t * rest_time)956*5113495bSYour Name void ucfg_scan_cfg_get_conc_max_resttime(struct wlan_objmgr_psoc *psoc,
957*5113495bSYour Name uint32_t *rest_time)
958*5113495bSYour Name {
959*5113495bSYour Name return wlan_scan_cfg_get_conc_max_resttime(psoc, rest_time);
960*5113495bSYour Name }
961*5113495bSYour Name
962*5113495bSYour Name /**
963*5113495bSYour Name * ucfg_scan_cfg_get_conc_min_resttime() - API to get concurrent min rest time
964*5113495bSYour Name * @psoc: pointer to psoc object
965*5113495bSYour Name * @rest_time: scan concurrent min rest time
966*5113495bSYour Name *
967*5113495bSYour Name * Return: scan concurrent min rest time
968*5113495bSYour Name */
969*5113495bSYour Name static inline
ucfg_scan_cfg_get_conc_min_resttime(struct wlan_objmgr_psoc * psoc,uint32_t * rest_time)970*5113495bSYour Name void ucfg_scan_cfg_get_conc_min_resttime(struct wlan_objmgr_psoc *psoc,
971*5113495bSYour Name uint32_t *rest_time)
972*5113495bSYour Name {
973*5113495bSYour Name return wlan_scan_cfg_get_conc_min_resttime(psoc, rest_time);
974*5113495bSYour Name }
975*5113495bSYour Name
976*5113495bSYour Name #ifdef FEATURE_WLAN_SCAN_PNO
977*5113495bSYour Name /**
978*5113495bSYour Name * ucfg_scan_is_pno_offload_enabled() - Check if pno offload is enabled
979*5113495bSYour Name * @psoc: pointer to psoc object
980*5113495bSYour Name *
981*5113495bSYour Name * Return: pno_offload_enabled flag
982*5113495bSYour Name */
983*5113495bSYour Name bool ucfg_scan_is_pno_offload_enabled(struct wlan_objmgr_psoc *psoc);
984*5113495bSYour Name
985*5113495bSYour Name /**
986*5113495bSYour Name * ucfg_scan_set_pno_offload() - API to set pno offload flag based on the
987*5113495bSYour Name * capability received from the firmware.
988*5113495bSYour Name * @psoc: pointer to psoc object
989*5113495bSYour Name * @value: pno offload flag value
990*5113495bSYour Name *
991*5113495bSYour Name * Return: scan concurrent min rest time
992*5113495bSYour Name */
993*5113495bSYour Name void ucfg_scan_set_pno_offload(struct wlan_objmgr_psoc *psoc, bool value);
994*5113495bSYour Name
995*5113495bSYour Name /**
996*5113495bSYour Name * ucfg_scan_get_pno_scan_support() - Check if pno scan support is enabled
997*5113495bSYour Name * @psoc: pointer to psoc object
998*5113495bSYour Name *
999*5113495bSYour Name * Return: scan_support_enabled flag
1000*5113495bSYour Name */
1001*5113495bSYour Name bool ucfg_scan_get_pno_scan_support(struct wlan_objmgr_psoc *psoc);
1002*5113495bSYour Name
1003*5113495bSYour Name /**
1004*5113495bSYour Name * ucfg_get_scan_backoff_multiplier() - get scan backoff multiplier value
1005*5113495bSYour Name * @psoc: pointer to psoc object
1006*5113495bSYour Name *
1007*5113495bSYour Name * Return: scan_support_enabled flag
1008*5113495bSYour Name */
1009*5113495bSYour Name uint8_t ucfg_get_scan_backoff_multiplier(struct wlan_objmgr_psoc *psoc);
1010*5113495bSYour Name
1011*5113495bSYour Name /**
1012*5113495bSYour Name * ucfg_scan_is_dfs_chnl_scan_enabled() - Check if PNO dfs channel scan support
1013*5113495bSYour Name * is enabled
1014*5113495bSYour Name * @psoc: pointer to psoc object
1015*5113495bSYour Name *
1016*5113495bSYour Name * Return: dfs_chnl_scan_enabled flag
1017*5113495bSYour Name */
1018*5113495bSYour Name bool ucfg_scan_is_dfs_chnl_scan_enabled(struct wlan_objmgr_psoc *psoc);
1019*5113495bSYour Name
1020*5113495bSYour Name /**
1021*5113495bSYour Name * ucfg_scan_get_scan_timer_repeat_value() - API to get PNO scan timer repeat
1022*5113495bSYour Name * value
1023*5113495bSYour Name * @psoc: pointer to psoc object
1024*5113495bSYour Name *
1025*5113495bSYour Name * Return: scan_timer_repeat_value
1026*5113495bSYour Name */
1027*5113495bSYour Name uint32_t ucfg_scan_get_scan_timer_repeat_value(struct wlan_objmgr_psoc *psoc);
1028*5113495bSYour Name
1029*5113495bSYour Name /**
1030*5113495bSYour Name * ucfg_scan_get_slow_scan_multiplier() - API to get PNO slow scan multiplier
1031*5113495bSYour Name * value
1032*5113495bSYour Name * @psoc: pointer to psoc object
1033*5113495bSYour Name *
1034*5113495bSYour Name * Return: slow_scan_multiplier value
1035*5113495bSYour Name */
1036*5113495bSYour Name uint32_t ucfg_scan_get_slow_scan_multiplier(struct wlan_objmgr_psoc *psoc);
1037*5113495bSYour Name
1038*5113495bSYour Name /**
1039*5113495bSYour Name * ucfg_scan_get_max_sched_scan_plan_interval() - API to get maximum scheduled
1040*5113495bSYour Name * scan plan interval
1041*5113495bSYour Name * @psoc: pointer to psoc object
1042*5113495bSYour Name *
1043*5113495bSYour Name * Return: max_sched_scan_plan_interval value.
1044*5113495bSYour Name */
1045*5113495bSYour Name uint32_t
1046*5113495bSYour Name ucfg_scan_get_max_sched_scan_plan_interval(struct wlan_objmgr_psoc *psoc);
1047*5113495bSYour Name
1048*5113495bSYour Name /**
1049*5113495bSYour Name * ucfg_scan_get_max_sched_scan_plan_iterations() - API to get maximum scheduled
1050*5113495bSYour Name * scan plan iterations
1051*5113495bSYour Name * @psoc: pointer to psoc object
1052*5113495bSYour Name *
1053*5113495bSYour Name * Return: value.
1054*5113495bSYour Name */
1055*5113495bSYour Name uint32_t
1056*5113495bSYour Name ucfg_scan_get_max_sched_scan_plan_iterations(struct wlan_objmgr_psoc *psoc);
1057*5113495bSYour Name
1058*5113495bSYour Name /**
1059*5113495bSYour Name * ucfg_scan_get_user_config_sched_scan_plan() - API to get user config sched
1060*5113495bSYour Name * scan plan configuration value
1061*5113495bSYour Name * @psoc: pointer to psoc object
1062*5113495bSYour Name *
1063*5113495bSYour Name * Return: value.
1064*5113495bSYour Name */
1065*5113495bSYour Name bool
1066*5113495bSYour Name ucfg_scan_get_user_config_sched_scan_plan(struct wlan_objmgr_psoc *psoc);
1067*5113495bSYour Name
1068*5113495bSYour Name #ifdef WLAN_POLICY_MGR_ENABLE
1069*5113495bSYour Name /**
1070*5113495bSYour Name * ucfg_scan_update_pno_dwell_time() - update active and passive dwell time
1071*5113495bSYour Name * depending on active concurrency modes
1072*5113495bSYour Name * @vdev: vdev object pointer
1073*5113495bSYour Name * @req: pno scan request parameters
1074*5113495bSYour Name * @scan_def: scan default parameters
1075*5113495bSYour Name *
1076*5113495bSYour Name * Return: void
1077*5113495bSYour Name */
1078*5113495bSYour Name static inline
ucfg_scan_update_pno_dwell_time(struct wlan_objmgr_vdev * vdev,struct pno_scan_req_params * req,struct scan_default_params * scan_def)1079*5113495bSYour Name void ucfg_scan_update_pno_dwell_time(struct wlan_objmgr_vdev *vdev,
1080*5113495bSYour Name struct pno_scan_req_params *req,
1081*5113495bSYour Name struct scan_default_params *scan_def)
1082*5113495bSYour Name {
1083*5113495bSYour Name wlan_scan_update_pno_dwell_time(vdev, req, scan_def);
1084*5113495bSYour Name }
1085*5113495bSYour Name
1086*5113495bSYour Name #else
1087*5113495bSYour Name static inline
ucfg_scan_update_pno_dwell_time(struct wlan_objmgr_vdev * vdev,struct pno_scan_req_params * req,struct scan_default_params * scan_def)1088*5113495bSYour Name void ucfg_scan_update_pno_dwell_time(struct wlan_objmgr_vdev *vdev,
1089*5113495bSYour Name struct pno_scan_req_params *req,
1090*5113495bSYour Name struct scan_default_params *scan_def)
1091*5113495bSYour Name {}
1092*5113495bSYour Name
1093*5113495bSYour Name #endif
1094*5113495bSYour Name
1095*5113495bSYour Name #else
1096*5113495bSYour Name static inline
ucfg_scan_is_pno_offload_enabled(struct wlan_objmgr_psoc * psoc)1097*5113495bSYour Name bool ucfg_scan_is_pno_offload_enabled(struct wlan_objmgr_psoc *psoc)
1098*5113495bSYour Name {
1099*5113495bSYour Name return 0;
1100*5113495bSYour Name }
1101*5113495bSYour Name
1102*5113495bSYour Name static inline
ucfg_scan_set_pno_offload(struct wlan_objmgr_psoc * psoc,bool value)1103*5113495bSYour Name void ucfg_scan_set_pno_offload(struct wlan_objmgr_psoc *psoc, bool value)
1104*5113495bSYour Name {
1105*5113495bSYour Name }
1106*5113495bSYour Name
1107*5113495bSYour Name static inline
ucfg_scan_get_pno_scan_support(struct wlan_objmgr_psoc * psoc)1108*5113495bSYour Name bool ucfg_scan_get_pno_scan_support(struct wlan_objmgr_psoc *psoc)
1109*5113495bSYour Name {
1110*5113495bSYour Name return 0;
1111*5113495bSYour Name }
1112*5113495bSYour Name
1113*5113495bSYour Name static inline
ucfg_get_scan_backoff_multiplier(struct wlan_objmgr_psoc * psoc)1114*5113495bSYour Name uint8_t ucfg_get_scan_backoff_multiplier(struct wlan_objmgr_psoc *psoc)
1115*5113495bSYour Name {
1116*5113495bSYour Name return 0;
1117*5113495bSYour Name }
1118*5113495bSYour Name
1119*5113495bSYour Name static inline
ucfg_scan_is_dfs_chnl_scan_enabled(struct wlan_objmgr_psoc * psoc)1120*5113495bSYour Name bool ucfg_scan_is_dfs_chnl_scan_enabled(struct wlan_objmgr_psoc *psoc)
1121*5113495bSYour Name {
1122*5113495bSYour Name return 0;
1123*5113495bSYour Name }
1124*5113495bSYour Name
1125*5113495bSYour Name static inline
ucfg_scan_get_scan_timer_repeat_value(struct wlan_objmgr_psoc * psoc)1126*5113495bSYour Name uint32_t ucfg_scan_get_scan_timer_repeat_value(struct wlan_objmgr_psoc *psoc)
1127*5113495bSYour Name {
1128*5113495bSYour Name return 0;
1129*5113495bSYour Name }
1130*5113495bSYour Name
1131*5113495bSYour Name static inline
ucfg_scan_get_slow_scan_multiplier(struct wlan_objmgr_psoc * psoc)1132*5113495bSYour Name uint32_t ucfg_scan_get_slow_scan_multiplier(struct wlan_objmgr_psoc *psoc)
1133*5113495bSYour Name {
1134*5113495bSYour Name return 0;
1135*5113495bSYour Name }
1136*5113495bSYour Name
1137*5113495bSYour Name static inline uint32_t
ucfg_scan_get_max_sched_scan_plan_interval(struct wlan_objmgr_psoc * psoc)1138*5113495bSYour Name ucfg_scan_get_max_sched_scan_plan_interval(struct wlan_objmgr_psoc *psoc)
1139*5113495bSYour Name {
1140*5113495bSYour Name return 0;
1141*5113495bSYour Name }
1142*5113495bSYour Name
1143*5113495bSYour Name static inline uint32_t
ucfg_scan_get_max_sched_scan_plan_iterations(struct wlan_objmgr_psoc * psoc)1144*5113495bSYour Name ucfg_scan_get_max_sched_scan_plan_iterations(struct wlan_objmgr_psoc *psoc)
1145*5113495bSYour Name {
1146*5113495bSYour Name return 0;
1147*5113495bSYour Name }
1148*5113495bSYour Name
1149*5113495bSYour Name static inline bool
ucfg_scan_get_user_config_sched_scan_plan(struct wlan_objmgr_psoc * psoc)1150*5113495bSYour Name ucfg_scan_get_user_config_sched_scan_plan(struct wlan_objmgr_psoc *psoc)
1151*5113495bSYour Name {
1152*5113495bSYour Name return true;
1153*5113495bSYour Name }
1154*5113495bSYour Name
1155*5113495bSYour Name #endif /* FEATURE_WLAN_SCAN_PNO */
1156*5113495bSYour Name
1157*5113495bSYour Name /**
1158*5113495bSYour Name * ucfg_scan_is_connected_scan_enabled() - API to get scan enabled after connect
1159*5113495bSYour Name * @psoc: pointer to psoc object
1160*5113495bSYour Name *
1161*5113495bSYour Name * Return: value.
1162*5113495bSYour Name */
1163*5113495bSYour Name bool ucfg_scan_is_connected_scan_enabled(struct wlan_objmgr_psoc *psoc);
1164*5113495bSYour Name
1165*5113495bSYour Name /**
1166*5113495bSYour Name * ucfg_scan_is_snr_monitor_enabled() - API to get SNR monitoring enabled or not
1167*5113495bSYour Name * @psoc: pointer to psoc object
1168*5113495bSYour Name *
1169*5113495bSYour Name * Return: value.
1170*5113495bSYour Name */
1171*5113495bSYour Name static inline
ucfg_scan_is_snr_monitor_enabled(struct wlan_objmgr_psoc * psoc)1172*5113495bSYour Name bool ucfg_scan_is_snr_monitor_enabled(struct wlan_objmgr_psoc *psoc)
1173*5113495bSYour Name {
1174*5113495bSYour Name return wlan_scan_is_snr_monitor_enabled(psoc);
1175*5113495bSYour Name }
1176*5113495bSYour Name #endif
1177