ieee80211_ge...r_iftype_cap(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… ieee80211_get_uhr_iftype_cap β€” a Kernel API Manual moment

okay so welcome to the Kernel API Manual, bestie 🫢 this is ieee80211_get_uhr_iftype_cap(9) and she's here to hand you the UHR capabilities for an sband's iftype, no cap.


✨ NAME ✨

ieee80211_get_uhr_iftype_cap β€” return UHR capabilities for an sband's iftype

like literally that's the whole job. she gets the UHR cap struct for a given iftype on an sband. iconic behaviour, honestly πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

const struct ieee80211_sta_uhr_cap * ieee80211_get_uhr_iftype_cap (const
       struct ieee80211_supported_band *sband , enum nl80211_iftype iftype );

the way this returns a const struct ieee80211_sta_uhr_cap *… we love a const-correct king πŸ’œ copy it exactly, don't come for me.


πŸŽ€ ARGUMENTS πŸŽ€

  • sband β€” the sband you wanna search for the iftype on πŸ” that's the one, bestie
  • iftype β€” an enum nl80211_iftype, aka the vibe of the interface you're asking about

🌸 RETURN 🌸

a pointer to the struct ieee80211_sta_uhr_cap, or NULL if none is found 😭 so like… always check her before you dereference, fr fr. no found = no pointer, that's the whole deal.


more parts incoming, don't go anywhere 🧚

πŸ’– SEE ALSO πŸ’–

okay bestie, this is the part where the page goes "here's literally everyone else you should go read" and it is a lot of friends. like, the entire extended family showed up to the group chat. grab a snack. πŸ“

first up, the actual header file this whole situation lives in, plus the two "start here" pages:

  • Kernel file ./include/net/cfg80211.h
  • Introduction(9)
  • Device registration(9)

then the wireless-capability crew β€” channels, rates, BSS types, privacy, all the HT/VHT/HE/EHT/UHR energy:

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

and the sband/iftype clique, aka this function's direct besties:


next block is Actions and configuration(9) and honestly it's giving "everything the driver can be asked to do". skimming order preserved, no skips, periodt:

survey + crypto + the whole AP-side glam 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)

stations, links, rates, and every struct station_info adjacent icon:

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

πŸ“ then Scanning and BSS list handling(9), which is lowkey a whole saga:

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

and the power-save / wowlan corner, because sleeping is also a whole personality:

  • 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) β€” yes it gets its own little chunk, it's an icon:

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

then more auth/pmk/pmsr besties:

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

πŸ‘‘ and now the wiphy cinematic universe, aka the main character energy section:

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

the wiphy accessor + lifecycle gang (priv, dev, name, register, free, lock β€” the whole glow-up sequence):

and the work-queue family, because scheduling things is their love language:

plus struct wireless_dev and its two ride-or-dies:


πŸ¦‹ Utility functions(9) β€” the little helpers that carry the whole operation:

πŸ’€ then Data path helpers(9), the "actually move the packets" girlies:


🌈 Regulatory enforcement infrastructure(9) β€” the vibes police, respectfully:

and Internal regulatory db functions(9):


πŸŽ€ okay so now we're in the notifications-and-BSS-inform block, which is LONG. deep breath. every single one, in order:

🫢 RFkill integration(9), tiny but mighty:

then Vendor commands(9) and Test mode(9)</hyperlinked… sorry, here:


⭐ and the final stretch, the connect/roam/mgmt-tx/cqm notification icons, all present and accounted for:

and yeah β€” that list just keeps going, bestie. like genuinely not done. no cap. πŸ”₯

like okay the whole regulatory-and-channel-switch corner of the universe, we stan a consistent friend group πŸ’–

the conversions, bestie!! it's giving "we have a function for that" and honestly? iconic ✨

register/unregister era, plus bitrate math because someone has to do it πŸŽ€

note the struct ones!! struct cfg80211_ft_event_params(9) is a struct page, not a function page, so if you're out here calling it like a function… no. don't. πŸ™ˆ

wakeups, crit protos, and the combinations girlies β€” very "we checked, we iterated, we got the radio index by chan" of them πŸ’…

the shutdown crew!! three tiers of "make it stop", from one link to literally everything 😭

set it, then check if it's set. the duality of wiphy ext features, we love a matched pair 🫢

NAN section!! also yes struct cfg80211_nan_match_params(9) has a struct on it, don't come for me, that's just how she's listed πŸ‘‘

auth requests, PMSR reports, and the iconic cfg80211_assoc_comeback(9) β€” the name alone is main character energy, no notes 🌟

the color-change cinematic universe: started, aborted, and the regular one. three notifications and a collision, it's giving ✨drama✨ but in a spectrum-efficiency way

6 GHz, MLO reconf, and channels checks β€” again, struct cfg80211_mlo_reconf_done_data(9) is a struct page, so treat her with the respect a struct deserves πŸŽ€

more NAN!! she really said "one cluster joined, one ULW update, one channel evac" and honestly? slay 🌸

debugfs but locked, so like β€” read and write, but make it responsible πŸ¦‹

S1G trio: start freq, end freq, primary sibling. three little functions, all in kHz where it matters, and yes the units are in the name, we love a self-documenting icon πŸ’œ

and the last one on the list, standing there all by herself: cfg80211_incumbent_signal_notify(9). she's the finale. she's the periodt. πŸ’…


bestie real talk for one sec: some of these are functions and some are struct pages β€” the struct keyword is literally in the name for a reason, so read the page before you try to call one like a function. that's it, that's the warning, no cap 🫢

and that's the whole page, start to finish!! you made it through every .9 in the extended cfg80211 / mac80211 family, and I'm so proud of you honestly πŸ₯Ή go forth, read the specific pages you actually need, and remember the golden rule: the man page is your bestie, not your enemy ✨

this gem lives in ./include/net, and this printing is dated October 2026 β€” so if your tree looks different, that's why, and you're still doing amazing sweetie πŸŽ€πŸ’– see you in the next man page!! πŸ’«

πŸ“¦ where this page comes from