cfg80211_rx_mgmt(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– cfg80211_rx_mgmt πŸ’–

okay so bestie, we're in the Kernel API Manual today and the main character of this page is cfg80211_rx_mgmt. yes it's a long name. yes it's iconic. let's get into it 🫢


✨ NAME ✨

cfg80211_rx_mgmt β€” notification of received, unprocessed management frame πŸ’Œ

like, "hey, a management frame showed up and nobody in the kernel touched it." that's the whole vibe.


🌸 SYNOPSIS 🌸

bool cfg80211_rx_mgmt (struct wireless_dev *wdev , int freq , int
sig_dbm , const u8 *buf , size_t len , u32 flags );

notice the return type is bool β€” we're getting a yes or a no back, no in-between, no "maybe", it's giving decisive πŸ’…


πŸŽ€ ARGUMENTS πŸŽ€

  • wdev β€” the wireless device that's receiving the frame. the one getting the message, fr fr πŸ“¨
  • freq β€” the frequency the frame was received on, in MHz. numbers, we love her.
  • sig_dbm β€” signal strength in dBm, or 0 if unknown. if you don't know, just say 0, no cap πŸ™ˆ
  • buf β€” the management frame itself (header + body). the whole package, header and all 🎁
  • len β€” length of the frame data. someone's gotta say how big buf is.
  • flags β€” flags, as defined in enum nl80211_rxmgmt_flags. go look 'em up, they live over there πŸ‘€

πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the tea: this function gets called whenever an Action frame is received for a station mode interface, but it's not processed in the kernel. like, the kernel looked at it and was like "not my job bestie, sending this upstairs." 🧚


πŸ”₯ RETURN πŸ”₯

it returns true if a user space application has registered for this frame. and for action frames, that means user space is the one responsible for rejecting unrecognized action frames β€” that's their problem now, they signed up for it πŸ‘‘

it returns false otherwise, and in that case, for action frames, the driver is responsible for rejecting the frame. so like, somebody's always on reject duty. know your role, periodt πŸ’€


and that's just part 1, bestie β€” there's more coming πŸ‘€

πŸ”— SEE ALSO πŸ”—

okay bestie, buckle up β€” this is the part where the page goes "and here's literally everything else" πŸ’… It's a cross-reference dump straight out of the kernel docs, and no we are not skipping any of it, because every single one of these is a real page you can go read. It's giving infinite scroll energy, fr fr.

First up, the home base 🏠 β€” all of these live in:

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

Then the intro-level stuff, aka the "start here so you're not lost" crew ✨:

Next block: actions and configuration πŸŽ€ β€” the "actually doing stuff" section, all the chandef girlies live here:

Then we get into scanning and BSS list handling πŸ¦‹ β€” the "where is everything and who's out there" zone:

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

Then Neighbor Awareness Networking (NAN) 🌸 β€” yes that's the actual name, no cap:

Then the utility functions 🧚 β€” the little helper besties you call when you just need one thing done:

Then data path helpers πŸ’œ β€” packets go brrr:

Then regulatory enforcement infrastructure πŸ‘‘ β€” the "the government says no" section:

And then a whole pile of scan/BSS/MLME reporting goodies πŸ“:

RFkill integration πŸ”₯ β€” the on/off switch vibes:

Vendor commands ✨ β€” for when your driver has ✨special features✨:

Test mode πŸŽ€ β€” bestie do not ship this, okay, it's literally in the name:

Then the connection / roaming / notification main characters 🌈:

okay so we're at the tail end of the SEE ALSO vibes, and bestie there are so many pages in this friend group, like genuinely the whole extended crew 🫢 every single one of them is right here, no gatekeeping, no "you don't wanna know them" β€” take the whole list, it's yours:



like… that's the whole group chat, bestie πŸ’… three of them are even struct pages so you know they're the main characters of the reference section (struct cfg80211_ft_event_params(9), struct cfg80211_nan_match_params(9) and struct cfg80211_mlo_reconf_done_data(9) β€” we see you, kings πŸ‘‘).


and that's a wrap on the whole page, fr fr πŸŽ€ the source for all this is in ./include/net, this version is dated October 2026, and the page itself is cfg80211_rx_mgmt(9) β€” go read the others too, iykyk ✨ bye bestie, mwah πŸ˜­πŸ’–

πŸ“¦ where this page comes from