regulatory_pre_cac_allowed(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… regulatory_pre_cac_allowed β€” a Kernel API Manual moment (section 9, bestie)

okay so we're deep in the kernel API manual and this one is literally called regulatory_pre_cac_allowed πŸ¦‹


✨ NAME ✨

regulatory_pre_cac_allowed β€” the function that does a vibe check on whether pre-CAC is even allowed in the current regdom πŸ‘‘


🌸 SYNOPSIS 🌸

bool regulatory_pre_cac_allowed (struct wiphy *wiphy );

that's it. one arg. she's lowkey minimal and we respect it πŸ’…


πŸŽ€ ARGUMENTS πŸŽ€

  • wiphy β€” the wiphy you're checking the pre-CAC capability for. like, this is the wiphy in question, bestie, no cap 🫢

πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the tea: pre-CAC is allowed only in some regdomains β€” notable example being ETSI ✨. that's it, that's the whole rule. everywhere else? not it. πŸ™ˆ

iykyk β€” regdomain dependent behaviour, so don't go assuming it's a yes everywhere πŸ’€

⭐ RETURN ⭐

  • true β€” allowed, slay πŸŽ‰
  • false β€” not allowed, and that's on the regdom 😭

more of this page is still loading, stay tuned bestie πŸ§šπŸ’œ

🌈 SEE ALSO 🌈

okay bestie, this is the part of the page where the kernel just dumps the entire friend group on you 😭 and like β€” it's a lot. it's giving "tag yourself, i'm wiphy_lock(9)". every single one of these is a real link, no cap, so go click around. the whole fam lives in ./include/net/cfg80211.h:

  • Kernel file ./include/net/cfg80211.h β€” the mothership πŸ’– everything below is in here
  • Introduction(9) β€” start here bestie, this is the doorway ✨
  • Device registration(9) β€” how your device gets its whole identity, main character energy πŸŽ€
  • enum ieee80211_channel_flags(9) β€” channel flags, the little stickers on each channel
  • struct ieee80211_channel(9) β€” the channel herself πŸ‘‘
  • enum ieee80211_rate_flags(9) β€” flagging the rates
  • enum ieee80211_bss_type(9) β€” what kind of BSS we're dealing with
  • enum ieee80211_privacy(9) β€” privacy!! πŸ™ˆ
  • struct ieee80211_rate(9) β€” she's got a rate, she's got a flag
  • struct ieee80211_he_obss_pd(9) β€” HE OBSS PD, say it three times fast
  • struct cfg80211_he_bss_color(9) β€” the BSS color, lowkey iconic 🎨
  • struct ieee80211_sta_ht_cap(9) β€” HT caps, the classic
  • struct ieee80211_sta_vht_cap(9) β€” VHT caps, the upgrade ✨
  • struct ieee80211_sta_he_cap(9) β€” HE caps, the glow-up
  • struct ieee80211_eht_mcs_nss_supp(9) β€” say it with your chest, MCS/NSS support πŸ’…
  • struct ieee80211_sta_eht_cap(9) β€” EHT caps, she's new here
  • struct ieee80211_sta_uhr_cap(9) β€” UHR caps, literally beyond
  • struct ieee80211_sband_iftype_data(9) β€” sband + iftype, the duo 🀝
  • enum ieee80211_edmg_bw_config(9) β€” EDMG bandwidth config
  • struct ieee80211_edmg(9) β€” plain EDMG, no notes
  • struct ieee80211_sta_s1g_cap(9) β€” S1G caps, niche and proud of it πŸ¦‹
  • struct ieee80211_supported_band(9) β€” the band that's supported, periodt
  • _ieee80211_set_sband_iftype_data(9) β€” the underscore version, the understudy
  • ieee80211_set_sband_iftype_data(9) β€” and the actual setter
  • for_each_sband_iftype_data(9) β€” a loop macro, we love a for_each 🌸
  • ieee80211_get_sband_iftype_data(9) β€” getter behaviour, get her
  • ieee80211_get_he_iftype_cap(9) β€” HE cap by iftype
  • ieee80211_get_he_6ghz_capa(9) β€” HE cap but make it 6GHz ⭐
  • ieee80211_get_eht_iftype_cap(9) β€” EHT cap by iftype
  • ieee80211_get_uhr_iftype_cap(9) β€” UHR cap by iftype
  • wiphy_read_of_freq_limits(9) β€” reading freq limits out of OF, good luck babe 🫢

then the big family arrives β€” Actions and configuration, the section that ate:

  • Actions and configuration(9) β€” the whole section page, go there for the deep lore
  • struct vif_params(9) β€” vif params, tiny but mighty
  • struct key_params(9) β€” keys!! πŸ”‘
  • struct cfg80211_chan_def(9) β€” the chan def, she's everywhere, you'll see her name like 15 more times in this list
  • struct cfg80211_tid_cfg(9) β€” TID config
  • struct cfg80211_tid_config(9) β€” TID config the struct, different from the one above, do not @ me
  • struct cfg80211_fils_aad(9) β€” FILS AAD, acronym soup fr fr
  • struct cfg80211_set_hw_timestamp(9) β€” hw timestamp time ⏰
  • cfg80211_get_chandef_type(9) β€” get the chandef type
  • cfg80211_chandef_create(9) β€” create the chandef
  • cfg80211_chandef_identical(9) β€” are these two chandefs twins? πŸ‘―
  • cfg80211_chandef_is_edmg(9) β€” is it EDMG?
  • cfg80211_chandef_is_s1g(9) β€” is it S1G?
  • cfg80211_chandef_compatible(9) β€” are they compatible, are they meant to be πŸ’ž
  • nl80211_chan_width_to_mhz(9) β€” width in MHz, math girlie math
  • cfg80211_chandef_get_width(9) β€” get the width
  • cfg80211_chandef_valid(9) β€” vibe check the chandef βœ…
  • cfg80211_chandef_usable(9) β€” is it usable though
  • cfg80211_chandef_dfs_required(9) β€” do we need DFS πŸ‘€
  • cfg80211_chandef_dfs_usable(9) β€” DFS but usable
  • cfg80211_chandef_dfs_cac_time(9) β€” the CAC time, important, remember her
  • cfg80211_chandef_primary(9) β€” the primary channel 🌟
  • cfg80211_chandef_npca_valid(9) β€” NPCA valid?
  • cfg80211_chandef_add_npca(9) β€” add NPCA
  • cfg80211_chandef_add_dbe(9) β€” add DBE
  • nl80211_send_chandef(9) β€” send the chandef out into the world πŸ•ŠοΈ
  • ieee80211_chandef_max_power(9) β€” max power, she's loud
  • cfg80211_chandef_s1g_pri_width(9) β€” S1G primary width
  • cfg80211_any_usable_channels(9) β€” literally any usable channels, please πŸ™
  • enum survey_info_flags(9) β€” survey flags
  • struct survey_info(9) β€” survey info, she's doing research
  • struct cfg80211_crypto_settings(9) β€” crypto settings πŸ”
  • struct cfg80211_mbssid_config(9) β€” MBSSID config
  • struct cfg80211_mbssid_elems(9) β€” MBSSID elems
  • struct cfg80211_rnr_elems(9) β€” RNR elems
  • struct cfg80211_beacon_data(9) β€” beacon data πŸ“‘
  • struct cfg80211_acl_data(9) β€” ACL data
  • struct cfg80211_fils_discovery(9) β€” FILS discovery, cute name honestly
  • struct cfg80211_unsol_bcast_probe_resp(9) β€” the longest struct name in the group chat 😭
  • struct cfg80211_s1g_short_beacon(9) β€” short beacon, small but slays
  • struct cfg80211_ap_settings(9) β€” AP settings, the whole fit πŸ‘—
  • struct cfg80211_ap_update(9) β€” AP update
  • struct cfg80211_csa_settings(9) β€” CSA settings
  • struct cfg80211_color_change_settings(9) β€” color change settings 🎨
  • struct iface_combination_params(9) β€” iface combo params
  • enum station_parameters_apply_mask(9) β€” apply mask
  • struct sta_txpwr(9) β€” sta tx power
  • struct link_station_parameters(9) β€” link station params
  • struct link_station_del_parameters(9) β€” link station del params, she's leaving ✌️
  • struct cfg80211_ttlm_params(9) β€” TTLM params
  • struct station_parameters(9) β€” station params
  • struct station_del_parameters(9) β€” station del params
  • enum cfg80211_station_type(9) β€” station type
  • cfg80211_check_station_change(9) β€” check the station change, do your checks bestie
  • enum rate_info_flags(9) β€” rate info flags
  • enum rate_info_bw(9) β€” rate info bandwidth
  • struct rate_info(9) β€” rate info
  • enum bss_param_flags(9) β€” BSS param flags
  • struct sta_bss_parameters(9) β€” sta BSS params
  • struct cfg80211_txq_stats(9) β€” txq stats πŸ“Š
  • struct cfg80211_tid_stats(9) β€” TID stats
  • struct link_station_info(9) β€” link station info
  • struct station_info(9) β€” station info
  • struct cfg80211_sar_sub_specs(9) β€” SAR sub specs
  • struct cfg80211_sar_specs(9) β€” SAR specs
  • struct cfg80211_sar_freq_ranges(9) β€” SAR freq ranges
  • struct cfg80211_sar_capa(9) β€” SAR capabilities
  • cfg80211_get_station(9) β€” get the station
  • enum monitor_flags(9) β€” monitor flags πŸ‘€
  • enum mpath_info_flags(9) β€” mpath info flags
  • struct mpath_info(9) β€” mpath info
  • enum wiphy_bss_param_flags(9) β€” wiphy BSS param flags
  • struct bss_parameters(9) β€” BSS parameters
  • struct mesh_config(9) β€” mesh config πŸ•ΈοΈ
  • struct mesh_setup(9) β€” mesh setup
  • struct ocb_setup(9) β€” OCB setup
  • struct ieee80211_txq_params(9) β€” txq params, block done bestie πŸ’…

okay next block, Scanning and BSS list handling β€” she's long, she's thorough, she's the moment:

  • Scanning and BSS list handling(9) β€” the section page, hit her up
  • struct cfg80211_ssid(9) β€” the SSID struct, iconic
  • struct cfg80211_scan_info(9) β€” scan info
  • struct cfg80211_scan_6ghz_params(9) β€” 6GHz scan params, fancy ⭐
  • struct cfg80211_scan_request(9) β€” scan request, she's asking politely
  • struct cfg80211_match_set(9) β€” match set
  • struct cfg80211_sched_scan_plan(9) β€” scheduled scan plan πŸ“…
  • struct cfg80211_bss_select_adjust(9) β€” BSS select adjust
  • struct cfg80211_sched_scan_request(9) β€” sched scan request
  • enum cfg80211_signal_type(9) β€” signal type πŸ“Ά
  • struct cfg80211_inform_bss(9) β€” inform BSS, gossip era
  • struct cfg80211_bss_ies(9) β€” BSS IEs
  • struct cfg80211_bss(9) β€” the BSS herself πŸ‘‘
  • ieee80211_bss_get_elem(9) β€” get the elem
  • ieee80211_bss_get_ie(9) β€” get the IE, the classic
  • struct cfg80211_auth_request(9) β€” auth request, let me in πŸ™
  • struct cfg80211_assoc_link(9) β€” assoc link
  • struct cfg80211_ml_reconf_req(9) β€” ML reconf request, ML = multi-link, she's sophisticated
  • enum cfg80211_assoc_req_flags(9) β€” assoc request flags
  • struct cfg80211_assoc_request(9) β€” the assoc request
  • struct cfg80211_deauth_request(9) β€” deauth request, the breakup πŸ’”
  • struct cfg80211_disassoc_request(9) β€” disassoc request, breakup part 2
  • struct cfg80211_ibss_params(9) β€” IBSS params
  • struct cfg80211_bss_selection(9) β€” BSS selection
  • struct cfg80211_connect_params(9) β€” connect params
  • enum cfg80211_connect_params_changed(9) β€” which connect params changed πŸ‘€
  • enum wiphy_params_flags(9) β€” wiphy params flags
  • struct cfg80211_pmksa(9) β€” PMKSA, say it with confidence
  • struct cfg80211_pkt_pattern(9) β€” packet pattern
  • struct cfg80211_wowlan_tcp(9) β€” WoWLAN over TCP, unhinged but valid
  • struct cfg80211_wowlan(9) β€” WoWLAN, the sleepy icon 😴
  • struct cfg80211_coalesce_rules(9) β€” coalesce rules
  • struct cfg80211_coalesce(9) β€” coalesce
  • struct cfg80211_wowlan_nd_match(9) β€” WoWLAN nd match
  • struct cfg80211_wowlan_nd_info(9) β€” WoWLAN nd info
  • struct cfg80211_wowlan_wakeup(9) β€” WoWLAN wakeup, rise and grind β˜€οΈ
  • struct cfg80211_gtk_rekey_data(9) β€” GTK rekey data πŸ”‘
  • struct cfg80211_update_ft_ies_params(9) β€” update FT IEs params
  • struct cfg80211_mgmt_tx_params(9) β€” mgmt tx params
  • struct cfg80211_dscp_exception(9) β€” DSCP exception, the exception ✨
  • struct cfg80211_dscp_range(9) β€” DSCP range
  • struct cfg80211_qos_map(9) β€” QoS map πŸ—ΊοΈ

Neighbor Awareness Networking (NAN) β€” yes that's the actual name and yes it ate:

  • Neighbor Awareness Networking (NAN)(9) β€” the section page for the whole NAN situation
  • struct cfg80211_nan_band_config(9) β€” NAN band config
  • struct cfg80211_nan_conf(9) β€” NAN conf
  • struct cfg80211_nan_channel(9) β€” NAN channel
  • struct cfg80211_nan_local_sched(9) β€” NAN local schedule
  • struct cfg80211_nan_peer_map(9) β€” NAN peer map
  • struct cfg80211_nan_peer_sched(9) β€” NAN peer schedule
  • enum cfg80211_nan_conf_changes(9) β€” what changed in the NAN conf
  • struct cfg80211_nan_func_filter(9) β€” NAN func filter
  • struct cfg80211_nan_func(9) β€” the NAN func herself
  • struct cfg80211_pmk_conf(9) β€” PMK conf
  • struct cfg80211_external_auth_params(9) β€” external auth params
  • struct cfg80211_ftm_responder_stats(9) β€” FTM responder stats πŸ“ˆ
  • struct cfg80211_pmsr_ftm_result(9) β€” PMSR FTM result
  • struct cfg80211_pmsr_result(9) β€” PMSR result
  • struct cfg80211_pmsr_ftm_request_peer(9) β€” PMSR FTM request peer
  • struct cfg80211_pmsr_request_peer(9) β€” PMSR request peer
  • struct cfg80211_pmsr_request(9) β€” PMSR request
  • struct cfg80211_update_owe_info(9) β€” update OWE info
  • struct mgmt_frame_regs(9) β€” mgmt frame regs
  • struct cfg80211_ops(9) β€” the ops struct, the blueprint, arguably the main character of this whole header 🫑
  • enum wiphy_flags(9) β€” wiphy flags
  • struct ieee80211_iface_limit(9) β€” iface limit
  • struct ieee80211_iface_combination(9) β€” iface combination
  • enum wiphy_wowlan_support_flags(9) β€” WoWLAN support flags
  • struct wiphy_wowlan_support(9) β€” WoWLAN support
  • struct wiphy_coalesce_support(9) β€” coalesce support
  • enum wiphy_vendor_command_flags(9) β€” vendor command flags
  • enum wiphy_opmode_flag(9) β€” opmode flag
  • struct sta_opmode_info(9) β€” sta opmode info
  • struct wiphy_vendor_command(9) β€” vendor command
  • struct wiphy_iftype_ext_capab(9) β€” iftype ext capability
  • cfg80211_get_iftype_ext_capa(9) β€” get her ✨
  • struct cfg80211_pmsr_capabilities(9) β€” PMSR capabilities
  • struct wiphy_iftype_akm_suites(9) β€” iftype AKM suites
  • struct wiphy_radio_cfg(9) β€” radio cfg πŸ“»
  • struct wiphy_radio_freq_range(9) β€” radio freq range
  • struct wiphy_radio(9) β€” the radio herself
  • enum wiphy_nan_flags(9) β€” wiphy NAN flags
  • struct wiphy_nan_capa(9) β€” wiphy NAN capabilities
  • struct wiphy(9) β€” THE wiphy. the whole point. bow down πŸ‘‘
  • wiphy_priv(9) β€” wiphy priv
  • priv_to_wiphy(9) β€” and the way back
  • set_wiphy_dev(9) β€” set the wiphy dev
  • wiphy_dev(9) β€” get the wiphy dev
  • wiphy_name(9) β€” what's her name πŸ’…
  • wiphy_new_nm(9) β€” new wiphy, named edition
  • wiphy_new(9) β€” new wiphy, classic edition
  • wiphy_register(9) β€” register her, it's her debut 🌟
  • rcu_dereference_wiphy(9) β€” RCU dereference the wiphy, careful bestie
  • wiphy_dereference(9) β€” wiphy dereference
  • get_wiphy_regdom(9) β€” get the wiphy regdomain
  • wiphy_unregister(9) β€” unregister, she's logging off
  • wiphy_free(9) β€” free her, goodbye πŸ•ŠοΈ
  • wiphy_lock(9) β€” lock her
  • wiphy_unlock(9) β€” unlock her
  • wiphy_work_queue(9) β€” queue the work
  • wiphy_work_cancel(9) β€” cancel the work
  • wiphy_work_flush(9) β€” flush the work
  • wiphy_delayed_work_queue(9) β€” queue it but later ⏳
  • wiphy_delayed_work_cancel(9) β€” cancel it but later
  • wiphy_delayed_work_flush(9) β€” flush it but later
  • wiphy_delayed_work_pending(9) β€” is it pending πŸ‘€
  • wiphy_hrtimer_work_queue(9) β€” hrtimer work queue, high-res baby ⚑
  • wiphy_hrtimer_work_cancel(9) β€” hrtimer work cancel
  • wiphy_hrtimer_work_flush(9) β€” hrtimer work flush
  • wiphy_hrtimer_work_pending(9) β€” hrtimer work pending
  • enum ieee80211_ap_reg_power(9) β€” AP regulatory power
  • struct wireless_dev(9) β€” the wireless dev, she's the whole interface
  • wdev_priv(9) β€” wdev priv
  • wdev_chandef(9) β€” wdev chandef

Utility functions β€” the little helpers, the group chat's most useful members:

Data path helpers β€” the ones actually moving your bytes around:

Regulatory enforcement infrastructure β€” rules are rules bestie:

RFkill integration β€” turning the radio off and on again:

Vendor commands β€” the "ask your vendor" zone:

Test mode β€” for testing, obviously, no cap:

and the last run of the list, the notifications-and-results crew, absolute icons every one:

…and bestie we are not done, there's more list where that came from, keep scrolling πŸ‘€

...and the list literally keeps going, bestie, so buckle up πŸŽ€ β€” every single one of these is its own lil manual page, and they're all right here:

Like, that's the whole friend group right there β€” go say hi to whichever one you actually needed πŸ’…βœ¨


And that's a wrap on the whole page, bestie 🫢 this one lives in ./include/net, dated October 2026, and it's filed under regulatory_pre_cac_allowed(9). Screenshot it, bookmark it, tattoo it on your forearm, idc β€” just remember the facts stayed facts, only the vibe got a glow-up. bye bestie, go read your kernel docs πŸ’–πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from