Lines Matching refs:elem

176 bool cfg80211_is_element_inherited(const struct element *elem,  in cfg80211_is_element_inherited()  argument
182 if (elem->id == WLAN_EID_MULTIPLE_BSSID) in cfg80211_is_element_inherited()
185 if (elem->id == WLAN_EID_EXTENSION && elem->datalen > 1 && in cfg80211_is_element_inherited()
186 elem->data[0] == WLAN_EID_EXT_EHT_MULTI_LINK) in cfg80211_is_element_inherited()
207 if (elem->id == WLAN_EID_EXTENSION) { in cfg80211_is_element_inherited()
212 id = elem->data[0]; in cfg80211_is_element_inherited()
218 id = elem->id; in cfg80211_is_element_inherited()
230 static size_t cfg80211_copy_elem_with_frags(const struct element *elem, in cfg80211_copy_elem_with_frags() argument
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()
238 if (elem->datalen + 2 > buf + buf_len - *pos) in cfg80211_copy_elem_with_frags()
241 memcpy(*pos, elem, elem->datalen + 2); in cfg80211_copy_elem_with_frags()
242 *pos += elem->datalen + 2; in cfg80211_copy_elem_with_frags()
245 if (elem->datalen != 255) 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()
251 for_each_element(elem, ie, ie_len) { in cfg80211_copy_elem_with_frags()
252 if (elem->id != WLAN_EID_FRAGMENT) in cfg80211_copy_elem_with_frags()
255 if (elem->datalen + 2 > buf + buf_len - *pos) in cfg80211_copy_elem_with_frags()
258 memcpy(*pos, elem, elem->datalen + 2); in cfg80211_copy_elem_with_frags()
259 *pos += elem->datalen + 2; in cfg80211_copy_elem_with_frags()
261 if (elem->datalen != 255) in cfg80211_copy_elem_with_frags()
544 const struct element **elem, u32 *s_ssid) in cfg80211_calc_short_ssid() argument
547 *elem = cfg80211_find_elem(WLAN_EID_SSID, ies->data, ies->len); in cfg80211_calc_short_ssid()
548 if (!*elem || (*elem)->datalen > IEEE80211_MAX_SSID_LEN) in cfg80211_calc_short_ssid()
551 *s_ssid = ~crc32_le(~0, (*elem)->data, (*elem)->datalen); in cfg80211_calc_short_ssid()
1407 const struct element *elem; in cfg80211_find_elem_match() local
1409 for_each_element_id(elem, eid, ies, len) { in cfg80211_find_elem_match()
1410 if (elem->datalen >= match_offset + match_len && in cfg80211_find_elem_match()
1411 !memcmp(elem->data + match_offset, match, match_len)) in cfg80211_find_elem_match()
1412 return elem; in cfg80211_find_elem_match()
1423 const struct element *elem; in cfg80211_find_vendor_elem() local
1430 elem = cfg80211_find_elem_match(WLAN_EID_VENDOR_SPECIFIC, ies, len, in cfg80211_find_vendor_elem()
1433 if (!elem || elem->datalen < 4) in cfg80211_find_vendor_elem()
1436 return elem; in cfg80211_find_vendor_elem()
2495 const struct element *elem, *sub; in cfg80211_parse_mbssid_data() local
2520 for_each_element_id(elem, WLAN_EID_MULTIPLE_BSSID, in cfg80211_parse_mbssid_data()
2522 if (elem->datalen < 4) in cfg80211_parse_mbssid_data()
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()
2546 elem, in cfg80211_parse_mbssid_data()
2558 mbssid_index_ie[2] >= (1 << elem->data[0])) { in cfg80211_parse_mbssid_data()
2571 data.max_bssid_indicator = elem->data[0]; in cfg80211_parse_mbssid_data()
2602 ssize_t cfg80211_defragment_element(const struct element *elem, const u8 *ies, in cfg80211_defragment_element() argument
2610 if (!elem) in cfg80211_defragment_element()
2614 next = (void *)(elem->data + elem->datalen); in cfg80211_defragment_element()
2615 elem_datalen = elem->datalen; in cfg80211_defragment_element()
2617 if (elem->id == WLAN_EID_EXTENSION) { in cfg80211_defragment_element()
2618 copied = elem->datalen - 1; in cfg80211_defragment_element()
2624 memmove(data, elem->data + 1, copied); in cfg80211_defragment_element()
2627 copied = elem->datalen; in cfg80211_defragment_element()
2633 memmove(data, elem->data, copied); in cfg80211_defragment_element()
2641 for (elem = next; in cfg80211_defragment_element()
2642 elem->data < ies + ieslen && in cfg80211_defragment_element()
2643 elem->data + elem->datalen <= ies + ieslen; in cfg80211_defragment_element()
2644 elem = next) { in cfg80211_defragment_element()
2646 next = (void *)(elem->data + elem->datalen); in cfg80211_defragment_element()
2648 if (elem->id != frag_id) in cfg80211_defragment_element()
2651 elem_datalen = elem->datalen; in cfg80211_defragment_element()
2657 memmove(data + copied, elem->data, elem_datalen); in cfg80211_defragment_element()
2684 const struct element *elem; in cfg80211_defrag_mle() local
2695 for_each_element(elem, mle->data + mle->datalen, in cfg80211_defrag_mle()
2697 if (elem->id != WLAN_EID_FRAGMENT) in cfg80211_defrag_mle()
2700 buf_len += elem->datalen; in cfg80211_defrag_mle()
2721 for_each_element_id(elem, IEEE80211_MLE_SUBELEM_PER_STA_PROFILE, in cfg80211_defrag_mle()
2723 res->sta_prof[idx] = (void *)elem->data; in cfg80211_defrag_mle()
2724 res->sta_prof_len[idx] = elem->datalen; in cfg80211_defrag_mle()
2730 if (!for_each_element_completed(elem, ie, ielen)) in cfg80211_defrag_mle()
2739 elem = (void *)res->sta_prof[idx] - 2; in cfg80211_defrag_mle()
2746 buf_len = ielen + ie - (u8 *)elem; in cfg80211_defrag_mle()
2749 cfg80211_defragment_element(elem, in cfg80211_defrag_mle()
2750 (u8 *)elem, buf_len, in cfg80211_defrag_mle()
2850 const struct element *elem; in cfg80211_gen_reporter_rnr() local
2874 elem = cfg80211_find_elem(WLAN_EID_SUPPORTED_REGULATORY_CLASSES, in cfg80211_gen_reporter_rnr()
2876 if (elem && elem->datalen >= 1) { in cfg80211_gen_reporter_rnr()
2877 ap_info.op_class = elem->data[0]; in cfg80211_gen_reporter_rnr()
2899 if (cfg80211_calc_short_ssid(ies, &elem, &short_ssid)) in cfg80211_gen_reporter_rnr()
2942 const struct element *elem, in cfg80211_parse_ml_elem_sta_data() argument
2965 if (!ieee80211_mle_type_ok(elem->data + 1, in cfg80211_parse_ml_elem_sta_data()
2967 elem->datalen - 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()
2992 mle = cfg80211_defrag_mle(elem, tx_data->ie, tx_data->ielen, gfp); in cfg80211_parse_ml_elem_sta_data()
3195 const struct element *elem; in cfg80211_parse_ml_sta_data() local
3203 for_each_element_extid(elem, WLAN_EID_EXT_EHT_MULTI_LINK, in cfg80211_parse_ml_sta_data()
3206 elem, gfp); in cfg80211_parse_ml_sta_data()
3298 const struct element *elem; in cfg80211_inform_bss_frame_data() local
3301 elem = cfg80211_find_elem(WLAN_EID_S1G_BCN_COMPAT, ie, ielen); in cfg80211_inform_bss_frame_data()
3302 if (!elem) in cfg80211_inform_bss_frame_data()
3304 if (elem->datalen < sizeof(*compat)) in cfg80211_inform_bss_frame_data()
3306 compat = (void *)elem->data; in cfg80211_inform_bss_frame_data()