xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: ISC
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2016 Broadcom
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun #ifndef _BRCMF_PNO_H
6*4882a593Smuzhiyun #define _BRCMF_PNO_H
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #define BRCMF_PNO_SCAN_COMPLETE			1
9*4882a593Smuzhiyun #define BRCMF_PNO_MAX_PFN_COUNT			16
10*4882a593Smuzhiyun #define BRCMF_PNO_SCHED_SCAN_MIN_PERIOD	10
11*4882a593Smuzhiyun #define BRCMF_PNO_SCHED_SCAN_MAX_PERIOD	508
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun /* forward declaration */
14*4882a593Smuzhiyun struct brcmf_pno_info;
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /**
17*4882a593Smuzhiyun  * brcmf_pno_start_sched_scan - initiate scheduled scan on device.
18*4882a593Smuzhiyun  *
19*4882a593Smuzhiyun  * @ifp: interface object used.
20*4882a593Smuzhiyun  * @req: configuration parameters for scheduled scan.
21*4882a593Smuzhiyun  */
22*4882a593Smuzhiyun int brcmf_pno_start_sched_scan(struct brcmf_if *ifp,
23*4882a593Smuzhiyun 			       struct cfg80211_sched_scan_request *req);
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun /**
26*4882a593Smuzhiyun  * brcmf_pno_stop_sched_scan - terminate scheduled scan on device.
27*4882a593Smuzhiyun  *
28*4882a593Smuzhiyun  * @ifp: interface object used.
29*4882a593Smuzhiyun  * @reqid: unique identifier of scan to be stopped.
30*4882a593Smuzhiyun  */
31*4882a593Smuzhiyun int brcmf_pno_stop_sched_scan(struct brcmf_if *ifp, u64 reqid);
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun /**
34*4882a593Smuzhiyun  * brcmf_pno_wiphy_params - fill scheduled scan parameters in wiphy instance.
35*4882a593Smuzhiyun  *
36*4882a593Smuzhiyun  * @wiphy: wiphy instance to be used.
37*4882a593Smuzhiyun  * @gscan: indicates whether the device has support for g-scan feature.
38*4882a593Smuzhiyun  */
39*4882a593Smuzhiyun void brcmf_pno_wiphy_params(struct wiphy *wiphy, bool gscan);
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun /**
42*4882a593Smuzhiyun  * brcmf_pno_attach - allocate and attach module information.
43*4882a593Smuzhiyun  *
44*4882a593Smuzhiyun  * @cfg: cfg80211 context used.
45*4882a593Smuzhiyun  */
46*4882a593Smuzhiyun int brcmf_pno_attach(struct brcmf_cfg80211_info *cfg);
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun /**
49*4882a593Smuzhiyun  * brcmf_pno_detach - detach and free module information.
50*4882a593Smuzhiyun  *
51*4882a593Smuzhiyun  * @cfg: cfg80211 context used.
52*4882a593Smuzhiyun  */
53*4882a593Smuzhiyun void brcmf_pno_detach(struct brcmf_cfg80211_info *cfg);
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun /**
56*4882a593Smuzhiyun  * brcmf_pno_find_reqid_by_bucket - find request id for given bucket index.
57*4882a593Smuzhiyun  *
58*4882a593Smuzhiyun  * @pi: pno instance used.
59*4882a593Smuzhiyun  * @bucket: index of firmware bucket.
60*4882a593Smuzhiyun  */
61*4882a593Smuzhiyun u64 brcmf_pno_find_reqid_by_bucket(struct brcmf_pno_info *pi, u32 bucket);
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /**
64*4882a593Smuzhiyun  * brcmf_pno_get_bucket_map - determine bucket map for given netinfo.
65*4882a593Smuzhiyun  *
66*4882a593Smuzhiyun  * @pi: pno instance used.
67*4882a593Smuzhiyun  * @netinfo: netinfo to compare with bucket configuration.
68*4882a593Smuzhiyun  */
69*4882a593Smuzhiyun u32 brcmf_pno_get_bucket_map(struct brcmf_pno_info *pi,
70*4882a593Smuzhiyun 			     struct brcmf_pno_net_info_le *netinfo);
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun #endif /* _BRCMF_PNO_H */
73