STRUCT CFG80211_CONNECT_RESP_PARAMS(9)
π NAME π
struct cfg80211_connect_resp_params β the connection response params situation, aka the manual page struct cfg80211_connect_resp_params(9) from the Kernel API Manual. Bestie, this is the struct your driver fills in when it's telling the kernel "okay so here's what happened when we tried to connect."
β¨ SYNOPSIS β¨
struct cfg80211_connect_resp_params {
int status;
const u8 *req_ie;
size_t req_ie_len;
const u8 *resp_ie;
size_t resp_ie_len;
struct cfg80211_fils_resp_params fils;
enum nl80211_timeout_reason timeout_reason;
bool assoc_encrypted;
const u8 *ap_mld_addr;
u16 valid_links;
struct {
const u8 *addr;
const u8 *bssid;
struct cfg80211_bss *bss;
u16 status;
} links[IEEE80211_MLD_MAX_NUM_LINKS];
};
Like, that's the whole shape of it. Slay. Let's go through every single member because we are not skipping any of them, periodt. π
π¦ MEMBERS π¦
statusβ the status code, bestie. UseWLAN_STATUS_SUCCESSfor a successful connection. If your device literally cannot give you the real status code for failures, useWLAN_STATUS_UNSPECIFIED_FAILUREinstead β no cap, that's the fallback. And if this call is being used to report a failure due to a timeout (think: not receiving an Authentication frame from the AP) instead of an explicit rejection by the AP, then-1is used to indicate "yes this is a failure, but we don't have a status code for it." In that case,timeout_reasonis what reports the reason for the timeout. πreq_ieβ the Association request IEs. May beNULL, so don't panic.req_ie_lenβ the Association request IEs length. It's giving "length of the thing above." πΈresp_ieβ the Association response IEs. Also may beNULL.resp_ie_lenβ the Association response IEs length. Matching pair, we love to see it.filsβ FILS connection response parameters. That's it, that's the member. π§timeout_reasonβ the reason for the connection timeout. This one's used when the connection fails due to a timeout instead of an explicit rejection from the AP.NL80211_TIMEOUT_UNSPECIFIEDis what you use when the timeout reason is not known. Important detail incoming: this value is used only ifstatus < 0, to indicate the failure is due to a timeout and not an explicit rejection by the AP. In all other cases (status >= 0) this value is ignored. πassoc_encryptedβ the driver should set this flag to indicate that the (Re)Association Request/Response frames are transmitted encrypted over the air. Encrypted over the air, iykyk. π₯ap_mld_addrβ for an MLO connection, this is the MLD address of the AP. OtherwiseNULL. Simple as that.valid_linksβ for an MLO connection, this is the BIT mask of the valid link ids. Otherwise zero. Bitmask girlies rise. πlinksβ for an MLO connection, this contains link info for the valid links indicated usingvalid_links. For a non-MLO connection,links[0]contains the connected AP info. πlinks.addrβ for an MLO connection, the MAC address of the STA link. OtherwiseNULL.links.bssidβ for an MLO connection, the MAC address of the AP link. For a non-MLO connection,links[0].bssidpoints to the BSSID of the AP (may beNULL). π«Άlinks.bssβ for an MLO connection, the entry of bss to which the STA link is connected. For a non-MLO connection,links[0].bsspoints to the entry of bss to which the STA is connected. It can be obtained throughcfg80211_get_bss(may beNULL). And listen β it is recommended to store the bss from the connect_request and hold a reference to it and return through this param, so you avoid a warning if the bss is expired during the connection, esp. for those drivers implementing connect op. Only one parameter amongbssidandbssneeds to be specified. Not both, bestie. Pick one. πlinks.statusβ per-link status code. To report a status code that's notWLAN_STATUS_SUCCESSfor a given link, it must also be in thevalid_linksbitmap and may have a BSS pointer (which is then released). β
ok that's part 1, the vibes continue in part 2 β don't go anywhere π
π SEE ALSO π
okay bestie, this is the part where the manpage just dumps the entire friend group on you π like not even kidding, this is the biggest "and also" ever. Every single one of these lil icons lives in the kernel file ./include/net/cfg80211.h, and they're all gonna want their own β¨ moment. Drink some water, stretch your wrists, and let's get through the roster together π«Ά
- 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)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),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),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),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),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),wiphy_rfkill_set_hw_state_reason(9),wiphy_rfkill_start_polling(9),wiphy_rfkill_stop_polling(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)struct cfg80211_fils_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 genuinely the whole friend group π every one of these has its own page, so if you clicked a name and got a whole new manpage, that's why β you're not lost, you're just networking β¨π
and yeah, that list justβ¦ ends with struct cfg80211_beaconing_check_config(9), comma and all, no goodbye, no "anyway"β which is so on brand for a kernel doc honestly π anyway, there's still more coming so don't go anywhere bestie ππ¦
okay so the cross-refs keep coming and honestly? they ate β¨ this is the rest of the list, bestie β every single one, no skipping, no cap:
cfg80211_reg_check_beaconing(9)β the "can I even beacon here" sanity check πcfg80211_reg_can_beacon(9)cfg80211_reg_can_beacon_relax(9)cfg80211_ch_switch_notify(9)cfg80211_ch_switch_started_notify(9)β the channel-switch announcement girls, started vs done, we love a duo πieee80211_operating_class_to_band(9)ieee80211_operating_class_to_chandef(9)ieee80211_chandef_to_operating_class(9)ieee80211_chandef_to_khz(9)β the conversion quartet, they're giving "same energy, different units" π¦cfg80211_tdls_oper_request(9)cfg80211_calculate_bitrate(9)β math but make it β¨wirelessβ¨cfg80211_unregister_wdev(9)cfg80211_register_netdevice(9)cfg80211_unregister_netdevice(9)β register/unregister, the original situationship πstruct cfg80211_ft_event_params(9)cfg80211_ft_event(9)cfg80211_get_p2p_attr(9)ieee80211_ie_split_ric(9)ieee80211_ie_split(9)ieee80211_fragment_element(9)β the IE-splitting friend group, they literally never stop parsing πΈcfg80211_report_wowlan_wakeup(9)cfg80211_crit_proto_stopped(9)ieee80211_get_num_supported_channels(9)cfg80211_check_combinations(9)cfg80211_iter_combinations(9)cfg80211_get_radio_idx_by_chan(9)β combo checking squad, lowkey the most underrated π«Άcfg80211_stop_link(9)cfg80211_stop_iface(9)cfg80211_shutdown_all_interfaces(9)β this one is giving "everyone out of the pool" πwiphy_ext_feature_set(9)wiphy_ext_feature_isset(9)β setter and getter, a matched set, 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)β the NAN girlies, they have their own whole universe ngl π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)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)β the whole color-change cinematic universe, started/aborted/done, we're seated πcfg80211_6ghz_power_type(9)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)cfg80211_next_nan_dw_notif(9)cfg80211_nan_cluster_joined(9)cfg80211_nan_ulw_update(9)cfg80211_nan_channel_evac(9)β okay the NAN section of this list is long and we respect her for it π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)β and the list literally ends here, what a finale π₯
and that's a wrap on the whole thing, bestie π«Ά the page lives at ./include/net, the date on it is October 2026, and the header it's filed under is struct cfg8..._resp_params(9) (yes, truncated exactly like that, we don't fix it, we respect it π
). go forth and read the cross-refs, iykyk π
π¦ 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