cfg80211_find_vendor_elem(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– cfg80211_find_vendor_elem(9) β€” like, the kernel API manual bestie πŸŽ€

okay so bestie, welcome to cfg80211_find_vendor_elem(9), which is genuinely one of those little helper functions that's lowkey doing the most important job ever: it goes digging through a pile of information elements to find the one vendor-specific one you actually care about. it's giving "search and rescue but make it wireless" ✨


✨ NAME ✨

cfg80211_find_vendor_elem β€” find a vendor specific information element in data. that's it, that's the whole mission, and honestly? it ate. πŸ’…


✨ SYNOPSIS ✨

const struct element * cfg80211_find_vendor_elem (unsigned int oui , int oui_type , const u8 *ies , unsigned int len );

like yes, that's the function signature, look at her go πŸ¦‹


✨ ARGUMENTS ✨

  • oui β€” the vendor OUI. this is your vendor's special little identifier, the "who dis" of the element world πŸ‘‘
  • oui_type β€” the vendor-specific OUI type, and heads up: it must be < 0xff. if you pass a negative value, that means any type is fine β€” she's not picky, she's flexible, she's main character energy 🌈
  • ies β€” the data consisting of IEs (information elements, iykyk) πŸ“¦
  • len β€” the length of that data. yes, you have to tell her how much data there is. she's not a mind reader 🫢

✨ RETURN ✨

so what do you get back? here's the vibe check:

  • NULL if the vendor specific element ID could not be found β€” like, she looked, she really did, and it's not there 😭
  • NULL also if the element is invalid, meaning it claims to be longer than the given data β€” that's a big red flag, that element is lying to you πŸ’€
  • otherwise, you get the element structure for the requested element. slay! you found her! πŸŽ‰

✨ NOTE ✨

okay important caveat bestie, listen up: there are no checks on the element length other than having to fit into the given data. that's it. that's the only guardrail. so like... be careful out there, the function is trusting you and that's a lot of responsibility πŸ™ˆ

more coming in the next part, don't go anywhere 🌸

okay so this is the ✨lore✨ section β€” every single related page in the extended cfg80211 cinematic universe. and bestie, there are a lot of them. like, a LOT lot. no cap, grab a snack πŸ“ and settle in, because we're going through all of them and none of them are getting skipped. main character energy from start to finish, iykyk.

first up, the actual source of truth, the mothership:

  • Kernel file ./include/net/cfg80211.h

🌸 and then the introduction tour:


πŸ› οΈ next chunk β€” actions & configuration, aka the whole to-do list of the wireless world:


πŸ” scanning & BSS list handling β€” the part where we go looking for wifi like it's a missing earring:

  • Scanning and BSS list handling(9)
  • struct cfg80211_ssid(9)
  • struct cfg80211_scan_info(9)
  • struct cfg80211_scan_6ghz_params(9)
  • struct cfg80211_scan_request(9)
  • struct cfg80211_match_set(9)
  • struct cfg80211_sched_scan_plan(9)
  • struct cfg80211_bss_select_adjust(9)
  • struct cfg80211_sched_scan_request(9)
  • enum cfg80211_signal_type(9)
  • struct cfg80211_inform_bss(9)
  • struct cfg80211_bss_ies(9)
  • struct cfg80211_bss(9)
  • ieee80211_bss_get_elem(9)
  • ieee80211_bss_get_ie(9)
  • struct cfg80211_auth_request(9)
  • struct cfg80211_assoc_link(9)
  • struct cfg80211_ml_reconf_req(9)
  • enum cfg80211_assoc_req_flags(9)
  • struct cfg80211_assoc_request(9)
  • struct cfg80211_deauth_request(9)
  • struct cfg80211_disassoc_request(9)
  • struct cfg80211_ibss_params(9)
  • struct cfg80211_bss_selection(9)
  • struct cfg80211_connect_params(9)
  • enum cfg80211_connect_params_changed(9)
  • enum wiphy_params_flags(9)
  • struct cfg80211_pmksa(9)
  • struct cfg80211_pkt_pattern(9)
  • struct cfg80211_wowlan_tcp(9)
  • struct cfg80211_wowlan(9)
  • struct cfg80211_coalesce_rules(9)
  • struct cfg80211_coalesce(9)
  • struct cfg80211_wowlan_nd_match(9)
  • struct cfg80211_wowlan_nd_info(9)
  • struct cfg80211_wowlan_wakeup(9)
  • struct cfg80211_gtk_rekey_data(9)
  • struct cfg80211_update_ft_ies_params(9)
  • struct cfg80211_mgmt_tx_params(9)
  • struct cfg80211_dscp_exception(9)
  • struct cfg80211_dscp_range(9)
  • struct cfg80211_qos_map(9)

πŸ¦‹ NAN time, bestie β€” Neighbor Awareness Networking, the most "we're all connected, manifest it" thing in the kernel:


✨ utility functions, the little helpers that lowkey carry everything:


πŸ”₯ data path helpers β€” plus, ngl, the whole reason you're probably here, because cfg80211_find_vendor_ie(9) lives right in this cluster:


πŸ‘‘ regulatory enforcement infrastructure β€” yes queen, tell the radio what it's allowed to do:


⭐ and then the big send-off batch, all the notification and BSS-plumbing pages:


πŸ’… RFkill integration, vendor commands, and test mode β€” the whole backstage pass:


🌈 last stretch, bestie, we're so close:

…and the SEE ALSO party train absolutely does not stop there, bestie, because kernel docs love a good cross-reference spiral. Buckle up πŸŽ€

regulation & beaconing girlies:

operating class / chandef conversion station (the math-y icons):

TDLS, bitrate, and the register/unregister trio:

fast BSS transition energy ✨:

P2P + information element girlies:

wowlan, critical proto, channels, and combination checking:

the "we are so done here" squad 🫢:

extended feature flags, get and set:

NAN nation (there's a lot of NAN, and honestly? slay):

external auth + peer measurement report girlies:

iftype, assoc comeback, and OWE info:

BSS + the entire colour-change cinematic universe 🌈:

6 GHz power type + MLO reconf main character energy πŸ‘‘:

scheduled channel checks + EPCS:

more NAN, because she contains multitudes πŸ’…:

locked debugfs read/write (handle with care, bestie):

S1G frequency + sibling hunting:

and one last icon to close us out:


ok that's literally the whole list, no cap, nothing skipped. go read them in order if you're built like that πŸ¦‹

And that's a wrap on cfg80211_find_vendor_elem(9), bestie β€” you ate πŸ’– This lil masterpiece lives in ./include/net and the version/date stamp on it is October 2026. Periodt. 🌸

πŸ“¦ where this page comes from