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