cfg80211_tx_mlme_mgmt(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… cfg80211_tx_mlme_mgmt(9) β€” like, the kernel API manual page you didn't know you needed

okay bestie, buckle up πŸŽ€ this is cfg80211_tx_mlme_mgmt, straight out of the Kernel API Manual, and she is literally the girl who tells everyone when a deauth/disassoc frame has been sent. no cap.


✨ NAME ✨

cfg80211_tx_mlme_mgmt β€” the notification of transmitted deauth/disassoc frame πŸ¦‹

like, she's not doing the sending, she's just here to announce that it happened. main character energy of a messenger, fr fr.


🌸 SYNOPSIS 🌸

void cfg80211_tx_mlme_mgmt (struct net_device *dev , const u8 *buf ,
       size_t len , bool reconnect );

that's the whole signature, character for character πŸ’– don't come for me about the spacing, that's just how she arrived.


🫢 ARGUMENTS 🫢

  • dev β€” network device. the whole entire netdev in question, she's the moment πŸ‘‘
  • buf β€” 802.11 frame (header + body). yes, header and body, both, together, iconic.
  • len β€” length of the frame data. how many bytes we're working with, no guessing πŸ’€
  • reconnect β€” immediate reconnect is desired (include the nl80211 attribute). so like, if you set this, you're saying "bestie I want back in now" and it gets that nl80211 attribute added. 🌈

⭐ DESCRIPTION ⭐

okay so here's the tea β˜• β€” this function is called whenever deauthentication has been processed in station mode. and that includes both vibe-checks:

  • received deauthentication frames πŸ“
  • locally generated ones πŸ”₯

both. she sees both. she's observant like that.

⚠️ two things you cannot skip, bestie, and I mean it: - This function may sleep. she naps. she's allowed. plan accordingly 😴 - The caller must hold the corresponding wdev's mutex. lock it before you call her or it's giving chaos πŸ’€

that's part one, and no I'm not done β€” more is coming πŸ’œ

πŸ’– SEE ALSO πŸ’–

okay so this is the part where the manpage basically introduces you to everyone it knows. it's a whole extended universe, bestie. but like β€” the good kind of universe, where every single one of these is a real page you can go read with man 9. no gatekeeping here, just vibes and a genuinely massive friend group 🫢

first up, the source of truth itself, plus the two big intro pages that give you the lay of the land:


the bands, rates & caps girlies β€” channels, rates, HT/VHT/HE/EHT/UHR capabilities, plus every helper that pokes at them. these are our main characters ngl:


actions & configuration + the chandef gang β€” the section page, then every parameter struct and every chandef helper you'll ever need. channel width math lives here, it's giving very main-character energy:


survey, crypto, beacons & AP setup β€” the survey counter, the crypto knobs, and every AP/flavour-of-beacon struct. mbssid and rnr walked so passive scanning could run πŸ’…:

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

iface combos & stations β€” how many interfaces you can stack, then absolutely everything station-shaped. rate info, txq stats, SAR, mesh, OCB, txq params β€” the whole station arc:

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

scanning & BSS list handling β€” the whole scanning page, then scan requests, scheduled scans, BSS structs, auth/assoc/deauth, ibss, connect params, and the wowlan + coalesce + pattern squad. it's a lot but it's all useful, i promise 😭:

  • 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, PMK, PMSR & the wiphy universe β€” neighbor awareness networking gets its own page (iconic), then pmk/external auth, FTM ranging, OWE, mgmt frame regs, the giant cfg80211_ops, and the wiphy capability structs. struct wiphy(9) through priv_to_wiphy(9) is the wiphy lifecycle core:

  • 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)
  • 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)
  • wiphy_priv(9)
  • priv_to_wiphy(9)

wiphy lifecycle, work queues & wireless_dev β€” register it, unregister it, free it, lock it, and then queue/cancel/flush work on it (yes, including the hrtimer flavour). plus struct wireless_dev and its little helpers:


utility functions β€” channel↔frequency conversions, rate helpers, radiotap iterator, and hdrlen math. little guys, huge usefulness ✨:


data path helpers β€” 802.11↔802.3 conversions, A-MSDU checks, the IE-finding squad, RNR iteration, defragmentation, and the layer-2 update. these do the actual packet lifting fr fr:


regulatory enforcement infrastructure β€” hints, custom regd, freq reg info, and the internal regdb query. world domination (by the regdomain) starts here 🌍:


scan done / BSS inform / mlme rx β€” the calls that tell the stack what just happened: scan finished, sched scan results, BSS frames came in, BSS get/put/ref/unlink, auth timeout, assoc resp, and the unprotected mlme + michael mic failure ones. a whole notification arc 😌:


rfkill, vendor commands & test mode β€” three mini-worlds in a trench coat. rfkill state + polling, the vendor cmd/event reply helpers, and the testmode allocation/reply/event crew πŸ§ͺ:


