Lines Matching refs:data

186 	    elem->data[0] == WLAN_EID_EXT_EHT_MULTI_LINK)  in cfg80211_is_element_inherited()
199 id_len = non_inherit_elem->data[1]; in cfg80211_is_element_inherited()
203 ext_id_len = non_inherit_elem->data[2 + id_len]; in cfg80211_is_element_inherited()
211 list = &non_inherit_elem->data[3 + id_len]; in cfg80211_is_element_inherited()
212 id = elem->data[0]; in cfg80211_is_element_inherited()
217 list = &non_inherit_elem->data[2]; in cfg80211_is_element_inherited()
234 if (WARN_ON((u8 *)elem < ie || elem->data > ie + ie_len || in cfg80211_copy_elem_with_frags()
235 elem->data + elem->datalen > ie + ie_len)) in cfg80211_copy_elem_with_frags()
248 ie_len = ie + ie_len - elem->data - elem->datalen; in cfg80211_copy_elem_with_frags()
249 ie = (const u8 *)elem->data + elem->datalen; in cfg80211_copy_elem_with_frags()
303 ext_id = parent->data[0]; in cfg80211_gen_new_ie()
330 parent->data[0] == WLAN_EID_EXT_EHT_MULTI_LINK && in cfg80211_gen_new_ie()
331 bssid_index == ieee80211_mle_get_mld_id(parent->data + 1)) { in cfg80211_gen_new_ie()
358 sub->data + sub->datalen, in cfg80211_gen_new_ie()
360 (sub->data + in cfg80211_gen_new_ie()
382 ext_id = sub->data[0]; in cfg80211_gen_new_ie()
421 ssid_elem = cfg80211_find_elem(WLAN_EID_SSID, ies->data, ies->len); in is_bss()
426 return memcmp(ssid_elem->data, ssid, ssid_len) == 0; in is_bss()
445 if (is_bss(bss, nontrans_bss->bssid, ssid_elem->data, in cfg80211_add_nontrans_list()
524 static u8 cfg80211_parse_bss_param(u8 data, in cfg80211_parse_bss_param() argument
528 u8_get_bits(data, IEEE80211_RNR_TBTT_PARAMS_OCT_RECOMMENDED); in cfg80211_parse_bss_param()
530 u8_get_bits(data, IEEE80211_RNR_TBTT_PARAMS_SAME_SSID); in cfg80211_parse_bss_param()
532 u8_get_bits(data, IEEE80211_RNR_TBTT_PARAMS_MULTI_BSSID); in cfg80211_parse_bss_param()
534 u8_get_bits(data, IEEE80211_RNR_TBTT_PARAMS_TRANSMITTED_BSSID); in cfg80211_parse_bss_param()
536 u8_get_bits(data, IEEE80211_RNR_TBTT_PARAMS_PROBE_ACTIVE); in cfg80211_parse_bss_param()
538 u8_get_bits(data, IEEE80211_RNR_TBTT_PARAMS_COLOC_ESS); in cfg80211_parse_bss_param()
540 return u8_get_bits(data, IEEE80211_RNR_TBTT_PARAMS_COLOC_AP); in cfg80211_parse_bss_param()
547 *elem = cfg80211_find_elem(WLAN_EID_SSID, ies->data, ies->len); in cfg80211_calc_short_ssid()
551 *s_ssid = ~crc32_le(~0, (*elem)->data, (*elem)->datalen); in cfg80211_calc_short_ssid()
632 memcpy(&entry->ssid, &ssid_elem->data, ssid_elem->datalen); in cfg80211_parse_ap_info()
641 (*iter)(void *data, u8 type, in cfg80211_iter_rnr()
653 pos = rnr->data; in cfg80211_iter_rnr()
654 end = rnr->data + rnr->datalen; in cfg80211_iter_rnr()
710 struct colocated_ap_data *data = _data; in cfg80211_parse_colocated_ap_iter() local
740 data->ssid_elem, data->s_ssid_tmp)) { in cfg80211_parse_colocated_ap_iter()
744 list_for_each_entry(tmp, &data->ap_list, list) { in cfg80211_parse_colocated_ap_iter()
752 data->n_coloc++; in cfg80211_parse_colocated_ap_iter()
753 list_add_tail(&entry->list, &data->ap_list); in cfg80211_parse_colocated_ap_iter()
765 struct colocated_ap_data data = {}; in cfg80211_parse_colocated_ap() local
768 INIT_LIST_HEAD(&data.ap_list); in cfg80211_parse_colocated_ap()
770 ret = cfg80211_calc_short_ssid(ies, &data.ssid_elem, &data.s_ssid_tmp); in cfg80211_parse_colocated_ap()
774 if (!cfg80211_iter_rnr(ies->data, ies->len, in cfg80211_parse_colocated_ap()
775 cfg80211_parse_colocated_ap_iter, &data)) { in cfg80211_parse_colocated_ap()
776 cfg80211_free_coloc_ap_list(&data.ap_list); in cfg80211_parse_colocated_ap()
780 list_splice_tail(&data.ap_list, list); in cfg80211_parse_colocated_ap()
781 return data.n_coloc; in cfg80211_parse_colocated_ap()
904 memcpy(entry->ssid, ssid_elem->data, in cfg80211_scan_6ghz()
1411 !memcmp(elem->data + match_offset, match, match_len)) in cfg80211_find_elem_match()
1474 a_ies->data, a_ies->len); in cmp_bss()
1477 b_ies->data, b_ies->len); in cmp_bss()
1487 a_ies->data, a_ies->len); in cmp_bss()
1489 b_ies->data, b_ies->len); in cmp_bss()
1503 ie1 = cfg80211_find_ie(WLAN_EID_SSID, a_ies->data, a_ies->len); in cmp_bss()
1504 ie2 = cfg80211_find_ie(WLAN_EID_SSID, b_ies->data, b_ies->len); in cmp_bss()
1748 ie = cfg80211_find_ie(WLAN_EID_SSID, ies->data, ies->len); in cfg80211_combine_bsses()
1781 ie = cfg80211_find_ie(WLAN_EID_SSID, ies->data, ies->len); in cfg80211_combine_bsses()
1842 old->data, old->len); in cfg80211_check_stuck_ecsa()
1847 new->data, new->len); in cfg80211_check_stuck_ecsa()
1855 bcn->data, bcn->len)) in cfg80211_check_stuck_ecsa()
1862 if (memcmp(elem_new->data, elem_old->data, elem_new->datalen)) in cfg80211_check_stuck_ecsa()
1865 ecsa = (void *)elem_new->data; in cfg80211_check_stuck_ecsa()
2092 tmp->datalen >= ieee80211_he_oper_size(&tmp->data[1])) { in cfg80211_get_ies_channel_number()
2095 he_oper = (void *)&tmp->data[1]; in cfg80211_get_ies_channel_number()
2106 struct ieee80211_s1g_oper_ie *s1gop = (void *)tmp->data; in cfg80211_get_ies_channel_number()
2113 return tmp->data[0]; in cfg80211_get_ies_channel_number()
2118 struct ieee80211_ht_operation *htop = (void *)tmp->data; in cfg80211_get_ies_channel_number()
2218 tmp->datalen < ieee80211_he_oper_size(tmp->data + 1)) in cfg80211_get_6ghz_power_type()
2221 he_oper = (void *)&tmp->data[1]; in cfg80211_get_6ghz_power_type()
2261 struct cfg80211_inform_single_bss_data *data, in cfg80211_inform_single_bss_data() argument
2265 struct cfg80211_inform_bss *drv_data = data->drv_data; in cfg80211_inform_single_bss_data()
2280 if (WARN_ON(data->bss_source != BSS_SOURCE_DIRECT && !data->source_bss)) in cfg80211_inform_single_bss_data()
2283 channel = data->channel; in cfg80211_inform_single_bss_data()
2285 channel = cfg80211_get_bss_channel(wiphy, data->ie, data->ielen, in cfg80211_inform_single_bss_data()
2291 !cfg80211_6ghz_power_type_valid(data->ie, data->ielen, in cfg80211_inform_single_bss_data()
2293 data->use_for = 0; in cfg80211_inform_single_bss_data()
2294 data->cannot_use_reasons = in cfg80211_inform_single_bss_data()
2298 memcpy(tmp.pub.bssid, data->bssid, ETH_ALEN); in cfg80211_inform_single_bss_data()
2300 if (data->bss_source != BSS_SOURCE_STA_PROFILE) in cfg80211_inform_single_bss_data()
2304 tmp.pub.beacon_interval = data->beacon_interval; in cfg80211_inform_single_bss_data()
2305 tmp.pub.capability = data->capability; in cfg80211_inform_single_bss_data()
2312 tmp.pub.use_for = data->use_for; in cfg80211_inform_single_bss_data()
2313 tmp.pub.cannot_use_reasons = data->cannot_use_reasons; in cfg80211_inform_single_bss_data()
2314 tmp.bss_source = data->bss_source; in cfg80211_inform_single_bss_data()
2316 switch (data->bss_source) { in cfg80211_inform_single_bss_data()
2318 tmp.pub.transmitted_bss = data->source_bss; in cfg80211_inform_single_bss_data()
2321 ts = bss_from_pub(data->source_bss)->ts; in cfg80211_inform_single_bss_data()
2322 tmp.pub.bssid_index = data->bssid_index; in cfg80211_inform_single_bss_data()
2323 tmp.pub.max_bssid_indicator = data->max_bssid_indicator; in cfg80211_inform_single_bss_data()
2329 bss_type = data->capability & in cfg80211_inform_single_bss_data()
2336 if (data->capability & WLAN_CAPABILITY_ESS) in cfg80211_inform_single_bss_data()
2351 ies = kzalloc(sizeof(*ies) + data->ielen, gfp); in cfg80211_inform_single_bss_data()
2354 ies->len = data->ielen; in cfg80211_inform_single_bss_data()
2355 ies->tsf = data->tsf; in cfg80211_inform_single_bss_data()
2357 memcpy(ies->data, data->ie, data->ielen); in cfg80211_inform_single_bss_data()
2359 switch (data->ftype) { in cfg80211_inform_single_bss_data()
2381 if (data->bss_source == BSS_SOURCE_MBSSID) { in cfg80211_inform_single_bss_data()
2385 if (cfg80211_add_nontrans_list(data->source_bss, &res->pub)) { in cfg80211_inform_single_bss_data()
2411 const u8 *mbssid_end = mbssid_elem->data + mbssid_elem->datalen; in cfg80211_get_profile_continuation()
2423 if ((sub_elem->data + sub_elem->datalen < mbssid_end - 1) || in cfg80211_get_profile_continuation()
2432 next_sub = (void *)&next_mbssid->data[1]; in cfg80211_get_profile_continuation()
2434 if (next_mbssid->data + next_mbssid->datalen < in cfg80211_get_profile_continuation()
2435 next_sub->data + next_sub->datalen) in cfg80211_get_profile_continuation()
2445 return next_sub->data[0] == WLAN_EID_NON_TX_BSSID_CAP ? in cfg80211_get_profile_continuation()
2460 memcpy(merged_ie, sub_elem->data, sub_elem->datalen); in cfg80211_merge_profile()
2465 const struct element *next_sub = (void *)&next_mbssid->data[1]; in cfg80211_merge_profile()
2469 memcpy(merged_ie + copied_len, next_sub->data, in cfg80211_merge_profile()
2484 struct cfg80211_inform_single_bss_data data = { in cfg80211_parse_mbssid_data() local
2524 if (elem->data[0] < 1 || (int)elem->data[0] > 8) in cfg80211_parse_mbssid_data()
2526 for_each_element(sub, elem->data + 1, elem->datalen - 1) { in cfg80211_parse_mbssid_data()
2534 if (sub->data[0] != WLAN_EID_NON_TX_BSSID_CAP || in cfg80211_parse_mbssid_data()
2535 sub->data[1] != 2) { in cfg80211_parse_mbssid_data()
2558 mbssid_index_ie[2] >= (1 << elem->data[0])) { in cfg80211_parse_mbssid_data()
2570 data.bssid_index = mbssid_index_ie[2]; in cfg80211_parse_mbssid_data()
2571 data.max_bssid_indicator = elem->data[0]; in cfg80211_parse_mbssid_data()
2574 data.max_bssid_indicator, in cfg80211_parse_mbssid_data()
2575 data.bssid_index, in cfg80211_parse_mbssid_data()
2576 data.bssid); in cfg80211_parse_mbssid_data()
2579 data.ie = new_ie; in cfg80211_parse_mbssid_data()
2580 data.ielen = cfg80211_gen_new_ie(tx_data->ie, in cfg80211_parse_mbssid_data()
2586 if (!data.ielen) in cfg80211_parse_mbssid_data()
2589 data.capability = get_unaligned_le16(profile + 2); in cfg80211_parse_mbssid_data()
2590 bss = cfg80211_inform_single_bss_data(wiphy, &data, gfp); in cfg80211_parse_mbssid_data()
2603 size_t ieslen, u8 *data, size_t data_len, in cfg80211_defragment_element() argument
2614 next = (void *)(elem->data + elem->datalen); in cfg80211_defragment_element()
2620 if (data) { in cfg80211_defragment_element()
2624 memmove(data, elem->data + 1, copied); in cfg80211_defragment_element()
2629 if (data) { in cfg80211_defragment_element()
2633 memmove(data, elem->data, copied); in cfg80211_defragment_element()
2642 elem->data < ies + ieslen && in cfg80211_defragment_element()
2643 elem->data + elem->datalen <= ies + ieslen; in cfg80211_defragment_element()
2646 next = (void *)(elem->data + elem->datalen); in cfg80211_defragment_element()
2653 if (data) { in cfg80211_defragment_element()
2657 memmove(data + copied, elem->data, elem_datalen); in cfg80211_defragment_element()
2677 u8 data[]; member
2690 if (!mle || !ieee80211_mle_size_ok(mle->data + 1, mle->datalen - 1)) in cfg80211_defrag_mle()
2695 for_each_element(elem, mle->data + mle->datalen, in cfg80211_defrag_mle()
2696 ie + ielen - mle->data - mle->datalen) { in cfg80211_defrag_mle()
2703 res = kzalloc(struct_size(res, data, buf_len), gfp); in cfg80211_defrag_mle()
2708 res->data, buf_len, in cfg80211_defrag_mle()
2713 res->mle = (void *)res->data; in cfg80211_defrag_mle()
2717 ie = res->data + common_size; in cfg80211_defrag_mle()
2723 res->sta_prof[idx] = (void *)elem->data; in cfg80211_defrag_mle()
2779 struct tbtt_info_iter_data *data = _data; in cfg802121_mld_ap_rnr_iter() local
2803 if (data->mld_id != mld_params->mld_id) in cfg802121_mld_ap_rnr_iter()
2806 if (data->link_id != link_id) in cfg802121_mld_ap_rnr_iter()
2809 data->ap_info = info; in cfg802121_mld_ap_rnr_iter()
2810 data->param_ch_count = in cfg802121_mld_ap_rnr_iter()
2813 data->non_tx = non_tx; in cfg802121_mld_ap_rnr_iter()
2816 data->use_for = NL80211_BSS_USE_FOR_ALL; in cfg802121_mld_ap_rnr_iter()
2818 data->use_for = NL80211_BSS_USE_FOR_MLD_LINK; in cfg802121_mld_ap_rnr_iter()
2827 struct tbtt_info_iter_data data = { in cfg80211_rnr_info_for_mld_ap() local
2832 cfg80211_iter_rnr(ie, ielen, cfg802121_mld_ap_rnr_iter, &data); in cfg80211_rnr_info_for_mld_ap()
2834 *ap_info = data.ap_info; in cfg80211_rnr_info_for_mld_ap()
2835 *param_ch_count = data.param_ch_count; in cfg80211_rnr_info_for_mld_ap()
2836 *non_tx = data.non_tx; in cfg80211_rnr_info_for_mld_ap()
2838 return data.use_for; in cfg80211_rnr_info_for_mld_ap()
2875 ies->data, ies->len); in cfg80211_gen_reporter_rnr()
2877 ap_info.op_class = elem->data[0]; in cfg80211_gen_reporter_rnr()
2919 res = kzalloc(struct_size(res, data, in cfg80211_gen_reporter_rnr()
2928 memcpy(res->data, &ap_info, sizeof(ap_info)); in cfg80211_gen_reporter_rnr()
2929 memcpy(res->data + sizeof(ap_info), &tbtt_info, ap_info.tbtt_info_len); in cfg80211_gen_reporter_rnr()
2945 struct cfg80211_inform_single_bss_data data = { in cfg80211_parse_ml_elem_sta_data() local
2965 if (!ieee80211_mle_type_ok(elem->data + 1, in cfg80211_parse_ml_elem_sta_data()
2970 ml_elem = (void *)(elem->data + 1); in cfg80211_parse_ml_elem_sta_data()
2980 reporter_link_id = ieee80211_mle_get_link_id(elem->data + 1); in cfg80211_parse_ml_elem_sta_data()
2981 bss_change_count = ieee80211_mle_get_bss_param_ch_cnt(elem->data + 1); in cfg80211_parse_ml_elem_sta_data()
2989 mld_id = ieee80211_mle_get_mld_id(elem->data + 1); in cfg80211_parse_ml_elem_sta_data()
3014 ssid = ssid_elem->data; in cfg80211_parse_ml_elem_sta_data()
3048 memcpy(data.bssid, mle->sta_prof[i]->variable, ETH_ALEN); in cfg80211_parse_ml_elem_sta_data()
3049 data.beacon_interval = in cfg80211_parse_ml_elem_sta_data()
3051 data.tsf = tx_data->tsf + in cfg80211_parse_ml_elem_sta_data()
3063 data.capability = get_unaligned_le16(profile); in cfg80211_parse_ml_elem_sta_data()
3097 data.channel = ieee80211_get_channel_khz(wiphy, freq); in cfg80211_parse_ml_elem_sta_data()
3100 if (!data.channel) in cfg80211_parse_ml_elem_sta_data()
3106 bss = cfg80211_get_bss(wiphy, data.channel, data.bssid, ssid, in cfg80211_parse_ml_elem_sta_data()
3112 if (data.capability == bss->capability && in cfg80211_parse_ml_elem_sta_data()
3123 data.cannot_use_reasons = in cfg80211_parse_ml_elem_sta_data()
3126 data.use_for = use_for; in cfg80211_parse_ml_elem_sta_data()
3130 data.ie = new_ie; in cfg80211_parse_ml_elem_sta_data()
3131 data.ielen = cfg80211_gen_new_ie(tx_data->ie, tx_data->ielen, in cfg80211_parse_ml_elem_sta_data()
3135 if (!data.ielen) in cfg80211_parse_ml_elem_sta_data()
3145 if (data.ielen + 3 + sizeof(*ml_elem) + ml_common_len > in cfg80211_parse_ml_elem_sta_data()
3155 new_ie[data.ielen++] = WLAN_EID_EXTENSION; in cfg80211_parse_ml_elem_sta_data()
3156 new_ie[data.ielen++] = 1 + sizeof(*ml_elem) + ml_common_len; in cfg80211_parse_ml_elem_sta_data()
3157 new_ie[data.ielen++] = WLAN_EID_EXT_EHT_MULTI_LINK; in cfg80211_parse_ml_elem_sta_data()
3158 memcpy(new_ie + data.ielen, ml_elem, in cfg80211_parse_ml_elem_sta_data()
3161 new_ie[data.ielen + sizeof(*ml_elem) + 1 + ETH_ALEN] = link_id; in cfg80211_parse_ml_elem_sta_data()
3162 new_ie[data.ielen + sizeof(*ml_elem) + 1 + ETH_ALEN + 1] = in cfg80211_parse_ml_elem_sta_data()
3165 data.ielen += sizeof(*ml_elem) + ml_common_len; in cfg80211_parse_ml_elem_sta_data()
3168 if (data.ielen + sizeof(struct element) + in cfg80211_parse_ml_elem_sta_data()
3172 memcpy(new_ie + data.ielen, reporter_rnr, in cfg80211_parse_ml_elem_sta_data()
3174 data.ielen += sizeof(struct element) + in cfg80211_parse_ml_elem_sta_data()
3178 bss = cfg80211_inform_single_bss_data(wiphy, &data, gfp); in cfg80211_parse_ml_elem_sta_data()
3211 struct cfg80211_inform_bss *data, in cfg80211_inform_bss_data() argument
3218 .drv_data = data, in cfg80211_inform_bss_data()
3225 .use_for = data->restrict_use ? in cfg80211_inform_bss_data()
3226 data->use_for : in cfg80211_inform_bss_data()
3228 .cannot_use_reasons = data->cannot_use_reasons, in cfg80211_inform_bss_data()
3252 struct cfg80211_inform_bss *data, in cfg80211_inform_bss_frame_data() argument
3276 trace_cfg80211_inform_bss_frame(wiphy, data, mgmt, len); in cfg80211_inform_bss_frame_data()
3306 compat = (void *)elem->data; in cfg80211_inform_bss_frame_data()
3325 return cfg80211_inform_bss_data(wiphy, data, ftype, in cfg80211_inform_bss_frame_data()
3392 void *data), in cfg80211_bss_iter() argument
3518 if (wrqu->data.length == sizeof(struct iw_scan_req)) in cfg80211_wext_siwscan()
3610 if (wrqu->data.flags & IW_SCAN_THIS_ESSID) { in cfg80211_wext_siwscan()
3663 pos = ies->data; in ieee80211_scan_add_ies()
3673 iwe.u.data.length = next - pos; in ieee80211_scan_add_ies()
3685 iwe.u.data.length = end - pos; in ieee80211_scan_add_ies()
3773 iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; in ieee80211_bss()
3775 iwe.u.data.flags = IW_ENCODE_DISABLED; in ieee80211_bss()
3776 iwe.u.data.length = 0; in ieee80211_bss()
3785 ie = ies->data; in ieee80211_bss()
3796 iwe.u.data.length = ie[1]; in ieee80211_bss()
3797 iwe.u.data.flags = 1; in ieee80211_bss()
3808 iwe.u.data.length = ie[1]; in ieee80211_bss()
3809 iwe.u.data.flags = 1; in ieee80211_bss()
3824 iwe.u.data.length = sprintf(buf, in ieee80211_bss()
3833 iwe.u.data.length = sprintf(buf, in ieee80211_bss()
3842 iwe.u.data.length = sprintf(buf, in ieee80211_bss()
3851 iwe.u.data.length = sprintf(buf, in ieee80211_bss()
3860 iwe.u.data.length = sprintf(buf, in ieee80211_bss()
3869 iwe.u.data.length = sprintf(buf, in ieee80211_bss()
3878 iwe.u.data.length = sprintf(buf, in ieee80211_bss()
3936 iwe.u.data.length = sprintf(buf, "tsf=%016llx", in ieee80211_bss()
3944 iwe.u.data.length = sprintf(buf, " Last beacon: %ums ago", in ieee80211_bss()
3995 struct iw_point *data = &wrqu->data; in cfg80211_wext_giwscan() local
4010 res = ieee80211_scan_results(rdev, info, extra, data->length); in cfg80211_wext_giwscan()
4011 data->length = 0; in cfg80211_wext_giwscan()
4013 data->length = res; in cfg80211_wext_giwscan()