Lines Matching full:out
12 struct cfg80211_pmsr_request_peer *out, in pmsr_parse_ftm() argument
20 if (out->ftm.request_type == NL80211_PMSR_FTM_REQ_TYPE_INFRA && in pmsr_parse_ftm()
21 !(capa->ftm.bandwidths & BIT(out->chandef.width))) { in pmsr_parse_ftm()
26 if (out->ftm.request_type == NL80211_PMSR_FTM_REQ_TYPE_PD && in pmsr_parse_ftm()
27 !(capa->ftm.pd_bandwidths & BIT(out->chandef.width))) { in pmsr_parse_ftm()
41 out->ftm.requested = true; in pmsr_parse_ftm()
43 switch (out->chandef.chan->band) { in pmsr_parse_ftm()
55 if (out->ftm.request_type == NL80211_PMSR_FTM_REQ_TYPE_INFRA && in pmsr_parse_ftm()
63 if (out->ftm.request_type == NL80211_PMSR_FTM_REQ_TYPE_PD && in pmsr_parse_ftm()
71 out->ftm.preamble = preamble; in pmsr_parse_ftm()
73 out->ftm.burst_period = 0; in pmsr_parse_ftm()
75 out->ftm.burst_period = in pmsr_parse_ftm()
78 out->ftm.asap = !!tb[NL80211_PMSR_FTM_REQ_ATTR_ASAP]; in pmsr_parse_ftm()
79 if (out->ftm.asap && !capa->ftm.asap) { in pmsr_parse_ftm()
86 if (!out->ftm.asap && !capa->ftm.non_asap) { in pmsr_parse_ftm()
92 out->ftm.num_bursts_exp = 0; in pmsr_parse_ftm()
94 out->ftm.num_bursts_exp = in pmsr_parse_ftm()
98 out->ftm.num_bursts_exp > capa->ftm.max_bursts_exponent) { in pmsr_parse_ftm()
105 out->ftm.ftms_per_burst = 0; in pmsr_parse_ftm()
107 out->ftm.ftms_per_burst = in pmsr_parse_ftm()
111 out->ftm.ftms_per_burst > capa->ftm.max_ftms_per_burst) { in pmsr_parse_ftm()
118 out->ftm.ftmr_retries = 3; in pmsr_parse_ftm()
120 out->ftm.ftmr_retries = in pmsr_parse_ftm()
123 out->ftm.request_lci = !!tb[NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI]; in pmsr_parse_ftm()
124 if (out->ftm.request_lci && !capa->ftm.request_lci) { in pmsr_parse_ftm()
131 out->ftm.request_civicloc = in pmsr_parse_ftm()
133 if (out->ftm.request_civicloc && !capa->ftm.request_civicloc) { in pmsr_parse_ftm()
140 out->ftm.trigger_based = in pmsr_parse_ftm()
142 if (out->ftm.trigger_based && !capa->ftm.trigger_based) { in pmsr_parse_ftm()
149 if (out->ftm.request_type == NL80211_PMSR_FTM_REQ_TYPE_PD && in pmsr_parse_ftm()
150 out->ftm.trigger_based) { in pmsr_parse_ftm()
157 out->ftm.non_trigger_based = in pmsr_parse_ftm()
159 if (out->ftm.non_trigger_based && !capa->ftm.non_trigger_based) { in pmsr_parse_ftm()
166 if (out->ftm.trigger_based && out->ftm.non_trigger_based) { in pmsr_parse_ftm()
172 if (out->ftm.request_type == NL80211_PMSR_FTM_REQ_TYPE_PD && in pmsr_parse_ftm()
173 out->ftm.non_trigger_based && out->ftm.ftms_per_burst > 4) { in pmsr_parse_ftm()
180 if (out->ftm.ftms_per_burst > 31 && !out->ftm.non_trigger_based && in pmsr_parse_ftm()
181 !out->ftm.trigger_based) { in pmsr_parse_ftm()
188 if ((out->ftm.trigger_based || out->ftm.non_trigger_based) && in pmsr_parse_ftm()
189 out->ftm.preamble != NL80211_PREAMBLE_HE) { in pmsr_parse_ftm()
197 out->ftm.burst_duration = in pmsr_parse_ftm()
199 else if (!out->ftm.non_trigger_based && !out->ftm.trigger_based) in pmsr_parse_ftm()
200 out->ftm.burst_duration = 15; in pmsr_parse_ftm()
202 out->ftm.lmr_feedback = in pmsr_parse_ftm()
204 if (!out->ftm.trigger_based && !out->ftm.non_trigger_based && in pmsr_parse_ftm()
205 out->ftm.lmr_feedback) { in pmsr_parse_ftm()
213 if (!out->ftm.non_trigger_based && !out->ftm.trigger_based) { in pmsr_parse_ftm()
220 out->ftm.bss_color = in pmsr_parse_ftm()
224 out->ftm.rsta = !!tb[NL80211_PMSR_FTM_REQ_ATTR_RSTA]; in pmsr_parse_ftm()
225 if (out->ftm.rsta && out->ftm.non_trigger_based && in pmsr_parse_ftm()
233 if (out->ftm.rsta && out->ftm.trigger_based && in pmsr_parse_ftm()
241 if (out->ftm.rsta && !out->ftm.non_trigger_based && in pmsr_parse_ftm()
242 !out->ftm.trigger_based && in pmsr_parse_ftm()
250 if (out->ftm.rsta && in pmsr_parse_ftm()
251 (out->ftm.non_trigger_based || out->ftm.trigger_based) && in pmsr_parse_ftm()
252 !out->ftm.lmr_feedback) { in pmsr_parse_ftm()
259 if (out->ftm.non_trigger_based) { in pmsr_parse_ftm()
260 if (out->ftm.request_type == NL80211_PMSR_FTM_REQ_TYPE_PD && in pmsr_parse_ftm()
267 out->ftm.nominal_time = in pmsr_parse_ftm()
271 out->ftm.min_time_between_measurements = in pmsr_parse_ftm()
275 out->ftm.max_time_between_measurements = in pmsr_parse_ftm()
279 out->ftm.availability_window = in pmsr_parse_ftm()
283 out->ftm.num_measurements = in pmsr_parse_ftm()
288 out->ftm.ingress_distance = in pmsr_parse_ftm()
292 out->ftm.egress_distance = in pmsr_parse_ftm()
295 out->ftm.pd_suppress_range_results = in pmsr_parse_ftm()
298 if (out->ftm.request_type != NL80211_PMSR_FTM_REQ_TYPE_PD && in pmsr_parse_ftm()
299 out->ftm.pd_suppress_range_results) { in pmsr_parse_ftm()
311 struct cfg80211_pmsr_request_peer *out, in pmsr_parse_peer() argument
332 memcpy(out->addr, nla_data(tb[NL80211_PMSR_PEER_ATTR_ADDR]), ETH_ALEN); in pmsr_parse_peer()
335 out->ftm.request_type = in pmsr_parse_peer()
338 out->ftm.request_type = NL80211_PMSR_FTM_REQ_TYPE_INFRA; in pmsr_parse_peer()
340 if (out->ftm.request_type == NL80211_PMSR_FTM_REQ_TYPE_PD && in pmsr_parse_peer()
356 &out->chandef, false); in pmsr_parse_peer()
373 out->report_ap_tsf = true; in pmsr_parse_peer()
375 if (out->report_ap_tsf && !rdev->wiphy.pmsr_capa->report_ap_tsf) { in pmsr_parse_peer()
393 err = pmsr_parse_ftm(rdev, treq, out, info); in pmsr_parse_peer()