xref: /wlan-driver/qca-wifi-host-cmn/umac/scan/dispatcher/inc/wlan_scan_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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 api
22*5113495bSYour Name  */
23*5113495bSYour Name 
24*5113495bSYour Name #ifndef _WLAN_SCAN_API_H_
25*5113495bSYour Name #define _WLAN_SCAN_API_H_
26*5113495bSYour Name 
27*5113495bSYour Name #include <wlan_objmgr_psoc_obj.h>
28*5113495bSYour Name #include <wlan_objmgr_pdev_obj.h>
29*5113495bSYour Name #include <wlan_objmgr_vdev_obj.h>
30*5113495bSYour Name #include "../../core/src/wlan_scan_main.h"
31*5113495bSYour Name 
32*5113495bSYour Name #ifdef FEATURE_SET
33*5113495bSYour Name /**
34*5113495bSYour Name  * wlan_scan_get_feature_info() - Get scan feature set info
35*5113495bSYour Name  * @psoc: pointer to psoc object
36*5113495bSYour Name  * @scan_feature_set: feature set info which needs to be filled
37*5113495bSYour Name  *
38*5113495bSYour Name  * Return: none
39*5113495bSYour Name  */
40*5113495bSYour Name void wlan_scan_get_feature_info(struct wlan_objmgr_psoc *psoc,
41*5113495bSYour Name 				struct wlan_scan_features *scan_feature_set);
42*5113495bSYour Name #endif
43*5113495bSYour Name 
44*5113495bSYour Name /**
45*5113495bSYour Name  * wlan_scan_get_scan_entry_by_mac_freq() - API to get scan entry
46*5113495bSYour Name  * info from scan db by mac addr
47*5113495bSYour Name  * @pdev: pointer to pdev object
48*5113495bSYour Name  * @bssid: pointer to mac addr
49*5113495bSYour Name  * @freq: frequency for scan filter
50*5113495bSYour Name  *
51*5113495bSYour Name  * Return: scan entry if found, else NULL
52*5113495bSYour Name  */
53*5113495bSYour Name struct scan_cache_entry *
54*5113495bSYour Name wlan_scan_get_scan_entry_by_mac_freq(struct wlan_objmgr_pdev *pdev,
55*5113495bSYour Name 				     struct qdf_mac_addr *bssid,
56*5113495bSYour Name 				     uint16_t freq);
57*5113495bSYour Name 
58*5113495bSYour Name /**
59*5113495bSYour Name  * wlan_scan_cfg_set_active_2g_dwelltime() - API to set scan active 2g dwelltime
60*5113495bSYour Name  * @psoc: pointer to psoc object
61*5113495bSYour Name  * @dwell_time: scan active dwell time
62*5113495bSYour Name  *
63*5113495bSYour Name  * Return: none
64*5113495bSYour Name  */
65*5113495bSYour Name void wlan_scan_cfg_set_active_2g_dwelltime(struct wlan_objmgr_psoc *psoc,
66*5113495bSYour Name 					   uint32_t dwell_time);
67*5113495bSYour Name 
68*5113495bSYour Name /**
69*5113495bSYour Name  * wlan_scan_cfg_get_active_2g_dwelltime() - API to get active 2g dwelltime
70*5113495bSYour Name  * @psoc: pointer to psoc object
71*5113495bSYour Name  * @dwell_time: scan active dwelltime
72*5113495bSYour Name  *
73*5113495bSYour Name  * Return: scan active dwell time
74*5113495bSYour Name  */
75*5113495bSYour Name void wlan_scan_cfg_get_active_2g_dwelltime(struct wlan_objmgr_psoc *psoc,
76*5113495bSYour Name 					   uint32_t *dwell_time);
77*5113495bSYour Name 
78*5113495bSYour Name #ifdef CONFIG_BAND_6GHZ
79*5113495bSYour Name /**
80*5113495bSYour Name  * wlan_scan_cfg_set_active_6g_dwelltime() - API to set scan active 6g dwelltime
81*5113495bSYour Name  * @psoc: pointer to psoc object
82*5113495bSYour Name  * @dwell_time: scan active dwell time
83*5113495bSYour Name  *
84*5113495bSYour Name  * Return: QDF_STATUS
85*5113495bSYour Name  */
86*5113495bSYour Name QDF_STATUS wlan_scan_cfg_set_active_6g_dwelltime(struct wlan_objmgr_psoc *psoc,
87*5113495bSYour Name 						 uint32_t dwell_time);
88*5113495bSYour Name 
89*5113495bSYour Name /**
90*5113495bSYour Name  * wlan_scan_cfg_get_active_6g_dwelltime() - API to get active 6g dwelltime
91*5113495bSYour Name  * @psoc: pointer to psoc object
92*5113495bSYour Name  * @dwell_time: scan active dwelltime
93*5113495bSYour Name  *
94*5113495bSYour Name  * Return: QDF_STATUS
95*5113495bSYour Name  */
96*5113495bSYour Name QDF_STATUS wlan_scan_cfg_get_active_6g_dwelltime(struct wlan_objmgr_psoc *psoc,
97*5113495bSYour Name 						 uint32_t *dwell_time);
98*5113495bSYour Name 
99*5113495bSYour Name /**
100*5113495bSYour Name  * wlan_scan_cfg_set_passive_6g_dwelltime() - API to set scan passive 6g
101*5113495bSYour Name  *                                            dwelltime
102*5113495bSYour Name  * @psoc: pointer to psoc object
103*5113495bSYour Name  * @dwell_time: scan passive dwell time
104*5113495bSYour Name  *
105*5113495bSYour Name  * Return: QDF_STATUS
106*5113495bSYour Name  */
107*5113495bSYour Name QDF_STATUS wlan_scan_cfg_set_passive_6g_dwelltime(struct wlan_objmgr_psoc *psoc,
108*5113495bSYour Name 						  uint32_t dwell_time);
109*5113495bSYour Name 
110*5113495bSYour Name /**
111*5113495bSYour Name  * wlan_scan_cfg_get_passive_6g_dwelltime() - API to get passive 6g dwelltime
112*5113495bSYour Name  * @psoc: pointer to psoc object
113*5113495bSYour Name  * @dwell_time: scan passive dwelltime
114*5113495bSYour Name  *
115*5113495bSYour Name  * Return: QDF_STATUS
116*5113495bSYour Name  */
117*5113495bSYour Name QDF_STATUS wlan_scan_cfg_get_passive_6g_dwelltime(struct wlan_objmgr_psoc *psoc,
118*5113495bSYour Name 						  uint32_t *dwell_time);
119*5113495bSYour Name 
120*5113495bSYour Name /**
121*5113495bSYour Name  * wlan_scan_cfg_get_min_dwelltime_6g() - API to get minimum 6g dwelltime
122*5113495bSYour Name  * @psoc: pointer to psoc object
123*5113495bSYour Name  * @min_dwell_time_6ghz: minimum dwelltime 6g
124*5113495bSYour Name  *
125*5113495bSYour Name  * Return: QDF_STATUS
126*5113495bSYour Name  */
127*5113495bSYour Name void wlan_scan_cfg_get_min_dwelltime_6g(struct wlan_objmgr_psoc *psoc,
128*5113495bSYour Name 					uint32_t *min_dwell_time_6ghz);
129*5113495bSYour Name 
130*5113495bSYour Name /**
131*5113495bSYour Name  * wlan_scan_cfg_set_scan_mode_6g() - API to set scan mode for 6 GHz
132*5113495bSYour Name  * @psoc: pointer to psoc object
133*5113495bSYour Name  * @scan_mode_6g: scan mode value for 6 GHz
134*5113495bSYour Name  *
135*5113495bSYour Name  * Return: QDF_STATUS
136*5113495bSYour Name  */
137*5113495bSYour Name QDF_STATUS wlan_scan_cfg_set_scan_mode_6g(struct wlan_objmgr_psoc *psoc,
138*5113495bSYour Name 					  enum scan_mode_6ghz scan_mode_6g);
139*5113495bSYour Name #else
140*5113495bSYour Name static inline
wlan_scan_cfg_get_min_dwelltime_6g(struct wlan_objmgr_psoc * psoc,uint32_t * min_dwell_time_6ghz)141*5113495bSYour Name void wlan_scan_cfg_get_min_dwelltime_6g(struct wlan_objmgr_psoc *psoc,
142*5113495bSYour Name 					uint32_t *min_dwell_time_6ghz)
143*5113495bSYour Name {
144*5113495bSYour Name }
145*5113495bSYour Name 
146*5113495bSYour Name static inline
wlan_scan_cfg_set_scan_mode_6g(struct wlan_objmgr_psoc * psoc,enum scan_mode_6ghz scan_mode_6g)147*5113495bSYour Name QDF_STATUS wlan_scan_cfg_set_scan_mode_6g(struct wlan_objmgr_psoc *psoc,
148*5113495bSYour Name 					  enum scan_mode_6ghz scan_mode_6g)
149*5113495bSYour Name {
150*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
151*5113495bSYour Name }
152*5113495bSYour Name #endif
153*5113495bSYour Name 
154*5113495bSYour Name /**
155*5113495bSYour Name  * wlan_scan_cfg_set_active_dwelltime() - API to set scan active dwelltime
156*5113495bSYour Name  * @psoc: pointer to psoc object
157*5113495bSYour Name  * @dwell_time: scan active dwell time
158*5113495bSYour Name  *
159*5113495bSYour Name  * Return: none
160*5113495bSYour Name  */
161*5113495bSYour Name void wlan_scan_cfg_set_active_dwelltime(struct wlan_objmgr_psoc *psoc,
162*5113495bSYour Name 					uint32_t dwell_time);
163*5113495bSYour Name /**
164*5113495bSYour Name  * wlan_scan_cfg_get_active_dwelltime() - API to get active dwelltime
165*5113495bSYour Name  * @psoc: pointer to psoc object
166*5113495bSYour Name  * @dwell_time: scan active dwelltime
167*5113495bSYour Name  *
168*5113495bSYour Name  * Return: scan active dwell time
169*5113495bSYour Name  */
170*5113495bSYour Name void wlan_scan_cfg_get_active_dwelltime(struct wlan_objmgr_psoc *psoc,
171*5113495bSYour Name 					uint32_t *dwell_time);
172*5113495bSYour Name 
173*5113495bSYour Name /**
174*5113495bSYour Name  * wlan_scan_cfg_set_passive_dwelltime() - API to set scan passive dwelltime
175*5113495bSYour Name  * @psoc: pointer to psoc object
176*5113495bSYour Name  * @dwell_time: scan passive dwell time
177*5113495bSYour Name  *
178*5113495bSYour Name  * Return: none
179*5113495bSYour Name  */
180*5113495bSYour Name void wlan_scan_cfg_set_passive_dwelltime(struct wlan_objmgr_psoc *psoc,
181*5113495bSYour Name 					 uint32_t dwell_time);
182*5113495bSYour Name /**
183*5113495bSYour Name  * wlan_scan_cfg_get_passive_dwelltime() - API to get passive dwelltime
184*5113495bSYour Name  * @psoc: pointer to psoc object
185*5113495bSYour Name  * @dwell_time: scan passive dwelltime
186*5113495bSYour Name  *
187*5113495bSYour Name  * Return: scan passive dwell time
188*5113495bSYour Name  */
189*5113495bSYour Name void wlan_scan_cfg_get_passive_dwelltime(struct wlan_objmgr_psoc *psoc,
190*5113495bSYour Name 					 uint32_t *dwell_time);
191*5113495bSYour Name 
192*5113495bSYour Name #ifdef WLAN_POLICY_MGR_ENABLE
193*5113495bSYour Name /*
194*5113495bSYour Name  * wlan_scan_update_pno_dwell_time() - update active and passive dwell time
195*5113495bSYour Name  * depending on active concurrency modes
196*5113495bSYour Name  * @vdev: vdev object pointer
197*5113495bSYour Name  * @req: scan request
198*5113495bSYour Name  *
199*5113495bSYour Name  * Return: void
200*5113495bSYour Name  */
201*5113495bSYour Name void wlan_scan_update_pno_dwell_time(struct wlan_objmgr_vdev *vdev,
202*5113495bSYour Name 				     struct pno_scan_req_params *req,
203*5113495bSYour Name 				     struct scan_default_params *scan_def);
204*5113495bSYour Name 
205*5113495bSYour Name /*
206*5113495bSYour Name  * wlan_scan_update_low_latency_profile_chnlist() - Low latency SAP + scan
207*5113495bSYour Name  * concurrencies
208*5113495bSYour Name  * @vdev: vdev object pointer
209*5113495bSYour Name  * @req: scan request
210*5113495bSYour Name  *
211*5113495bSYour Name  * Return: void
212*5113495bSYour Name  */
213*5113495bSYour Name void wlan_scan_update_low_latency_profile_chnlist(
214*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
215*5113495bSYour Name 				struct scan_start_request *req);
216*5113495bSYour Name #else
217*5113495bSYour Name static inline
wlan_scan_update_low_latency_profile_chnlist(struct wlan_objmgr_vdev * vdev,struct scan_start_request * req)218*5113495bSYour Name void wlan_scan_update_low_latency_profile_chnlist(
219*5113495bSYour Name 				struct wlan_objmgr_vdev *vdev,
220*5113495bSYour Name 				struct scan_start_request *req)
221*5113495bSYour Name {
222*5113495bSYour Name }
223*5113495bSYour Name 
224*5113495bSYour Name #endif
225*5113495bSYour Name 
226*5113495bSYour Name /**
227*5113495bSYour Name  * wlan_scan_cfg_get_conc_active_dwelltime() - Get concurrent active dwelltime
228*5113495bSYour Name  * @psoc: pointer to psoc object
229*5113495bSYour Name  * @dwell_time: scan active dwelltime
230*5113495bSYour Name  *
231*5113495bSYour Name  * Return: scan concurrent active dwell time
232*5113495bSYour Name  */
233*5113495bSYour Name void wlan_scan_cfg_get_conc_active_dwelltime(struct wlan_objmgr_psoc *psoc,
234*5113495bSYour Name 					     uint32_t *dwell_time);
235*5113495bSYour Name 
236*5113495bSYour Name /**
237*5113495bSYour Name  * wlan_scan_cfg_set_conc_active_dwelltime() - Set concurrent active dwelltime
238*5113495bSYour Name  * @psoc: pointer to psoc object
239*5113495bSYour Name  * @dwell_time: scan active dwelltime
240*5113495bSYour Name  *
241*5113495bSYour Name  * Return: scan concurrent active dwell time
242*5113495bSYour Name  */
243*5113495bSYour Name void wlan_scan_cfg_set_conc_active_dwelltime(struct wlan_objmgr_psoc *psoc,
244*5113495bSYour Name 					     uint32_t dwell_time);
245*5113495bSYour Name 
246*5113495bSYour Name /**
247*5113495bSYour Name  * wlan_scan_cfg_get_conc_passive_dwelltime() - Get passive concurrent dwelltime
248*5113495bSYour Name  * @psoc: pointer to psoc object
249*5113495bSYour Name  * @dwell_time: scan passive dwelltime
250*5113495bSYour Name  *
251*5113495bSYour Name  * Return: scan concurrent passive dwell time
252*5113495bSYour Name  */
253*5113495bSYour Name void wlan_scan_cfg_get_conc_passive_dwelltime(struct wlan_objmgr_psoc *psoc,
254*5113495bSYour Name 					      uint32_t *dwell_time);
255*5113495bSYour Name 
256*5113495bSYour Name /**
257*5113495bSYour Name  * wlan_scan_cfg_set_conc_passive_dwelltime() - Set passive concurrent dwelltime
258*5113495bSYour Name  * @psoc: pointer to psoc object
259*5113495bSYour Name  * @dwell_time: scan passive dwelltime
260*5113495bSYour Name  *
261*5113495bSYour Name  * Return: scan concurrent passive dwell time
262*5113495bSYour Name  */
263*5113495bSYour Name void wlan_scan_cfg_set_conc_passive_dwelltime(struct wlan_objmgr_psoc *psoc,
264*5113495bSYour Name 					      uint32_t dwell_time);
265*5113495bSYour Name 
266*5113495bSYour Name /**
267*5113495bSYour Name  * wlan_scan_cfg_honour_nl_scan_policy_flags() - API to get nl scan policy
268*5113495bSYour Name  * flags honoured
269*5113495bSYour Name  * @psoc: pointer to psoc object
270*5113495bSYour Name  *
271*5113495bSYour Name  * Return: nl scan policy flags honoured or not
272*5113495bSYour Name  */
273*5113495bSYour Name bool wlan_scan_cfg_honour_nl_scan_policy_flags(struct wlan_objmgr_psoc *psoc);
274*5113495bSYour Name 
275*5113495bSYour Name /**
276*5113495bSYour Name  * wlan_scan_cfg_get_conc_max_resttime() - API to get max rest time
277*5113495bSYour Name  * @psoc: pointer to psoc object
278*5113495bSYour Name  * @rest_time: scan concurrent max resttime
279*5113495bSYour Name  *
280*5113495bSYour Name  * Return: scan concurrent max rest time
281*5113495bSYour Name  */
282*5113495bSYour Name void wlan_scan_cfg_get_conc_max_resttime(struct wlan_objmgr_psoc *psoc,
283*5113495bSYour Name 					 uint32_t *rest_time);
284*5113495bSYour Name 
285*5113495bSYour Name /**
286*5113495bSYour Name  * wlan_scan_cfg_get_dfs_chan_scan_allowed() - API to get dfs scan enabled
287*5113495bSYour Name  * @psoc: pointer to psoc object
288*5113495bSYour Name  * @enable_dfs_scan: DFS scan enabled or not.
289*5113495bSYour Name  *
290*5113495bSYour Name  * Return: None
291*5113495bSYour Name  */
292*5113495bSYour Name void wlan_scan_cfg_get_dfs_chan_scan_allowed(struct wlan_objmgr_psoc *psoc,
293*5113495bSYour Name 					     bool *enable_dfs_scan);
294*5113495bSYour Name 
295*5113495bSYour Name /**
296*5113495bSYour Name  * wlan_scan_cfg_set_dfs_chan_scan_allowed() - API to set dfs scan enabled.
297*5113495bSYour Name  * @psoc: pointer to psoc object
298*5113495bSYour Name  * @enable_dfs_scan: Set dfs scan enabled or not.
299*5113495bSYour Name  *
300*5113495bSYour Name  * Return: None
301*5113495bSYour Name  */
302*5113495bSYour Name void wlan_scan_cfg_set_dfs_chan_scan_allowed(struct wlan_objmgr_psoc *psoc,
303*5113495bSYour Name 					     bool enable_dfs_scan);
304*5113495bSYour Name 
305*5113495bSYour Name /**
306*5113495bSYour Name  * wlan_scan_cfg_get_conc_min_resttime() - API to get concurrent min rest time
307*5113495bSYour Name  * @psoc: pointer to psoc object
308*5113495bSYour Name  * @rest_time: scan concurrent min rest time
309*5113495bSYour Name  *
310*5113495bSYour Name  * Return: scan concurrent min rest time
311*5113495bSYour Name  */
312*5113495bSYour Name void wlan_scan_cfg_get_conc_min_resttime(struct wlan_objmgr_psoc *psoc,
313*5113495bSYour Name 					 uint32_t *rest_time);
314*5113495bSYour Name 
315*5113495bSYour Name /**
316*5113495bSYour Name  * wlan_scan_is_snr_monitor_enabled() - API to get SNR monitoring enabled or not
317*5113495bSYour Name  * @psoc: pointer to psoc object
318*5113495bSYour Name  *
319*5113495bSYour Name  * Return: enable/disable snr monitor mode.
320*5113495bSYour Name  */
321*5113495bSYour Name bool wlan_scan_is_snr_monitor_enabled(struct wlan_objmgr_psoc *psoc);
322*5113495bSYour Name 
323*5113495bSYour Name /**
324*5113495bSYour Name  * wlan_scan_process_bcn_probe_rx_sync() - handle bcn without posting to
325*5113495bSYour Name  * scheduler thread
326*5113495bSYour Name  * @psoc: psoc context
327*5113495bSYour Name  * @buf: frame buf
328*5113495bSYour Name  * @rx_param: rx event params
329*5113495bSYour Name  * @frm_type: frame type
330*5113495bSYour Name  *
331*5113495bSYour Name  * handle bcn without posting to scheduler thread, this should be called
332*5113495bSYour Name  * while caller is already in scheduler thread context
333*5113495bSYour Name  *
334*5113495bSYour Name  * Return: success or error code.
335*5113495bSYour Name  */
336*5113495bSYour Name QDF_STATUS
337*5113495bSYour Name wlan_scan_process_bcn_probe_rx_sync(struct wlan_objmgr_psoc *psoc,
338*5113495bSYour Name 				    qdf_nbuf_t buf,
339*5113495bSYour Name 				    struct mgmt_rx_event_params *rx_param,
340*5113495bSYour Name 				    enum mgmt_frame_type frm_type);
341*5113495bSYour Name 
342*5113495bSYour Name /**
343*5113495bSYour Name  * wlan_scan_get_aging_time  - Get the scan aging time config
344*5113495bSYour Name  * @psoc: psoc context
345*5113495bSYour Name  *
346*5113495bSYour Name  * Return: Scan aging time config
347*5113495bSYour Name  */
348*5113495bSYour Name qdf_time_t wlan_scan_get_aging_time(struct wlan_objmgr_psoc *psoc);
349*5113495bSYour Name 
350*5113495bSYour Name /**
351*5113495bSYour Name  * wlan_scan_set_aging_time  - Set the scan aging time config
352*5113495bSYour Name  * @psoc: psoc context
353*5113495bSYour Name  * @time: scan aging time
354*5113495bSYour Name  *
355*5113495bSYour Name  * Return: success or error code.
356*5113495bSYour Name  */
357*5113495bSYour Name QDF_STATUS wlan_scan_set_aging_time(struct wlan_objmgr_psoc *psoc,
358*5113495bSYour Name 				    qdf_time_t time);
359*5113495bSYour Name 
360*5113495bSYour Name /**
361*5113495bSYour Name  * wlan_scan_purge_results() - purge the scan list
362*5113495bSYour Name  * @scan_list: scan list to be purged
363*5113495bSYour Name  *
364*5113495bSYour Name  * This function purge the temp scan list
365*5113495bSYour Name  *
366*5113495bSYour Name  * Return: QDF_STATUS
367*5113495bSYour Name  */
wlan_scan_purge_results(qdf_list_t * scan_list)368*5113495bSYour Name static inline QDF_STATUS wlan_scan_purge_results(qdf_list_t *scan_list)
369*5113495bSYour Name {
370*5113495bSYour Name 	return scm_purge_scan_results(scan_list);
371*5113495bSYour Name }
372*5113495bSYour Name 
373*5113495bSYour Name /**
374*5113495bSYour Name  * wlan_scan_get_result() - The Public API to get scan results
375*5113495bSYour Name  * @pdev: pdev info
376*5113495bSYour Name  * @filter: Filters
377*5113495bSYour Name  *
378*5113495bSYour Name  * This function fetches scan result
379*5113495bSYour Name  *
380*5113495bSYour Name  * Return: scan list pointer
381*5113495bSYour Name  */
wlan_scan_get_result(struct wlan_objmgr_pdev * pdev,struct scan_filter * filter)382*5113495bSYour Name static inline qdf_list_t *wlan_scan_get_result(struct wlan_objmgr_pdev *pdev,
383*5113495bSYour Name 					       struct scan_filter *filter)
384*5113495bSYour Name {
385*5113495bSYour Name 	return scm_get_scan_result(pdev, filter);
386*5113495bSYour Name }
387*5113495bSYour Name 
388*5113495bSYour Name /**
389*5113495bSYour Name  * wlan_scan_update_mlme_by_bssinfo() - The Public API to update mlme
390*5113495bSYour Name  * info in the scan entry
391*5113495bSYour Name  * @pdev: pdev object
392*5113495bSYour Name  * @bss_info: bssid info to find the matching scan entry
393*5113495bSYour Name  * @mlme_info: mlme info to be updated.
394*5113495bSYour Name  *
395*5113495bSYour Name  * Return: QDF_STATUS
396*5113495bSYour Name  */
397*5113495bSYour Name static inline QDF_STATUS
wlan_scan_update_mlme_by_bssinfo(struct wlan_objmgr_pdev * pdev,struct bss_info * bss_info,struct mlme_info * mlme_info)398*5113495bSYour Name wlan_scan_update_mlme_by_bssinfo(struct wlan_objmgr_pdev *pdev,
399*5113495bSYour Name 				 struct bss_info *bss_info,
400*5113495bSYour Name 				 struct mlme_info *mlme_info)
401*5113495bSYour Name {
402*5113495bSYour Name 	return scm_scan_update_mlme_by_bssinfo(pdev, bss_info, mlme_info);
403*5113495bSYour Name }
404*5113495bSYour Name 
405*5113495bSYour Name /**
406*5113495bSYour Name  * wlan_scan_start() - Public API to start a scan
407*5113495bSYour Name  * @req: start scan req params
408*5113495bSYour Name  *
409*5113495bSYour Name  * The Public API to start a scan. Post a msg to target_if queue
410*5113495bSYour Name  *
411*5113495bSYour Name  * Return: QDF_STATUS.
412*5113495bSYour Name  */
413*5113495bSYour Name QDF_STATUS wlan_scan_start(struct scan_start_request *req);
414*5113495bSYour Name 
415*5113495bSYour Name /**
416*5113495bSYour Name  * wlan_scan_cancel() - Public API to stop a scan
417*5113495bSYour Name  * @req: stop scan request params
418*5113495bSYour Name  *
419*5113495bSYour Name  * The Public API to stop a scan. Post a msg to target_if queue
420*5113495bSYour Name  *
421*5113495bSYour Name  * Return: QDF_STATUS.
422*5113495bSYour Name  */
423*5113495bSYour Name QDF_STATUS wlan_scan_cancel(struct scan_cancel_request *req);
424*5113495bSYour Name 
425*5113495bSYour Name /**
426*5113495bSYour Name  * wlan_scan_get_scan_id() - Public API to allocate scan ID
427*5113495bSYour Name  * @psoc: psoc object
428*5113495bSYour Name  *
429*5113495bSYour Name  * Public API, allocates a new scan id for caller
430*5113495bSYour Name  *
431*5113495bSYour Name  * Return: newly allocated scan ID
432*5113495bSYour Name  */
433*5113495bSYour Name wlan_scan_id
434*5113495bSYour Name wlan_scan_get_scan_id(struct wlan_objmgr_psoc *psoc);
435*5113495bSYour Name 
436*5113495bSYour Name /**
437*5113495bSYour Name  * wlan_scan_init_default_params() - Public API to initialize scan params
438*5113495bSYour Name  * @vdev: vdev object
439*5113495bSYour Name  * @req: scan request object
440*5113495bSYour Name  *
441*5113495bSYour Name  * Public API to initialize scan start request with defaults scan params
442*5113495bSYour Name  *
443*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS or error code
444*5113495bSYour Name  */
445*5113495bSYour Name QDF_STATUS
446*5113495bSYour Name wlan_scan_init_default_params(struct wlan_objmgr_vdev *vdev,
447*5113495bSYour Name 			      struct scan_start_request *req);
448*5113495bSYour Name 
449*5113495bSYour Name /**
450*5113495bSYour Name  * wlan_scan_register_requester() - Public API, assigns requester ID
451*5113495bSYour Name  * to caller and registers scan event call back handler
452*5113495bSYour Name  * @psoc:       psoc object
453*5113495bSYour Name  * @module_name:name of requester module
454*5113495bSYour Name  * @event_cb:   event callback function pointer
455*5113495bSYour Name  * @arg:        argument to @event_cb
456*5113495bSYour Name  *
457*5113495bSYour Name  * API, allows other components to allocate requester id.
458*5113495bSYour Name  * Normally used by modules at init time to register their callback
459*5113495bSYour Name  * and get one requester id. @event_cb will be invoked for
460*5113495bSYour Name  * all scan events whose requester id matches with @requester.
461*5113495bSYour Name  *
462*5113495bSYour Name  * Return: assigned non zero requester id for success
463*5113495bSYour Name  *         zero (0) for failure
464*5113495bSYour Name  */
465*5113495bSYour Name wlan_scan_requester
466*5113495bSYour Name wlan_scan_register_requester(struct wlan_objmgr_psoc *psoc,
467*5113495bSYour Name 			     uint8_t *module_name,
468*5113495bSYour Name 			     scan_event_handler event_cb,
469*5113495bSYour Name 			     void *arg);
470*5113495bSYour Name 
471*5113495bSYour Name /**
472*5113495bSYour Name  * wlan_scan_unregister_requester() -Public API, reclaims previously
473*5113495bSYour Name  * allocated requester ID
474*5113495bSYour Name  * @psoc:       psoc object
475*5113495bSYour Name  * @requester:  requester ID to reclaim.
476*5113495bSYour Name  *
477*5113495bSYour Name  * API, reclaims previously allocated requester id.
478*5113495bSYour Name  *
479*5113495bSYour Name  * Return: void
480*5113495bSYour Name  */
481*5113495bSYour Name void
482*5113495bSYour Name wlan_scan_unregister_requester(struct wlan_objmgr_psoc *psoc,
483*5113495bSYour Name 			       wlan_scan_requester requester);
484*5113495bSYour Name 
485*5113495bSYour Name /**
486*5113495bSYour Name  * wlan_scan_cfg_skip_6g_and_indoor_freq() - API to get 6g and indoor freq
487*5113495bSYour Name  * scan ini val
488*5113495bSYour Name  * @psoc: psoc object
489*5113495bSYour Name  *
490*5113495bSYour Name  * Return: skip 6g and indoor freq scan or not
491*5113495bSYour Name  */
492*5113495bSYour Name bool wlan_scan_cfg_skip_6g_and_indoor_freq(
493*5113495bSYour Name 			struct wlan_objmgr_psoc *psoc);
494*5113495bSYour Name 
495*5113495bSYour Name /**
496*5113495bSYour Name  * wlan_scan_register_mbssid_cb() - register api to inform bcn/probe rsp
497*5113495bSYour Name  * @psoc: psoc object
498*5113495bSYour Name  * @cb: callback to be registered
499*5113495bSYour Name  *
500*5113495bSYour Name  * Return: QDF_STATUS
501*5113495bSYour Name  */
502*5113495bSYour Name QDF_STATUS wlan_scan_register_mbssid_cb(struct wlan_objmgr_psoc *psoc,
503*5113495bSYour Name 					update_mbssid_bcn_prb_rsp cb);
504*5113495bSYour Name 
505*5113495bSYour Name /**
506*5113495bSYour Name  * wlan_scan_get_entry_by_mac_addr() - Get bcn/probe rsp from scan db
507*5113495bSYour Name  * @pdev: pdev info
508*5113495bSYour Name  * @bssid: BSSID of the bcn/probe response to be fetched from scan db
509*5113495bSYour Name  * @frame: Frame from scan db with given bssid.
510*5113495bSYour Name  *
511*5113495bSYour Name  * This is a wrapper to fetch the bcn/probe rsp frame with given mac address
512*5113495bSYour Name  * through scm_scan_get_entry_by_mac_addr(). scm_scan_get_entry_by_mac_add()
513*5113495bSYour Name  * allocates memory for the frame and it's caller responsibility to free
514*5113495bSYour Name  * the memory once it's done with the usage i.e. frame->ptr.
515*5113495bSYour Name  *
516*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if scan entry is present in db
517*5113495bSYour Name  */
518*5113495bSYour Name QDF_STATUS
519*5113495bSYour Name wlan_scan_get_entry_by_mac_addr(struct wlan_objmgr_pdev *pdev,
520*5113495bSYour Name 				struct qdf_mac_addr *bssid,
521*5113495bSYour Name 				struct element_info *frame);
522*5113495bSYour Name 
523*5113495bSYour Name /**
524*5113495bSYour Name  * wlan_scan_get_last_scan_ageout_time() - API to get last scan
525*5113495bSYour Name  * ageout time
526*5113495bSYour Name  * @psoc: psoc object
527*5113495bSYour Name  * @last_scan_ageout_time: last scan ageout time
528*5113495bSYour Name  *
529*5113495bSYour Name  * Return: void
530*5113495bSYour Name  */
531*5113495bSYour Name void
532*5113495bSYour Name wlan_scan_get_last_scan_ageout_time(struct wlan_objmgr_psoc *psoc,
533*5113495bSYour Name 				    uint32_t *last_scan_ageout_time);
534*5113495bSYour Name /**
535*5113495bSYour Name  * wlan_scan_get_entry_by_bssid() - function to get scan entry by bssid
536*5113495bSYour Name  * @pdev: pdev object
537*5113495bSYour Name  * @bssid: bssid to be fetched from scan db
538*5113495bSYour Name  *
539*5113495bSYour Name  * Return : scan entry if found, else NULL
540*5113495bSYour Name  */
541*5113495bSYour Name struct scan_cache_entry *
542*5113495bSYour Name wlan_scan_get_entry_by_bssid(struct wlan_objmgr_pdev *pdev,
543*5113495bSYour Name 			     struct qdf_mac_addr *bssid);
544*5113495bSYour Name 
545*5113495bSYour Name /**
546*5113495bSYour Name  * wlan_scan_get_mld_addr_by_link_addr() - Function to get MLD address
547*5113495bSYour Name  * in the scan entry from the link BSSID.
548*5113495bSYour Name  * @pdev: pdev object
549*5113495bSYour Name  * @link_addr: Link BSSID to match the scan filter
550*5113495bSYour Name  * @mld_mac_addr: Pointer to fill the MLD address.
551*5113495bSYour Name  *
552*5113495bSYour Name  * A wrapper API which fills @mld_mac_addr with MLD address of scan entry
553*5113495bSYour Name  * whose bssid field matches @link_addr.
554*5113495bSYour Name  *
555*5113495bSYour Name  * Return: QDF_STATUS
556*5113495bSYour Name  */
557*5113495bSYour Name QDF_STATUS
558*5113495bSYour Name wlan_scan_get_mld_addr_by_link_addr(struct wlan_objmgr_pdev *pdev,
559*5113495bSYour Name 				    struct qdf_mac_addr *link_addr,
560*5113495bSYour Name 				    struct qdf_mac_addr *mld_mac_addr);
561*5113495bSYour Name 
562*5113495bSYour Name /**
563*5113495bSYour Name  * wlan_scan_get_aux_support() - get aux scan policy
564*5113495bSYour Name  * @psoc: psoc object
565*5113495bSYour Name  *
566*5113495bSYour Name  * Set aux scan bits in scan_ctrl_ext_flag value depending on scan type.
567*5113495bSYour Name  *
568*5113495bSYour Name  * Return: true/false
569*5113495bSYour Name  */
570*5113495bSYour Name bool wlan_scan_get_aux_support(struct wlan_objmgr_psoc *psoc);
571*5113495bSYour Name 
572*5113495bSYour Name static inline bool
wlan_scan_entries_contain_cmn_akm(struct scan_cache_entry * entry1,struct scan_cache_entry * entry2)573*5113495bSYour Name wlan_scan_entries_contain_cmn_akm(struct scan_cache_entry *entry1,
574*5113495bSYour Name 				  struct scan_cache_entry *entry2)
575*5113495bSYour Name {
576*5113495bSYour Name 	return scm_scan_entries_contain_cmn_akm(entry1, entry2);
577*5113495bSYour Name }
578*5113495bSYour Name #endif
579