cfg80211_ch...dfs_required(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– cfg80211_chandef_dfs_required β€” checks if radar detection is required πŸ’–

okay so bestie, this one is literally from the Kernel API Manual and it's one of those tiny functions that does exactly what it says on the tin. no cap. the name is cfg80211_chandef_dfs_required and it answers one very specific question for you: does this channel setup need radar detection or not? πŸ¦‹


✨ SYNOPSIS ✨

int cfg80211_chandef_dfs_required (struct wiphy *wiphy , const struct
       cfg80211_chan_def *chandef , enum nl80211_iftype iftype );

it returns an int, she takes three args, and honestly? she's giving "small function, big responsibility" energy. πŸ‘‘


🌸 ARGUMENTS 🌸

three things to hand over, no more no less:

  • wiphy β€” the wiphy you want to validate against πŸŽ€ like, which wireless device are we even talking about here
  • chandef β€” the channel definition you're checking, aka the actual channel situation you want the vibe check on 🌈
  • iftype β€” the interface type, as specified in enum nl80211_iftype πŸ’… so she knows what kind of interface you're running

⭐ RETURN ⭐

she gives you back an int, and the numbers mean everything:

  • 1 β€” yep, radar detection is required πŸ”₯
  • 0 β€” nope, not required, you're free 😌
  • < 0 β€” uh oh, that's an error 😭 bestie check your inputs
fr fr, watch out for that < 0 case β€” if it comes back negative, something went wrong and you should not be treating it as a simple "no" πŸ’€

okay bestie, real talk πŸ’– β€” this is the part of the page where the writers were like "and here's every single other page in the entire subsystem" and honestly? iconic of them. This is the whole reading list. No skimming, no cap. Here we go, in the exact order they gave it, because we do not rearrange the canon:

✨ SEE ALSO ✨

First up, the mothership and the fundamentals β€” the file everything lives in and the intro-level pages you want in your tabs already πŸŽ€:

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

the sband iftype data girlies β€” note the leading underscore on the first one, she's the private one πŸ’…:


Actions and configuration β€” the big one, the chan-def cinematic universe πŸ¦‹. If you're here for the channel width lore, this is your moment:

survey + crypto + the beacon/AP stack β€” the "setting up an AP" starter pack, no notes πŸ”₯:

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

station era β€” params, rates, stats, and the SAR stuff at the end there 🫢:

  • 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 β€” the scan request lore 🌸. Everything from "what am I even scanning for" to "here's the BSS you found":

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

connect / auth / assoc / deauth β€” the whole situationship pipeline 😭:

  • 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) β€” yes bestie, NAN gets her own little block, she earned it 🧚:

  • 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 a whole pile of auth/measurement stuff β€” PMK, external auth, FTM/PMSR πŸ¦‹:

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

the ops + wiphy block β€” genuinely the main-character section of this entire list πŸ‘‘. struct cfg80211_ops(9) and struct wiphy(9) are the ones you'll actually live in:

  • 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 plumbing β€” privs, devs, names, and every single work/lock helper πŸ’… (the wiphy_hrtimer_work_* quartet at the end is lowkey the deepest lore here):

Utility functions β€” channel math, rate math, radiotap, header lengths πŸŽ€. If you've ever wondered "what channel is this frequency even", this block is your girlie:

Data path helpers β€” converting frames, finding IEs, iterating RNRs, all the element-hunting 🌈 (shoutout cfg80211_find_ie(9), the one everybody actually calls):


Regulatory enforcement infrastructure β€” the "please don't transmit on that channel" department, respectfully the most rule-following block on this page ✨:

and then the rest β€” BSS informing, mlme rx/tx, rfkill, vendor commands, test mode, connect results, mgmt rx/tx status, CQM notifications, radar/CAC events… genuinely the whole notification cinematic universe πŸ’€. Buckle up, we're finishing the list:

RFkill integration πŸŽ€:

Vendor commands πŸ’…:

Test mode 🧚:

connect + roam + the notification gang β€” last stretch, you're doing amazing 🫢:

and the very last one, sitting there all alone at the end of the list β€” say hi πŸ“:

  • struct cfg80211_beaconing_check_config(9)
bestie, note the two stubby-underscore ones in there β€” __cfg80211_get_bss(9) and __cfg80211_radar_event(9) β€” those have two leading underscores, and _ieee80211_set_sband_iftype_data(9) has exactly one. Copy them exactly, the underscores are load-bearing πŸ’€

okay that's the entire reading list β€” all 358 of them, in the original order, nothing skipped, nothing merged, nothing "tidied up" ✨ and there's still more page coming so don't go anywhere πŸ’œ

Okay so real talk: this is the cross-reference hall of fame 😭 every single one of these pages is somebody you might want to hang out with next, and honestly the list is giving "my entire contact list" energy. Go say hi:

🌈 the beaconing & channel-switch girlies

πŸ› οΈ device & interface admin (the responsible ones fr)

πŸŽ€ IE & element business

🌸 sleepy-time & wowlan

πŸ¦‹ channels, combinations & scheduling

πŸ’€ the "we're shutting this down" crew

✨ ext features, but make it binary

🧚 NAN nation (yes, all of them, no cap)

πŸ”₯ auth, assoc & the security-adjacent besties

πŸ“ BSS & colour drama

πŸ‘‘ 6 GHz, MLO & the newer-era icons

πŸ’œ debugfs, locked and loaded

⭐ S1G squad

πŸ’… and finally, the main character


That's the whole roster, bestie β€” 64 pages, not a single one skipped, iykyk 🫢

ngl if you got all the way here you're lowkey built different. Go read one of them, treat yourself πŸ’–

And that's a wrap on this page, periodt πŸŽ€ this whole thing lives in ./include/net, dated October 2026, and it goes by cfg80211_ch...dfs_required(9) β€” slay, iconic, no notes βœ¨πŸ‘‘

πŸ“¦ where this page comes from