connect / roam / station events / rx-tx status / cqm / cac β€” the big notification closer. connect params & results, roam info, port authorized, disconnect, remain-on-channel callbacks, station add/del, mgmt rx/tx status, control port, the cqm notifications, radar/cac events, gtk rekey, pmksa candidate, spurious frames, probe status, obss beacon reports, and the beaconing check config on the very end πŸ‘‘:

...and the list keeps going, bestie 😭 because apparently the SEE ALSO section for this one is huge and we're only now getting to the tail of it. Every single one below is a real (9) page in the same family, so go click around, get lost in the cross-references, it's a whole vibe πŸ¦‹

✨ still SEE ALSO (the rest of the fam) ✨

The channel-and-regulatory girlies πŸ’…

  • cfg80211_reg_check_beaconing(9)
  • cfg80211_reg_can_beacon(9)
  • cfg80211_reg_can_beacon_relax(9)
  • cfg80211_ch_switch_notify(9)
  • cfg80211_ch_switch_started_notify(9)
  • ieee80211_operating_class_to_band(9)
  • ieee80211_operating_class_to_chandef(9)
  • ieee80211_chandef_to_operating_class(9)
  • ieee80211_chandef_to_khz(9)

Registration, teardown and events 🌸

  • cfg80211_tdls_oper_request(9)
  • cfg80211_calculate_bitrate(9)
  • cfg80211_unregister_wdev(9)
  • cfg80211_register_netdevice(9)
  • cfg80211_unregister_netdevice(9)
  • struct cfg80211_ft_event_params(9)
  • cfg80211_ft_event(9)

Elements, P2P, wakeups πŸŽ€

  • cfg80211_get_p2p_attr(9)
  • ieee80211_ie_split_ric(9)
  • ieee80211_ie_split(9)
  • ieee80211_fragment_element(9)
  • cfg80211_report_wowlan_wakeup(9)
  • cfg80211_crit_proto_stopped(9)

Channels, combos, links, and the big shutdown 🫢

  • ieee80211_get_num_supported_channels(9)
  • cfg80211_check_combinations(9)
  • cfg80211_iter_combinations(9)
  • cfg80211_get_radio_idx_by_chan(9)
  • cfg80211_stop_link(9)
  • cfg80211_stop_iface(9)
  • cfg80211_shutdown_all_interfaces(9)
  • wiphy_ext_feature_set(9)
  • wiphy_ext_feature_isset(9)

The NAN cluster 🧚 (there are so many of these and honestly, iconic)

  • cfg80211_free_nan_func(9)
  • struct cfg80211_nan_match_params(9)
  • cfg80211_nan_match(9)
  • cfg80211_nan_func_terminated(9)
  • cfg80211_nan_sched_update_done(9)

Auth, PMSR, iftypes, OWE πŸ”₯

  • cfg80211_external_auth_request(9)
  • cfg80211_pmsr_report(9)
  • cfg80211_pmsr_complete(9)
  • cfg80211_iftype_allowed(9)
  • cfg80211_assoc_comeback(9)
  • cfg80211_update_owe_info_event(9)

BSS stuff, color change chaos, and 6 GHz 🌈

  • cfg80211_bss_flush(9)
  • cfg80211_bss_color_notify(9)
  • cfg80211_obss_color_collision_notify(9)
  • cfg80211_color_change_started_notify(9)
  • cfg80211_color_change_aborted_notify(9)
  • cfg80211_color_change_notify(9)
  • cfg80211_6ghz_power_type(9)

MLO, channel checks, EPCS πŸ‘‘

  • cfg80211_links_removed(9)
  • struct cfg80211_mlo_reconf_done_data(9)
  • cfg80211_mlo_reconf_add_done(9)
  • cfg80211_schedule_channels_check(9)
  • cfg80211_epcs_changed(9)

NAN again, because of course πŸ’€

  • cfg80211_next_nan_dw_notif(9)
  • cfg80211_nan_cluster_joined(9)
  • cfg80211_nan_ulw_update(9)
  • cfg80211_nan_channel_evac(9)

Debugfs, S1G, and incumbent signals πŸ™ˆ

  • wiphy_locked_debugfs_read(9)
  • wiphy_locked_debugfs_write(9)
  • cfg80211_s1g_get_start_freq_khz(9)
  • cfg80211_s1g_get_end_freq_khz(9)
  • cfg80211_s1g_get_primary_sibling(9)
  • cfg80211_incumbent_signal_notify(9)
ngl that's the whole list, no cap β€” nothing got skipped, nothing got merged, and if a name up there looks weird that's because it is that name, so type it exactly the way it's written 🫢

okay that's a wrap on cfg80211_tx_mlme_mgmt(9)!! πŸ’– this one lives over in ./include/net in the docs, and the version tag on it is October 2026 β€” so if you're reading this in some other timeline, bestie, double-check your docs before you @ me 😭 slay, go read your kernel source, ily, bye πŸŽ€βœ¨

πŸ“¦ where this page comes from