cfg80211_rx_mgmt_khz(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… cfg80211_rx_mgmt_khz β€” Kernel API Manual

okay so real talk, bestie: this little function lives in the Kernel API Manual and it's basically the kernel going "hey, something arrived and I'm not touching it, it's yours now." iconic behaviour honestly πŸŽ€


✨ NAME ✨

cfg80211_rx_mgmt_khz β€” the notification that says "yo, an unprocessed management frame just showed up" πŸ“¨

🌸 SYNOPSIS 🌸

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

πŸ¦‹ ARGUMENTS πŸ¦‹

  • wdev β€” the wireless device that's receiving the frame, aka the main character here πŸ‘‘
  • freq β€” the frequency the frame was received on, measured in KHz (yes, KHz, keep that in mind, it's not MHz, don't come for me) πŸ“‘
  • sig_dbm β€” signal strength in dBm, or just 0 if we genuinely don't know ngl πŸ€·β€β™€οΈ
  • buf β€” the management frame itself, header + body, the whole package πŸ’Œ
  • len β€” how long that frame data actually is
  • flags β€” the flags, as defined in enum nl80211_rxmgmt_flags (go look 'em up, they're right there) 🚩

πŸ’œ DESCRIPTION πŸ’œ

So the way this works: this function gets called whenever an Action frame is received for a station mode interface, but it is not processed in the kernel. Like, the kernel looked at it and went "not my job bestie" and handed it off. ✨

πŸ”₯ RETURN πŸ”₯

It returns true if a user space application has registered for this frame β€” and for action frames, that means that user space app is now the responsible one for rejecting unrecognized action frames. No pressure or anything 😭

It returns false otherwise, and in that case, for action frames, the driver is the one responsible for rejecting the frame. Swap of responsibility, lowkey dramatic but that's how it is πŸ’…

fr fr, whichever way it goes, somebody has to reject the unrecognized action frames β€” just make sure you know which side of the true/false you're on 🫢

✨ SEE ALSO ✨

okay so you've read the whole function, you know what it does, and now you're like "bestie who else lives in this neighborhood??" β€” say less πŸ’… this is the entire SEE ALSO roll call, every single name, nothing skipped, no cap. Everything below is the extended fam, and the whole doc lives in the kernel file ./include/net/cfg80211.h πŸ“βœ¨


πŸŽ€ the intro & the band squad

🌸 Actions and configuration 🌸

πŸ¦‹ Scanning and BSS list handling πŸ¦‹

  • anchor: Scanning and BSS list handling(9)
  • scan requests & BSS structs: 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 + connect params + wowlan + qos, lowkey a lot: 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 besties: Neighbor Awareness Networking (NAN)(9), 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)
  • PMK / external auth / FTM / PMSR / OWE: 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), struct cfg80211_ops(9) β€” yes, the big one πŸ‘‘

πŸ‘‘ the wiphy era πŸ‘‘

πŸ’œ Utility functions πŸ’œ

🌈 Regulatory enforcement infrastructure 🌈

🫢 internal-ish notification girlies 🫢

πŸŽ€ RFkill, vendor & test mode πŸŽ€

⭐ connect / roam / notify / mgmt traffic ⭐

and that's the whole guest list β€” every single (9) reference from ./include/net/cfg80211.h, nothing dropped, nothing merged πŸ’… (and yeah, enum and struct prefixes stay exactly where they were, we don't ✨fix✨ names in this house 🫢)

…and obvi the rest of the friend group πŸ’–, because the SEE ALSO roster is giving extended cinematic universe and we are not skipping a single one of them. Every last one, in order, no cap:

Like, that's the whole list, all sixty-three of them, and yes your thumbs are gonna be sore from all that tapping in man β€” hydrate, bestie πŸ“


Okay so that's genuinely the whole page πŸ’œ. It's filed under the source path ./include/net, dated October 2026, and it's the man page for cfg80211_rx_mgmt_khz(9) β€” that's the footer moment, our little sign-off πŸ¦‹. Go forth, call your functions responsibly, and remember: the docs ate, periodt. βœ¨πŸ‘‘

πŸ“¦ where this page comes from