Lines Matching full:pi
40 static int brcmf_pno_store_request(struct brcmf_pno_info *pi,
43 if (WARN(pi->n_reqs == BRCMF_PNO_MAX_BUCKETS,
48 mutex_lock(&pi->req_lock);
49 pi->reqs[pi->n_reqs++] = req;
50 mutex_unlock(&pi->req_lock);
54 static int brcmf_pno_remove_request(struct brcmf_pno_info *pi, u64 reqid)
58 mutex_lock(&pi->req_lock);
61 if (pi->n_reqs == 0)
65 for (i = 0; i < pi->n_reqs; i++) {
66 if (pi->reqs[i]->reqid == reqid)
70 if (WARN(i == pi->n_reqs, "reqid not found\n")) {
76 pi->n_reqs--;
79 if (!pi->n_reqs || i == pi->n_reqs)
83 while (i <= pi->n_reqs - 1) {
84 pi->reqs[i] = pi->reqs[i + 1];
89 mutex_unlock(&pi->req_lock);
155 static int brcmf_pno_set_random(struct brcmf_if *ifp, struct brcmf_pno_info *pi)
163 for (ri = 0; ri < pi->n_reqs; ri++)
164 if (pi->reqs[ri]->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) {
165 mac_addr = pi->reqs[ri]->mac_addr;
166 mac_mask = pi->reqs[ri]->mac_addr_mask;
188 pi->reqs[ri]->reqid, pfn_mac.mac);
296 static int brcmf_pno_prep_fwconfig(struct brcmf_pno_info *pi,
305 brcmf_dbg(SCAN, "n_reqs=%d\n", pi->n_reqs);
306 if (WARN_ON(!pi->n_reqs))
313 *scan_freq = pi->reqs[0]->scan_plans[0].interval;
314 for (i = 1; i < pi->n_reqs; i++) {
315 sr = pi->reqs[i];
324 fw_buckets = kcalloc(pi->n_reqs, sizeof(*fw_buckets), GFP_KERNEL);
329 for (i = 0; i < pi->n_reqs; i++) {
330 sr = pi->reqs[i];
347 for (i = 0; i < pi->n_reqs; i++) {
356 return pi->n_reqs;
364 struct brcmf_pno_info *pi)
371 for (i = 0; i < pi->n_reqs; i++) {
372 r = pi->reqs[i];
394 struct brcmf_pno_info *pi;
402 pi = ifp_to_pno(ifp);
403 n_buckets = brcmf_pno_prep_fwconfig(pi, &pno_cfg, &buckets,
446 err = brcmf_pno_set_random(ifp, pi);
450 err = brcmf_pno_config_networks(ifp, pi);
470 struct brcmf_pno_info *pi;
475 pi = ifp_to_pno(ifp);
476 ret = brcmf_pno_store_request(pi, req);
482 brcmf_pno_remove_request(pi, req->reqid);
483 if (pi->n_reqs)
492 struct brcmf_pno_info *pi;
497 pi = ifp_to_pno(ifp);
500 if (!pi->n_reqs)
503 err = brcmf_pno_remove_request(pi, reqid);
509 if (pi->n_reqs)
517 struct brcmf_pno_info *pi;
520 pi = kzalloc(sizeof(*pi), GFP_KERNEL);
521 if (!pi)
524 cfg->pno = pi;
525 mutex_init(&pi->req_lock);
531 struct brcmf_pno_info *pi;
534 pi = cfg->pno;
537 WARN_ON(pi->n_reqs);
538 mutex_destroy(&pi->req_lock);
539 kfree(pi);
552 u64 brcmf_pno_find_reqid_by_bucket(struct brcmf_pno_info *pi, u32 bucket)
556 mutex_lock(&pi->req_lock);
558 if (bucket < pi->n_reqs)
559 reqid = pi->reqs[bucket]->reqid;
561 mutex_unlock(&pi->req_lock);
565 u32 brcmf_pno_get_bucket_map(struct brcmf_pno_info *pi,
573 mutex_lock(&pi->req_lock);
574 for (i = 0; i < pi->n_reqs; i++) {
575 req = pi->reqs[i];
593 mutex_unlock(&pi->req_lock);