Lines Matching refs:elem

214 bool cfg80211_is_element_inherited(const struct element *elem,
220 if (elem->id == WLAN_EID_MULTIPLE_BSSID)
223 if (elem->id == WLAN_EID_EXTENSION && elem->datalen > 1 &&
224 elem->data[0] == WLAN_EID_EXT_EHT_MULTI_LINK)
245 if (elem->id == WLAN_EID_EXTENSION) {
250 id = elem->data[0];
256 id = elem->id;
268 static size_t cfg80211_copy_elem_with_frags(const struct element *elem,
272 if (WARN_ON((u8 *)elem < ie || elem->data > ie + ie_len ||
273 elem->data + elem->datalen > ie + ie_len))
276 if (elem->datalen + 2 > buf + buf_len - *pos)
279 memcpy(*pos, elem, elem->datalen + 2);
280 *pos += elem->datalen + 2;
283 if (elem->datalen != 255)
286 ie_len = ie + ie_len - elem->data - elem->datalen;
287 ie = (const u8 *)elem->data + elem->datalen;
289 for_each_element(elem, ie, ie_len) {
290 if (elem->id != WLAN_EID_FRAGMENT)
293 if (elem->datalen + 2 > buf + buf_len - *pos)
296 memcpy(*pos, elem, elem->datalen + 2);
297 *pos += elem->datalen + 2;
299 if (elem->datalen != 255)
555 const struct element **elem, u32 *s_ssid)
558 *elem = cfg80211_find_elem(WLAN_EID_SSID, ies->data, ies->len);
559 if (!*elem || (*elem)->datalen > IEEE80211_MAX_SSID_LEN)
562 *s_ssid = ~crc32_le(~0, (*elem)->data, (*elem)->datalen);
652 const struct element *elem, *ssid_elem;
662 for_each_element_id(elem, WLAN_EID_REDUCED_NEIGHBOR_REPORT,
664 pos = elem->data;
665 end = elem->data + elem->datalen;
1308 const struct element *elem;
1310 for_each_element_id(elem, eid, ies, len) {
1311 if (elem->datalen >= match_offset + match_len &&
1312 !memcmp(elem->data + match_offset, match, match_len))
1313 return elem;
1324 const struct element *elem;
1331 elem = cfg80211_find_elem_match(WLAN_EID_VENDOR_SPECIFIC, ies, len,
1334 if (!elem || elem->datalen < 4)
1337 return elem;
2246 const struct element *elem, *sub;
2271 for_each_element_id(elem, WLAN_EID_MULTIPLE_BSSID,
2273 if (elem->datalen < 4)
2275 if (elem->data[0] < 1 || (int)elem->data[0] > 8)
2277 for_each_element(sub, elem->data + 1, elem->datalen - 1) {
2297 elem,
2321 data.max_bssid_indicator = elem->data[0];
2352 ssize_t cfg80211_defragment_element(const struct element *elem, const u8 *ies,
2360 if (!elem)
2363 /* elem might be invalid after the memmove */
2364 next = (void *)(elem->data + elem->datalen);
2365 elem_datalen = elem->datalen;
2367 if (elem->id == WLAN_EID_EXTENSION) {
2368 copied = elem->datalen - 1;
2372 memmove(data, elem->data + 1, copied);
2374 copied = elem->datalen;
2378 memmove(data, elem->data, copied);
2385 for (elem = next;
2386 elem->data < ies + ieslen &&
2387 elem->data + elem->datalen <= ies + ieslen;
2388 elem = next) {
2389 /* elem might be invalid after the memmove */
2390 next = (void *)(elem->data + elem->datalen);
2392 if (elem->id != frag_id)
2395 elem_datalen = elem->datalen;
2400 memmove(data + copied, elem->data, elem_datalen);
2425 const struct element *elem;
2436 for_each_element(elem, mle->data + mle->datalen,
2438 if (elem->id != WLAN_EID_FRAGMENT)
2441 buf_len += elem->datalen;
2462 for_each_element_id(elem, IEEE80211_MLE_SUBELEM_PER_STA_PROFILE,
2464 res->sta_prof[idx] = (void *)elem->data;
2465 res->sta_prof_len[idx] = elem->datalen;
2471 if (!for_each_element_completed(elem, ie, ielen))
2480 elem = (void *)res->sta_prof[idx] - 2;
2487 buf_len = ielen + ie - (u8 *)elem;
2490 cfg80211_defragment_element(elem,
2491 (u8 *)elem, buf_len,
2580 const struct element *elem,
2599 if (!ieee80211_mle_size_ok(elem->data + 1, elem->datalen - 1))
2602 ml_elem = (void *)elem->data + 1;
2642 mle = cfg80211_defrag_mle(elem, tx_data->ie, tx_data->ielen, gfp);
2739 const struct element *elem;
2747 for_each_element_extid(elem, WLAN_EID_EXT_EHT_MULTI_LINK,
2750 elem, gfp);
2847 const struct element *elem;
2849 elem = cfg80211_find_elem(WLAN_EID_S1G_BCN_COMPAT,
2851 if (!elem)
2853 if (elem->datalen < sizeof(*compat))
2855 compat = (void *)elem->data;