cfg80211_ext...auth_request(9)
โจ cfg80211_external_auth_request โ the kernel API manual, but make it make sense ๐
okay so bestie, welcome to part one of the glow-up of cfg80211_ext...auth_request(9), straight out of the Kernel API Manual. she's a kernel function, she's doing wireless things, and she is lowkey the main character of this particular page. let's get into it ๐ซถ
๐ธ NAME ๐ธ
cfg80211_external_auth_request โ literally just: a userspace request for authentication. that's the whole vibe. userspace is asking the kernel to do an auth thing, and this is the function that carries that request. iconic behavior, no notes โจ
๐ฆ SYNOPSIS ๐ฆ
here's the signature, copied exactly so nobody comes for me in the replies:
int cfg80211_external_auth_request (struct net_device *netdev , struct
cfg80211_external_auth_params *params , gfp_t gfp );
she takes three things and returns an int. that's it. that's the girl ๐
๐ ARGUMENTS ๐
okay so let's meet the cast, one by one:
netdevโ the network device. the actual interface this whole thing is happening on. like, the whole point ๐งparamsโ the external authentication parameters. all the juicy details about the auth request live in here ๐gfpโ the allocation flags. you know the drill, this is how the memory allocation behaves. standard kernel business, but make it cute ๐
โญ RETURN โญ
0on success ๐ slay< 0on error ๐ so if you get a negative number, something went sideways, bestie. check yourself before you wreck yourself.
no cap, part two is coming right up โ don't go anywhere, the rest of this page is not done yet ๐
๐ SEE ALSO ๐
okay bestie, this is the part where the page hands you the entire friend group ๐
like, every single cross-reference the authors could think of, all tagged with (9) so you know exactly which man page section to go read next. It's giving "group chat with 300 members and everybody's iconic." Buckle up ๐
Kernel file ./include/net/cfg80211.h Introduction(9)Device registration(9)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)_ieee80211_set_sband_iftype_data(9)ieee80211_set_sband_iftype_data(9)for_each_sband_iftype_data(9)ieee80211_get_sband_iftype_data(9)ieee80211_get_he_iftype_cap(9)ieee80211_get_he_6ghz_capa(9)ieee80211_get_eht_iftype_cap(9)ieee80211_get_uhr_iftype_cap(9)wiphy_read_of_freq_limits(9)
๐ธ and nowโฆ Actions and configuration(9) ๐ธ
literally the whole chandef cinematic universe, no cap:
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)cfg80211_get_chandef_type(9)cfg80211_chandef_create(9)cfg80211_chandef_identical(9)cfg80211_chandef_is_edmg(9)cfg80211_chandef_is_s1g(9)cfg80211_chandef_compatible(9)nl80211_chan_width_to_mhz(9)cfg80211_chandef_get_width(9)cfg80211_chandef_valid(9)cfg80211_chandef_usable(9)cfg80211_chandef_dfs_required(9)cfg80211_chandef_dfs_usable(9)cfg80211_chandef_dfs_cac_time(9)cfg80211_chandef_primary(9)cfg80211_chandef_npca_valid(9)cfg80211_chandef_add_npca(9)cfg80211_chandef_add_dbe(9)nl80211_send_chandef(9)ieee80211_chandef_max_power(9)cfg80211_chandef_s1g_pri_width(9)cfg80211_any_usable_channels(9)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)
๐ฆ Scanning and BSS list handling(9) ๐ฆ
the "who's out there and what are they broadcasting" era, honestly obsessed:
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)
๐ง Neighbor Awareness Networking (NAN)(9) ๐ง
and tbh it keeps going, the wiphy lore is DEEP:
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)set_wiphy_dev(9)wiphy_dev(9)wiphy_name(9)wiphy_new_nm(9)wiphy_new(9)wiphy_register(9)rcu_dereference_wiphy(9)wiphy_dereference(9)get_wiphy_regdom(9)wiphy_unregister(9)wiphy_free(9)wiphy_lock(9)wiphy_unlock(9)wiphy_work_queue(9)wiphy_work_cancel(9)wiphy_work_flush(9)wiphy_delayed_work_queue(9)wiphy_delayed_work_cancel(9)wiphy_delayed_work_flush(9)wiphy_delayed_work_pending(9)wiphy_hrtimer_work_queue(9)wiphy_hrtimer_work_cancel(9)wiphy_hrtimer_work_flush(9)wiphy_hrtimer_work_pending(9)enum ieee80211_ap_reg_power(9)struct wireless_dev(9)wdev_priv(9)wdev_chandef(9)
โญ Utility functions(9) โญ
the little helpers that slay quietly in the background ๐ซถ
ieee80211_channel_equal(9)ieee80211_channel_to_khz(9)ieee80211_channel_to_freq_khz(9)ieee80211_channel_to_frequency(9)ieee80211_freq_khz_to_channel(9)ieee80211_frequency_to_channel(9)ieee80211_get_channel_khz(9)ieee80211_get_channel(9)cfg80211_channel_is_psc(9)ieee80211_radio_freq_range_valid(9)cfg80211_radio_chandef_valid(9)cfg80211_wdev_channel_allowed(9)ieee80211_get_response_rate(9)ieee80211_mandatory_rates(9)struct ieee80211_radiotap_iterator(9)ieee80211_get_hdrlen_from_skb(9)ieee80211_hdrlen(9)ieee80211_get_mesh_hdrlen(9)
๐ฅ Data path helpers(9) ๐ฅ
ieee80211_data_to_8023_exthdr(9)ieee80211_data_to_8023(9)ieee80211_is_valid_amsdu(9)ieee80211_amsdu_to_8023s(9)ieee80211_get_8023_tunnel_proto(9)ieee80211_strip_8023_mesh_hdr(9)cfg80211_classify8021d(9)cfg80211_find_elem_match(9)cfg80211_find_ie_match(9)cfg80211_find_elem(9)cfg80211_find_ie(9)cfg80211_find_ext_elem(9)cfg80211_find_ext_ie(9)cfg80211_find_vendor_elem(9)cfg80211_find_vendor_ie(9)enum cfg80211_rnr_iter_ret(9)cfg80211_iter_rnr(9)cfg80211_defragment_element(9)cfg80211_send_layer2_update(9)
๐ Regulatory enforcement infrastructure(9) ๐
respect the rules bestie, the regulators are watching ๐
regulatory_hint(9)regulatory_set_wiphy_regd(9)regulatory_set_wiphy_regd_sync(9)wiphy_apply_custom_regulatory(9)freq_reg_info(9)reg_initiator_name(9)regulatory_pre_cac_allowed(9)
๐ Internal regulatory db functions(9) ๐
reg_query_regdb_wmm(9)cfg80211_scan_done(9)cfg80211_sched_scan_results(9)cfg80211_sched_scan_stopped(9)cfg80211_sched_scan_stopped_locked(9)cfg80211_inform_bss_frame_data(9)cfg80211_gen_new_bssid(9)cfg80211_is_element_inherited(9)cfg80211_merge_profile(9)enum cfg80211_bss_frame_type(9)cfg80211_get_ies_channel_number(9)cfg80211_ssid_eq(9)cfg80211_inform_bss_data(9)__cfg80211_get_bss(9)cfg80211_get_bss(9)cfg80211_ref_bss(9)cfg80211_put_bss(9)cfg80211_unlink_bss(9)cfg80211_bss_iter(9)cfg80211_rx_mlme_mgmt(9)cfg80211_auth_timeout(9)struct cfg80211_rx_assoc_resp_data(9)cfg80211_rx_assoc_resp(9)struct cfg80211_assoc_failure(9)cfg80211_assoc_failure(9)cfg80211_tx_mlme_mgmt(9)cfg80211_rx_unprot_mlme_mgmt(9)cfg80211_michael_mic_failure(9)cfg80211_ibss_joined(9)cfg80211_notify_new_peer_candidate(9)
๐ RFkill integration(9) ๐
๐ Vendor commands(9) ๐
cfg80211_vendor_cmd_alloc_reply_skb(9)cfg80211_vendor_cmd_reply(9)cfg80211_vendor_cmd_get_sender(9)cfg80211_vendor_event_alloc(9)cfg80211_vendor_event_alloc_ucast(9)cfg80211_vendor_event(9)
๐ง Test mode(9) ๐ง
cfg80211_testmode_alloc_reply_skb(9)cfg80211_testmode_reply(9)cfg80211_testmode_alloc_event_skb(9)cfg80211_testmode_event(9)
๐ซ and the rest of the whole entire extended universe ๐ซ
no because why is this list still going ๐ญ it's giving infinity scarf:
struct cfg80211_fils_resp_params(9)struct cfg80211_connect_resp_params(9)cfg80211_connect_done(9)cfg80211_connect_bss(9)cfg80211_connect_result(9)cfg80211_connect_timeout(9)struct cfg80211_roam_info(9)cfg80211_roamed(9)cfg80211_port_authorized(9)cfg80211_disconnected(9)cfg80211_ready_on_channel(9)cfg80211_remain_on_channel_expired(9)cfg80211_tx_mgmt_expired(9)cfg80211_sinfo_alloc_tid_stats(9)cfg80211_link_sinfo_alloc_tid_stats(9)cfg80211_sinfo_release_content(9)cfg80211_new_sta(9)cfg80211_del_sta_sinfo(9)cfg80211_del_sta(9)cfg80211_conn_failed(9)struct cfg80211_rx_info(9)cfg80211_rx_mgmt_ext(9)cfg80211_rx_mgmt_khz(9)cfg80211_rx_mgmt(9)struct cfg80211_tx_status(9)cfg80211_mgmt_tx_status_ext(9)cfg80211_mgmt_tx_status(9)cfg80211_control_port_tx_status(9)cfg80211_rx_control_port(9)cfg80211_cqm_rssi_notify(9)cfg80211_cqm_pktloss_notify(9)cfg80211_cqm_txe_notify(9)cfg80211_cqm_beacon_loss_notify(9)__cfg80211_radar_event(9)cfg80211_sta_opmode_change_notify(9)cfg80211_cac_event(9)cfg80211_background_cac_abort(9)cfg80211_gtk_rekey_notify(9)cfg80211_pmksa_candidate_notify(9)cfg80211_rx_spurious_frame(9)cfg80211_rx_unexpected_4addr_frame(9)cfg80211_probe_status(9)cfg80211_report_obss_beacon_khz(9)cfg80211_report_obss_beacon(9)struct cfg80211_beaconing_check_config(9)
likeโฆ that's the whole contact list bestie ๐ every single one is a real (9) page, so if something in this manpage was confusing you, odds are one of these has the actual deep dive. go click around, it's giving library crawl ๐โจ
cfg80211_reg_check_beaconing(9)โ the regulatory bestie that checks if beaconing is even allowed rn ๐cfg80211_reg_can_beacon(9)โ can you beacon? that's the whole vibe check โจcfg80211_reg_can_beacon_relax(9)โ same question but lowkey chill about it ๐ธcfg80211_ch_switch_notify(9)โ telling everyone the channel moved, no cap ๐ขcfg80211_ch_switch_started_notify(9)โ โwe're starting the switch, hold onโ energy ๐ซถieee80211_operating_class_to_band(9)โ glow-up from operating class to band ๐ฅieee80211_operating_class_to_chandef(9)โ operating class in, channel definition out, iconic ๐ieee80211_chandef_to_operating_class(9)โ the reverse trip, we love a two-way street ๐ฆieee80211_chandef_to_khz(9)โ numbers in kHz, because units matter bestie ๐cfg80211_tdls_oper_request(9)โ TDLS operation request, peer-to-peer main character energy ๐cfg80211_calculate_bitrate(9)โ doing the bitrate math so you don't have to ๐งฎcfg80211_unregister_wdev(9)โ time to unregister that wireless device, bye bestie ๐cfg80211_register_netdevice(9)โ registering a netdevice, putting it on the map ๐บ๏ธcfg80211_unregister_netdevice(9)โ and taking it right back off again ๐struct cfg80211_ft_event_params(9)โ the lil struct holding FT event params ๐cfg80211_ft_event(9)โ fast transition event, speedy lil thing โกcfg80211_get_p2p_attr(9)โ grabbing a P2P attribute for you ๐ieee80211_ie_split_ric(9)โ splitting IEs with RIC in the mix, fancy ๐งieee80211_ie_split(9)โ the plain split, no RIC, still slays โ๏ธieee80211_fragment_element(9)โ chopping an element into fragments ๐ชcfg80211_report_wowlan_wakeup(9)โ wakeup on WLAN reporting, ur device woke up and wants attention ๐cfg80211_crit_proto_stopped(9)โ critical protocol stopped, that's a wrap ๐ฌieee80211_get_num_supported_channels(9)โ how many channels we got? let's count ๐ขcfg80211_check_combinations(9)โ checking if your channel/iface combos are even legal ๐cfg80211_iter_combinations(9)โ same energy but iterating through them ๐cfg80211_get_radio_idx_by_chan(9)โ finding the radio index for a channel, detective era ๐ต๏ธcfg80211_stop_link(9)โ stopping a link, respectfully ๐cfg80211_stop_iface(9)โ stopping an interface, also respectfully โcfg80211_shutdown_all_interfaces(9)โ all of them. every single one. goodbye ๐wiphy_ext_feature_set(9)โ setting an extended feature flag โจwiphy_ext_feature_isset(9)โ is it set tho? asking for a friend ๐งcfg80211_free_nan_func(9)โ freeing a NAN function, cleanup szn ๐งนstruct cfg80211_nan_match_params(9)โ NAN match params, struct edition ๐ฆcfg80211_nan_match(9)โ it's a NAN match, we're matching ๐คcfg80211_nan_func_terminated(9)โ NAN function terminated, it's over babe ๐cfg80211_nan_sched_update_done(9)โ NAN schedule update finished, check โcfg80211_pmsr_report(9)โ PMSR report time, results are in ๐cfg80211_pmsr_complete(9)โ PMSR complete, mission accomplished ๐cfg80211_iftype_allowed(9)โ is this interface type allowed? asking the important questions ๐ญcfg80211_assoc_comeback(9)โ association comeback, the comeback is always real ๐cfg80211_update_owe_info_event(9)โ OWE info event update, opportunistic wireless encryption things ๐cfg80211_bss_flush(9)โ flushing the BSS list, out with the old ๐ฝcfg80211_bss_color_notify(9)โ notifying about BSS color, painted and pretty ๐จcfg80211_obss_color_collision_notify(9)โ OBSS color collision, the colors clashed ๐ญcfg80211_color_change_started_notify(9)โ color change started, transformation arc begins ๐ฆcfg80211_color_change_aborted_notify(9)โ nvm, aborted, arc cancelled โcfg80211_color_change_notify(9)โ color change notification, the simple iconic version ๐ซcfg80211_6ghz_power_type(9)โ 6 GHz power type, this one's very 2026 of it ๐กcfg80211_links_removed(9)โ links removed, gone, reduced to atoms ๐struct cfg80211_mlo_reconf_done_data(9)โ MLO reconfig done data, the struct that says โwe did itโ ๐cfg80211_mlo_reconf_add_done(9)โ MLO reconfig add finished, added and slaying โcfg80211_schedule_channels_check(9)โ scheduling a channels check, future plans bestie ๐cfg80211_epcs_changed(9)โ EPCS changed, update ur mental model ๐cfg80211_next_nan_dw_notif(9)โ next NAN discovery window notification, up next โญ๏ธcfg80211_nan_cluster_joined(9)โ joined a NAN cluster, we're in the group chat now ๐ซcfg80211_nan_ulw_update(9)โ NAN ULW update, fresh info incoming ๐ฌcfg80211_nan_channel_evac(9)โ NAN channel evacuation, everybody out ๐โโ๏ธwiphy_locked_debugfs_read(9)โ debugfs read while locked, careful bestie ๐wiphy_locked_debugfs_write(9)โ debugfs write while locked, same warning, still locked ๐cfg80211_s1g_get_start_freq_khz(9)โ S1G start frequency in kHz, very specific, very demure ๐ฏcfg80211_s1g_get_end_freq_khz(9)โ S1G end frequency in kHz, the other end ๐ฏcfg80211_s1g_get_primary_sibling(9)โ fetching the S1G primary sibling, family reunion ๐ฏcfg80211_incumbent_signal_notify(9)โ incumbent signal notification, the original occupant said hi ๐
okay that's the whole cross-reference crew, all 63 of them, no skips, no cuts ๐ if a name in here looks unfamiliar, that's literally your sign to go read that page next, iykyk ๐ฆ
this lil manual page ships from ./include/net (the kernel API manual home base) and it's stamped October 2026, so yes, it is serving future-flavoured, freshly generated documentation realness โญ go be iconic with it, mwah ๐ซถ๐
๐ฆ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms