cfg80211_vendor_event(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– cfg80211_vendor_event(9) β€” a kernel API manual moment πŸ’–

okay so bestie, welcome to the Kernel API Manual page for cfg80211_vendor_event(9) and honestly? she's short, she's sweet, she's iconic. let's get into it πŸŽ€


✨ NAME ✨

cfg80211_vendor_event β€” send the event πŸ“¨ periodt, that's the whole job.


🌸 SYNOPSIS 🌸

void cfg80211_vendor_event (struct sk_buff *skb , gfp_t gfp );

literally two arguments, no cap. look at her go πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

  • skb β€” the skb πŸ‘‘ and ngl this one has rules: it must have been allocated with cfg80211_vendor_event_alloc. like, that's not a suggestion bestie, that's the vibe check it has to pass before you hand it over.
  • gfp β€” allocation flags ✨ the little sprinkle of "how should the memory situation go" energy.

🌈 DESCRIPTION 🌈

okay so here's the tea πŸ“: this function sends the given skb as an event. and which skb is that? the one that must have been allocated by cfg80211_vendor_event_alloc β€” we're not doing DIY skb construction here, we're doing the proper pipeline, iykyk πŸ’œ

and the big one, the detail you cannot miss: it always consumes it πŸ’€ like, the skb? gone. eaten. she has been consumed by the function and that's just how it is. no take-backsies, no "but I wanted to use it again", it's giving main character energy and the main character is the event now πŸ”₯

so yeah β€” allocate it right, hand it over, and know that it belongs to the function the second you do 🫢


(more parts coming bestie, don't go anywhere) 🧚


And then β€” the part everyone secretly opens the manpage for β€” the friend group. πŸ’…

✨ SEE ALSO ✨

Okay bestie, buckle up, because this is the entire contact list. The page literally just drops every related page it knows and trusts. Starting with the family home itself:

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

That's the header, the mothership, the whole personality. Everything below lives in or around it. πŸŽ€

The intro + device registration era:

Channels, rates, BSS types, privacy, and every capability struct you could ever want:

  • enum ieee80211_channel_flags(9), struct ieee80211_channel(9), enum ieee80211_rate_flags(9), enum ieee80211_bss_type(9), enum ieee80211_privacy(9), struct ieee80211_rate(9), struct ieee80211_he_obss_pd(9), struct cfg80211_he_bss_color(9), struct ieee80211_sta_ht_cap(9), struct ieee80211_sta_vht_cap(9), struct ieee80211_sta_he_cap(9), struct ieee80211_eht_mcs_nss_supp(9), struct ieee80211_sta_eht_cap(9), struct ieee80211_sta_uhr_cap(9), struct ieee80211_sband_iftype_data(9), enum ieee80211_edmg_bw_config(9), struct ieee80211_edmg(9), struct ieee80211_sta_s1g_cap(9), struct ieee80211_supported_band(9)

The iftype-data helper squad (yes, one of them starts with an underscore, don't come for her):


πŸ¦‹ Actions and configuration energy πŸ¦‹

Now we get into the section literally called Actions and configuration(9) β€” the main character of this whole area, no cap β€” and all her little struct besties:

  • Actions and configuration(9), struct vif_params(9), struct key_params(9), struct cfg80211_chan_def(9), struct cfg80211_tid_cfg(9), struct cfg80211_tid_config(9), struct cfg80211_fils_aad(9), struct cfg80211_set_hw_timestamp(9)

The chandef clique β€” they do everything together, obsessed:

Survey, crypto, and the AP-side struct stack:

  • enum survey_info_flags(9), struct survey_info(9), struct cfg80211_crypto_settings(9), struct cfg80211_mbssid_config(9), struct cfg80211_mbssid_elems(9), struct cfg80211_rnr_elems(9), struct cfg80211_beacon_data(9), struct cfg80211_acl_data(9), struct cfg80211_fils_discovery(9), struct cfg80211_unsol_bcast_probe_resp(9), struct cfg80211_s1g_short_beacon(9), struct cfg80211_ap_settings(9), struct cfg80211_ap_update(9), struct cfg80211_csa_settings(9), struct cfg80211_color_change_settings(9), struct iface_combination_params(9)

Station-land, where the parameters get real:

  • enum station_parameters_apply_mask(9), struct sta_txpwr(9), struct link_station_parameters(9), struct link_station_del_parameters(9), struct cfg80211_ttlm_params(9), struct station_parameters(9), struct station_del_parameters(9), enum cfg80211_station_type(9), cfg80211_check_station_change(9)

Rates, BSS params, TID stats, and the whole station_info-adjacent crew:

  • enum rate_info_flags(9), enum rate_info_bw(9), struct rate_info(9), enum bss_param_flags(9), struct sta_bss_parameters(9), struct cfg80211_txq_stats(9), struct cfg80211_tid_stats(9), struct link_station_info(9), struct station_info(9), struct cfg80211_sar_sub_specs(9), struct cfg80211_sar_specs(9), struct cfg80211_sar_freq_ranges(9), struct cfg80211_sar_capa(9), cfg80211_get_station(9), enum monitor_flags(9), enum mpath_info_flags(9), struct mpath_info(9), enum wiphy_bss_param_flags(9), struct bss_parameters(9), struct mesh_config(9), struct mesh_setup(9), struct ocb_setup(9), struct ieee80211_txq_params(9)

🌸 Scanning and BSS list handling 🌸

Say hi to Scanning and BSS list handling(9) and its extremely long guest list:

  • 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)

Auth, assoc, deauth, disassoc β€” the whole connection drama arc:

  • 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)

PMKSA, packet patterns, WoWLAN, coalesce β€” the "keep the connection alive while you sleep" department:

  • 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)

