ENUM NL80211_FREQUENCY_ATTR(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

enum nl80211_frequency_attr β€” it's giving frequency attributes, bestie. That's the whole vibe. This is the nl80211_frequency_attr(9) page from the Kernel API Manual, and we're gonna get through it together, okay? 🫢


✨ SYNOPSIS ✨

okay so here's the whole enum, laid out exactly as-is, no cap:

enum nl80211_frequency_attr {
    __NL80211_FREQUENCY_ATTR_INVALID ,
    NL80211_FREQUENCY_ATTR_FREQ ,
    NL80211_FREQUENCY_ATTR_DISABLED ,
    NL80211_FREQUENCY_ATTR_NO_IR ,
    __NL80211_FREQUENCY_ATTR_NO_IBSS ,
    NL80211_FREQUENCY_ATTR_RADAR ,
    NL80211_FREQUENCY_ATTR_MAX_TX_POWER ,
    NL80211_FREQUENCY_ATTR_DFS_STATE ,
    NL80211_FREQUENCY_ATTR_DFS_TIME ,
    NL80211_FREQUENCY_ATTR_NO_HT40_MINUS ,
    NL80211_FREQUENCY_ATTR_NO_HT40_PLUS ,
    NL80211_FREQUENCY_ATTR_NO_80MHZ ,
    NL80211_FREQUENCY_ATTR_NO_160MHZ ,
    NL80211_FREQUENCY_ATTR_DFS_CAC_TIME ,
    NL80211_FREQUENCY_ATTR_INDOOR_ONLY ,
    NL80211_FREQUENCY_ATTR_IR_CONCURRENT ,
    NL80211_FREQUENCY_ATTR_NO_20MHZ ,
    NL80211_FREQUENCY_ATTR_NO_10MHZ ,
    NL80211_FREQUENCY_ATTR_WMM ,
    NL80211_FREQUENCY_ATTR_NO_HE ,
    NL80211_FREQUENCY_ATTR_OFFSET ,
    NL80211_FREQUENCY_ATTR_1MHZ ,
    NL80211_FREQUENCY_ATTR_2MHZ ,
    NL80211_FREQUENCY_ATTR_4MHZ ,
    NL80211_FREQUENCY_ATTR_8MHZ ,
    NL80211_FREQUENCY_ATTR_16MHZ ,
    NL80211_FREQUENCY_ATTR_NO_320MHZ ,
    NL80211_FREQUENCY_ATTR_NO_EHT ,
    NL80211_FREQUENCY_ATTR_PSD ,
    NL80211_FREQUENCY_ATTR_DFS_CONCURRENT ,
    NL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT ,
    NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT ,
    NL80211_FREQUENCY_ATTR_CAN_MONITOR ,
    NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP ,
    NL80211_FREQUENCY_ATTR_ALLOW_20MHZ_ACTIVITY ,
    NL80211_FREQUENCY_ATTR_NO_4MHZ ,
    NL80211_FREQUENCY_ATTR_NO_8MHZ ,
    NL80211_FREQUENCY_ATTR_NO_16MHZ ,
    NL80211_FREQUENCY_ATTR_S1G_NO_PRIMARY ,
    NL80211_FREQUENCY_ATTR_NO_UHR ,
    NL80211_FREQUENCY_ATTR_CAC_START_TIME ,
    NL80211_FREQUENCY_ATTR_PAD ,
    __NL80211_FREQUENCY_ATTR_AFTER_LAST ,
    NL80211_FREQUENCY_ATTR_MAX

};

πŸŽ€ CONSTANTS πŸŽ€

okay bestie, this is the part where we go one by one. there's like forty of them. hydrate first. πŸ’…

  • __NL80211_FREQUENCY_ATTR_INVALID β€” attribute number 0 is reserved. that's it, that's the whole job. it's the placeholder bestie who shows up and does nothing. 🫠
  • NL80211_FREQUENCY_ATTR_FREQ β€” the frequency, in MHz.
  • NL80211_FREQUENCY_ATTR_DISABLED β€” the channel is disabled in the current regulatory domain. blocked. not invited. πŸ’€
  • NL80211_FREQUENCY_ATTR_NO_IR β€” no mechanisms that initiate radiation are permitted on this channel. that includes sending probe requests, and it includes any modes of operation that require beaconing. like, this channel will not be the one to text first, fr fr. πŸ™ˆ
  • __NL80211_FREQUENCY_ATTR_NO_IBSS β€” obsolete, same as _NO_IR. it's a legacy icon, we keep it around for the lore. ✨
  • NL80211_FREQUENCY_ATTR_RADAR β€” radar detection is mandatory on this channel in the current regulatory domain. mandatory mandatory. πŸ‘‘
  • NL80211_FREQUENCY_ATTR_MAX_TX_POWER β€” maximum transmission power, in mBm (that's 100 * dBm, bestie β€” yes, it's multiplied by a hundred, don't come for me).
  • NL80211_FREQUENCY_ATTR_DFS_STATE β€” the current state for DFS (enum nl80211_dfs_state).
  • NL80211_FREQUENCY_ATTR_DFS_TIME β€” time in milliseconds for how long this channel has been in this DFS state. it's giving "how long has this been going on".
  • NL80211_FREQUENCY_ATTR_NO_HT40_MINUS β€” HT40- isn't possible with this channel as the control channel.
  • NL80211_FREQUENCY_ATTR_NO_HT40_PLUS β€” HT40+ isn't possible with this channel as the control channel.
  • NL80211_FREQUENCY_ATTR_NO_80MHZ β€” any 80 MHz channel using this channel as the primary or any of the secondary channels isn't possible, and yes that includes 80+80 channels. all of them. every last one. 😭
  • NL80211_FREQUENCY_ATTR_NO_160MHZ β€” any 160 MHz channel using this channel as the primary or any of the secondary channels isn't possible β€” but note the shade: 160 MHz but not 80+80. read that twice. 🫢
  • NL80211_FREQUENCY_ATTR_DFS_CAC_TIME β€” DFS CAC time, in milliseconds.
  • NL80211_FREQUENCY_ATTR_INDOOR_ONLY β€” only indoor use is permitted on this channel. and a channel that has the INDOOR_ONLY attribute can only be used when there is a clear assessment that the device is operating in an indoor surroundings β€” meaning it's connected to AC power (and not through portable DC inverters), or it's under the control of a master that is acting as an AP and is connected to AC power. so basically: inside voice only, and plugged into the wall. πŸ”ŒπŸ 
  • NL80211_FREQUENCY_ATTR_IR_CONCURRENT β€” IR operation is allowed on this channel if it's connected concurrently to a BSS on the same channel on the 2 GHz band, or to a channel in the same UNII band (that's on the 5 GHz band), and IEEE80211_CHAN_RADAR is not set. and instantiating a GO or TDLS off-channel on a channel that has the IR_CONCURRENT attribute set can be done when there is a clear assessment that the device is operating under the guidance of an authorized master β€” i.e. setting up a GO or TDLS off-channel while the device is also connected to an AP with DFS and radar detection on the UNII band (and it's up to user-space β€” i.e. wpa_supplicant β€” to perform the required verifications). using this attribute for IR is disallowed for master interfaces (IBSS, AP). okay that one was a lot. we got through it. πŸ’ͺ
  • NL80211_FREQUENCY_ATTR_NO_20MHZ β€” 20 MHz operation is not allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_NO_10MHZ β€” 10 MHz operation is not allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_WMM β€” this channel has wmm limitations. it's a nested attribute containing the wmm limitation per AC (see enum nl80211_wmm_rule). nesting! like little attribute matryoshka dolls. 🎁
  • NL80211_FREQUENCY_ATTR_NO_HE β€” HE operation is not allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_OFFSET β€” frequency offset, in KHz.
  • NL80211_FREQUENCY_ATTR_1MHZ β€” 1 MHz operation is allowed on this channel in the current regulatory domain. a rare W. ✨
  • NL80211_FREQUENCY_ATTR_2MHZ β€” 2 MHz operation is allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_4MHZ β€” 4 MHz operation is allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_8MHZ β€” 8 MHz operation is allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_16MHZ β€” 16 MHz operation is allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_NO_320MHZ β€” any 320 MHz channel using this channel as the primary or any of the secondary channels isn't possible. 320! big bandwidth dreams, crushed. πŸ’”
  • NL80211_FREQUENCY_ATTR_NO_EHT β€” EHT operation is not allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_PSD β€” power spectral density (in dBm) that is allowed on this channel in the current regulatory domain. note: dBm here, not mBm. different unit, don't mix them up bestie. ⚠️
  • NL80211_FREQUENCY_ATTR_DFS_CONCURRENT β€” operation on this channel is allowed for peer-to-peer or adhoc communication under the control of a DFS master which operates on the same channel (FCC-594280 D01 Section B.3). should be used together with NL80211_RRF_DFS only. only. just that one. 🚨
  • NL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT β€” client connection to a VLP AP is not allowed using this channel.
  • NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT β€” client connection to an AFC AP is not allowed using this channel.
  • NL80211_FREQUENCY_ATTR_CAN_MONITOR β€” this channel can be used in monitor mode despite other (regulatory) restrictions, even if the channel is otherwise completely disabled. monitor mode stays winning. πŸ‘€πŸ”₯
  • NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP β€” this channel can be used for a very low power (VLP) AP, despite being NO_IR.
  • NL80211_FREQUENCY_ATTR_ALLOW_20MHZ_ACTIVITY β€” this channel can be active in 20 MHz bandwidth, despite being NO_IR.
  • NL80211_FREQUENCY_ATTR_NO_4MHZ β€” 4 MHz operation is not allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_NO_8MHZ β€” 8 MHz operation is not allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_NO_16MHZ β€” 16 MHz operation is not allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_S1G_NO_PRIMARY β€” the channel is not permitted for use as a primary channel. it does not prevent the channel from existing as a non-primary subchannel. only applicable to S1G channels. so like, you can be in the group chat but you're not the admin. 🫑
  • NL80211_FREQUENCY_ATTR_NO_UHR β€” UHR operation is not allowed on this channel in the current regulatory domain.
  • NL80211_FREQUENCY_ATTR_CAC_START_TIME β€” Channel Availability Check (CAC) start time (CLOCK_BOOTTIME, nanoseconds). only present when CAC is currently in progress on this channel. present-tense only, no past. ⏰
  • NL80211_FREQUENCY_ATTR_PAD β€” attribute used for padding for 64-bit alignment. the aesthetic filler. πŸŽ€
  • __NL80211_FREQUENCY_ATTR_AFTER_LAST β€” internal use. don't touch, it's not for us. πŸ™…
  • NL80211_FREQUENCY_ATTR_MAX β€” highest frequency attribute number currently defined. the ceiling. the limit. the final boss. πŸ‘‘

🌈 DESCRIPTION 🌈

okay so for the actual lore on the FCC relaxations that NL80211_FREQUENCY_ATTR_INDOOR_ONLY and NL80211_FREQUENCY_ATTR_IR_CONCURRENT allow, go read this, exactly as written:

https://apps.fcc.gov/eas/comments/GetPublishedDocument.html?id=327tn=528122

like, that's the source, bestie. that's where the relaxation receipts live. πŸ“œβœ¨

heads up β€” this page isn't done yet, there's more coming in part 2, so don't go anywhere πŸ’–

🌈 SEE ALSO

okay bestie this is the part where the page goes "here's literally everyone else in the nl80211 cinematic universe" and it is a long guest list, so buckle up πŸ’… every single one of these is a real page you can go read, no cap:

  • Kernel file ./include/uapi/linux/nl80211.h β€” the actual source file, the mothership, the main character πŸŽ€

and then the whole friend group:

  • Station handling(9)
  • Frame transmission/registration support(9)
  • Virtual interface / concurrency capabilities(9)
  • packet coalesce support(9)
  • WPA/WPA2 EAPOL handshake offload(9)
  • FILS shared key authentication offload(9)
  • SAE authentication offload(9)
  • VLAN offload support for setting group keys and binding STAs to VLANs(9)
  • TID configuration(9)
  • FILS shared key crypto offload(9)
  • Multi-Link Operation(9)
  • OWE DH IE handling offload(9)
  • enum nl80211_commands(9)
  • enum nl80211_attrs(9)
  • enum nl80211_iftype(9)
  • enum nl80211_sta_flags(9)
  • enum nl80211_sta_p2p_ps_status(9)
  • struct nl80211_sta_flag_update(9)
  • enum nl80211_he_gi(9)
  • enum nl80211_he_ltf(9)
  • enum nl80211_he_ru_alloc(9)
  • enum nl80211_eht_gi(9)
  • enum nl80211_eht_ltf(9)
  • enum nl80211_eht_ru_alloc(9)
  • enum nl80211_rate_info(9)
  • enum nl80211_sta_bss_param(9)
  • enum nl80211_sta_info(9)
  • enum nl80211_tid_stats(9)
  • enum nl80211_txq_stats(9)
  • enum nl80211_mpath_flags(9)
  • enum nl80211_mpath_info(9)
  • enum nl80211_band_iftype_attr(9)
  • enum nl80211_band_attr(9)
  • enum nl80211_nan_phy_cap_attr(9)
  • enum nl80211_wmm_rule(9)
  • enum nl80211_bitrate_attr(9)
  • enum nl80211_reg_initiator(9)
  • enum nl80211_reg_type(9)
  • enum nl80211_reg_rule_attr(9)
  • enum nl80211_sched_scan_match_attr(9)
  • enum nl80211_reg_rule_flags(9)
  • enum nl80211_dfs_regions(9)
  • enum nl80211_user_reg_hint_type(9)
  • enum nl80211_survey_info(9)
  • enum nl80211_mntr_flags(9)
  • enum nl80211_mesh_power_mode(9)
  • enum nl80211_meshconf_params(9)
  • enum nl80211_mesh_setup_params(9)
  • enum nl80211_txq_attr(9)
  • enum nl80211_channel_type(9)
  • enum nl80211_key_mode(9)
  • enum nl80211_chan_width(9)
  • enum nl80211_bss_scan_width(9)
  • enum nl80211_bss_use_for(9)
  • enum nl80211_bss_cannot_use_reasons(9)
  • enum nl80211_bss(9)
  • enum nl80211_bss_status(9)
  • enum nl80211_auth_type(9)
  • enum nl80211_key_type(9)
  • enum nl80211_mfp(9)
  • enum nl80211_key_default_types(9)
  • enum nl80211_key_attributes(9)
  • enum nl80211_tx_rate_attributes(9)
  • struct nl80211_txrate_vht(9)
  • struct nl80211_txrate_he(9)
  • struct nl80211_txrate_eht(9)
  • enum nl80211_band(9)
  • enum nl80211_ps_state(9)
  • enum nl80211_attr_cqm(9)
  • enum nl80211_cqm_rssi_threshold_event(9)
  • enum nl80211_tx_power_setting(9)
  • enum nl80211_tid_config(9)
  • enum nl80211_packet_pattern_attr(9)
  • struct nl80211_pattern_support(9)
  • enum nl80211_wowlan_triggers(9)
  • TCP connection wakeup(9)
  • struct nl80211_wowlan_tcp_data_seq(9)
  • struct nl80211_wowlan_tcp_data_token(9)
  • struct nl80211_wowlan_tcp_data_token_feature(9)
  • enum nl80211_wowlan_tcp_attrs(9)
  • struct nl80211_coalesce_rule_support(9)
  • enum nl80211_attr_coalesce_rule(9)
  • enum nl80211_coalesce_condition(9)
  • enum nl80211_iface_limit_attrs(9)
  • enum nl80211_if_combination_attrs(9)
  • enum nl80211_plink_state(9)
  • enum nl80211_plink_action(9)
  • enum nl80211_rekey_data(9)
  • enum nl80211_hidden_ssid(9)
  • enum nl80211_sta_wme_attr(9)
  • enum nl80211_pmksa_candidate_attr(9)
  • enum nl80211_tdls_operation(9)
  • enum nl80211_ap_sme_features(9)
  • enum nl80211_feature_flags(9)
  • enum nl80211_ext_feature_index(9)
  • enum nl80211_probe_resp_offload_support_attr(9)
  • enum nl80211_connect_failed_reason(9)
  • enum nl80211_timeout_reason(9)
  • enum nl80211_scan_flags(9)
  • enum nl80211_acl_policy(9)
  • enum nl80211_smps_mode(9)
  • enum nl80211_radar_event(9)
  • enum nl80211_dfs_state(9)
  • enum nl80211_protocol_features(9)
  • enum nl80211_crit_proto_id(9)
  • enum nl80211_rxmgmt_flags(9)
  • struct nl80211_vendor_cmd_info(9)
  • enum nl80211_tdls_peer_capability(9)
  • enum nl80211_sched_scan_plan(9)
  • struct nl80211_bss_select_rssi_adjust(9)
  • enum nl80211_bss_select_attr(9)
  • enum nl80211_nan_function_type(9)
  • enum nl80211_nan_publish_type(9)
  • enum nl80211_nan_func_term_reason(9)
  • enum nl80211_nan_func_attributes(9)
  • enum nl80211_nan_srf_attributes(9)
  • enum nl80211_nan_match_attributes(9)
  • enum nl80211_nan_band_conf_attributes(9)
  • enum nl80211_nan_conf_attributes(9)
  • enum nl80211_external_auth_action(9)
  • enum nl80211_ftm_responder_attributes(9)
  • enum nl80211_preamble(9)
  • enum nl80211_peer_measurement_type(9)
  • enum nl80211_peer_measurement_status(9)
  • enum nl80211_peer_measurement_req(9)
  • enum nl80211_peer_measurement_resp(9)
  • enum nl80211_peer_measurement_ftm_req_type(9)
  • enum nl80211_peer_measurement_peer_attrs(9)
  • enum nl80211_peer_measurement_attrs(9)
  • enum nl80211_peer_measurement_ftm_capa(9)
  • enum nl80211_peer_measurement_ftm_type_capa(9)
  • enum nl80211_peer_measurement_ftm_req(9)
  • enum nl80211_peer_measurement_ftm_failure_reasons(9)
  • enum nl80211_peer_measurement_ftm_resp(9)
  • enum nl80211_obss_pd_attributes(9)
  • enum nl80211_bss_color_attributes(9)
  • enum nl80211_iftype_akm_attributes(9)
  • enum nl80211_fils_discovery_attributes(9)
  • enum nl80211_unsol_bcast_probe_resp_attributes(9)
  • enum nl80211_sae_pwe_mechanism(9)
  • enum nl80211_sar_type(9)
  • enum nl80211_sar_attrs(9)
  • enum nl80211_sar_specs_attrs(9)
  • enum nl80211_mbssid_config_attributes(9)
  • enum nl80211_ap_settings_flags(9)
  • enum nl80211_wiphy_radio_attrs(9)
  • enum nl80211_wiphy_radio_freq_range(9)
  • enum nl80211_s1g_short_beacon_attrs(9)
  • enum nl80211_nan_capabilities(9)
  • enum nl80211_nan_peer_map_attrs(9)

okay that's the whole squad 😭 you made it to the end, I'm so proud of you fr fr 🫢 go hydrate, then go read whichever one of these you actually needed, iykyk πŸ’–

also lowkey β€” if you ever see a name in this list that isn't in your kernel source, that's just the page being from a slightly different vintage than your tree, it's giving "we contain multitudes" ✨

🌸 anyway, housekeeping bestie: this page lives under ./include/uapi/linux in the kernel source tree, it's dated October 2026, and it's filed as enum nl80211_frequency_attr(9). that's the whole vibe check, mwah πŸ’…πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from