cfg80211_rx_mlme_mgmt(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’… cfg80211_rx_mlme_mgmt โ€” the Kernel API Manual, bestie edition

okay so picture this: you're in the kernel, you're in station mode, and a management frame just rolled up. This page is cfg80211_rx_mlme_mgmt(9) from the Kernel API Manual, and it's literally the "hey, I handled that frame" notification. Let's get into it ๐ŸŽ€


โœจ NAME โœจ

cfg80211_rx_mlme_mgmt โ€” the notification that says a processed MLME management frame happened. That's it, that's the vibe ๐Ÿ’…


๐ŸŒธ SYNOPSIS ๐ŸŒธ

void cfg80211_rx_mlme_mgmt (struct net_device *dev , const u8 *buf ,
       size_t len );

Look at her go. Three args, no drama โœจ


๐Ÿฆ‹ ARGUMENTS ๐Ÿฆ‹

  • dev โ€” the network device. the main character of this whole situation ๐Ÿ‘‘
  • buf โ€” the authentication frame, and yes bestie that means header + body, the whole package ๐ŸŽ
  • len โ€” the length of the frame data. how much of the above we're actually talking about ๐Ÿ“

๐Ÿ’– DESCRIPTION ๐Ÿ’–

So here's the tea, fr fr. This function gets called whenever an authentication, disassociation, or deauthentication frame has been received and processed in station mode. Like, both things โ€” received and processed. It's not just "ooh a frame showed up," it's "handled it, moving on" ๐Ÿ’€

Now the driver rules, and these are non-negotiable, so pay attention:

  • After the driver gets asked to authenticate via cfg80211_ops::auth, it must call either this function or cfg80211_auth_timeout. pick one, bestie, no ghosting the stack ๐Ÿ‘ป
  • After the driver gets asked to associate via cfg80211_ops::assoc, it must call either this function or cfg80211_auth_timeout. same deal, same energy ๐Ÿซถ
  • While connected, the driver must call this for received and processed disassociation and deauthentication frames ๐Ÿ“ก
  • If the frame couldn't be used because it was unprotected, the driver must call cfg80211_rx_unprot_mlme_mgmt instead. different function, different lane, don't mix them up ๐Ÿ™ˆ
โš ๏ธ two things that will absolutely end you if you ignore them: this function may sleep ๐Ÿ˜ด and the caller must hold the corresponding wdev's mutex. hold it. the mutex. do not forget the mutex ๐Ÿ”ฅ

โญ that's the whole energy โญ

so to recap the vibe check: dev, buf, len, station mode, auth / disassoc / deauth frames, call it or cfg80211_auth_timeout after cfg80211_ops::auth and cfg80211_ops::assoc, unprotected frames go to cfg80211_rx_unprot_mlme_mgmt instead, it may sleep, hold the wdev's mutex. iconic, no notes ๐Ÿ’œ

and there's more coming, so don't wander off โ€” this was just part 1 ๐Ÿงš

๐ŸŒˆ SEE ALSO, aka the part where this manpage simply refuses to stop ๐Ÿ’€

okay bestie, brace yourself โ€” this section is literally just a giant list of everything even remotely related, and it is iconic in how extra it is. No descriptions, no mercy, just vibes and cross-references. We're gonna get through it together. ๐Ÿซถ


๐ŸŽ€ the origin file + the band / capability crew

lowkey that whole block is the "what can this radio even do" zone โ€” caps, bands, iftype data, the works. ๐Ÿ’…


๐Ÿฆ‹ Actions and configuration, and the entire chandef cinematic universe

not me about to list like thirty chandef functions in a row ๐Ÿ˜ญ but they're all main characters so:

see, told you. chandef nation represent ๐Ÿซก๐ŸŒธ


๐ŸŒธ beacons, APs, stations, mesh & OCB โ€” the whole setup squad

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

the way this section goes from beacon data straight to mesh config to OCB without even blinking ๐Ÿ˜ญ ate, honestly.


๐Ÿ’… Scanning and BSS list handling (plus auth / assoc / connect / wowlan in the same breath)

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

scan request โ†’ assoc request โ†’ wowlan patterns โ†’ QoS map. the pipeline is pipelining โœจ


๐Ÿงš NAN, FTM, PMSR, OWE & the fancy-stuff roster

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

NAN block is giving "I know what that stands for and I'm not explaining it" energy, and honestly? valid ๐Ÿงš๐Ÿ’œ


๐Ÿ‘‘ the wiphy + wdev hall of fame

this chunk is so long it deserves its own red carpet:

wiphy_new โ†’ wiphy_register โ†’ do the thing โ†’ wiphy_unregister โ†’ wiphy_free. the whole life cycle is RIGHT THERE and it's gorgeous ๐Ÿ˜ญ๐Ÿ‘‘


โญ Utility functions + Data path helpers

find_ie / find_elem / find_ext / find_vendorโ€ฆ the way there's a finder for literally every situation is so my brand ๐ŸŽ€


๐ŸŒˆ Regulatory enforcement infrastructure + Internal regulatory db functions

the regulatory db stays mysterious on purpose and we respect that ๐Ÿ™ˆ


๐Ÿ”ฅ scan done, BSS inform & the mlme-mgmt friends

heads up bestie: cfg80211_rx_mlme_mgmt(9) itself is not in this list, but these are its whole friend group, so ๐Ÿ‘€

cfg80211_tx_mlme_mgmt and cfg80211_rx_unprot_mlme_mgmt sitting right here next to the page you're reading โ€” the siblings said hi ๐Ÿ”ฅ


๐ŸŽ€ RFkill, Vendor commands, Test mode

alloc skb โ†’ fill it โ†’ reply. alloc skb โ†’ fill it โ†’ event. the pattern is pattern-ing ๐Ÿ’…


๐Ÿ’œ the connect / roam / notify finale

and that's exactly where this part of the list cuts off โ€” there's still more coming, so don't go anywhere bestie ๐Ÿซถโœจ

okay so the cross-reference rabbit hole continues and honestly it's a whole friend group, here's the rest of the crew ๐Ÿ’œ


and that's the whole page bestie, you made it to the end ๐ŸŽ‰๐Ÿซถ go forth and call cfg80211_rx_mlme_mgmt(9) with confidence, you absolute icon.

this one lives in ./include/net (that's the source/version, mwah ๐Ÿ’‹), dated October 2026, and the page itself is cfg80211_rx_mlme_mgmt(9) โ€” screenshot it, cite it, live by it. periodt. ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from