Rekey, FT, mgmt-tx, and QoS map things:

  • 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)

🧚 Neighbor Awareness Networking (NAN) 🧚

Yes, this gets its own heading in the original, so it gets its own heading here. Iconic behavior honestly:

  • Neighbor Awareness Networking (NAN)(9)

The NAN lineup:

  • struct cfg80211_nan_band_config(9), struct cfg80211_nan_conf(9), struct cfg80211_nan_channel(9), struct cfg80211_nan_local_sched(9), struct cfg80211_nan_peer_map(9), struct cfg80211_nan_peer_sched(9), enum cfg80211_nan_conf_changes(9), struct cfg80211_nan_func_filter(9), struct cfg80211_nan_func(9)

Then a little grab-bag of related goodies:

  • struct cfg80211_pmk_conf(9), struct cfg80211_external_auth_params(9), struct cfg80211_ftm_responder_stats(9), struct cfg80211_pmsr_ftm_result(9), struct cfg80211_pmsr_result(9), struct cfg80211_pmsr_ftm_request_peer(9), struct cfg80211_pmsr_request_peer(9), struct cfg80211_pmsr_request(9), struct cfg80211_update_owe_info(9), struct mgmt_frame_regs(9)

πŸ‘‘ The wiphy era πŸ‘‘

This is where struct cfg80211_ops(9) shows up β€” the big one β€” followed by flags, iface limits, WoWLAN/coalesce support, vendor command stuff, and radio config. It's giving "table of contents for the entire driver API":

  • struct cfg80211_ops(9), enum wiphy_flags(9), struct ieee80211_iface_limit(9), struct ieee80211_iface_combination(9), enum wiphy_wowlan_support_flags(9), struct wiphy_wowlan_support(9), struct wiphy_coalesce_support(9), enum wiphy_vendor_command_flags(9), enum wiphy_opmode_flag(9), struct sta_opmode_info(9), struct wiphy_vendor_command(9), struct wiphy_iftype_ext_capab(9), cfg80211_get_iftype_ext_capa(9), struct cfg80211_pmsr_capabilities(9), struct wiphy_iftype_akm_suites(9), struct wiphy_radio_cfg(9), struct wiphy_radio_freq_range(9), struct wiphy_radio(9), enum wiphy_nan_flags(9), struct wiphy_nan_capa(9), struct wiphy(9)

Now the wiphy lifecycle and work-queue helpers β€” genuinely useful, fr fr:

All the deferred-work flavors, plus hrtimer variants because of course:

Wireless-dev corner:


πŸ’œ Utility functions πŸ’œ

Pure little helpers. No drama, just vibes:

Header-length and radiotap besties:


πŸ“ Data path helpers πŸ“

The "actually move the packets" crew:

Element-finding squad β€” every finder, matched and unmatched:


🌈 Regulatory enforcement infrastructure 🌈

Rules are rules, bestie:

Internal regulatory db functions β€” yes, "internal" is right there in the name, so mind your business:


πŸ”₯ Scan-done and BSS-notification crew πŸ”₯

BSS refcounting and lookup, the "who owns this pointer" group chat:

MLME event notifications β€” auth, assoc resp, assoc failure, and friends:


🫢 RFkill integration 🫢

πŸ’… Vendor commands πŸ’…

(hiiii, this is your page's home neighborhood πŸ‘‹)

⭐ Test mode ⭐


πŸŽ€ Connect / roam / disconnect notifications πŸŽ€

The "tell userspace what just happened" saga, and it is long:

Channel-stay / mgmt-tx expiry trio:

Station info and station add/remove:

RX/TX mgmt and control port reporting:

CQM notifications (the "your signal is doing something" alerts):

Radar / CAC / DFS event crew:

Rekey, PMKSA candidates, and the "wait, that frame was weird" reports:

Observed-beacon reporting (both flavors, khz and not):

And the last one in this part:

  • struct cfg80211_beaconing_check_config(9)

…and that's only most of the list, bestie 😭 the page keeps going, so keep scrolling β€” we're not done yet πŸ’–

…and the rest of the bestie roster, aka the entire cfg80211 / ieee80211 friend group β€” no cap, this is the whole group chat, every single one gets a mention: 🫢


Okay so that's the whole list, bestie β€” every one of those (9) pages is right there if you wanna go deeper, and honestly? The way they all link up is giving cinematic universe. Obsessed. πŸ’…βœ¨

And that's a wrap on this page, fr fr β€” sourced from ./include/net, dated October 2026, and it's the cfg80211_vendor_event(9) page, if you forgot already (no judgment, it was long 😭). Go build something iconic with your vendor events, drink some water, and slay πŸŒΈπŸ¦‹πŸ‘‘

πŸ“¦ where this page comes from