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