ENUM NL80211_PEER_MEASUREMENT_FTM_REQ(9)
π enum nl80211_peer_measurement_ftm_req(9) π
okay bestie so this is the Kernel API Manual page for enum nl80211_peer_measurement_ftm_req β yes the name is a whole mouthful, iykyk β and it's literally the attribute list for FTM requests. We're doing this, it's giving wifi ranging lore and honestly it eats. π
β¨ NAME β¨
enum nl80211_peer_measurement_ftm_req β FTM request attributes π
π¦ SYNOPSIS π¦
enum nl80211_peer_measurement_ftm_req {
__NL80211_PMSR_FTM_REQ_ATTR_INVALID ,
NL80211_PMSR_FTM_REQ_ATTR_ASAP ,
NL80211_PMSR_FTM_REQ_ATTR_PREAMBLE ,
NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP ,
NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD ,
NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION ,
NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST ,
NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES ,
NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI ,
NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC ,
NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED ,
NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED ,
NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK ,
NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR ,
NL80211_PMSR_FTM_REQ_ATTR_RSTA ,
NL80211_PMSR_FTM_REQ_ATTR_MIN_TIME_BETWEEN_MEASUREMENTS ,
NL80211_PMSR_FTM_REQ_ATTR_MAX_TIME_BETWEEN_MEASUREMENTS ,
NL80211_PMSR_FTM_REQ_ATTR_NOMINAL_TIME ,
NL80211_PMSR_FTM_REQ_ATTR_AW_DURATION ,
NL80211_PMSR_FTM_REQ_ATTR_NUM_MEASUREMENTS ,
NL80211_PMSR_FTM_REQ_ATTR_PAD ,
NL80211_PMSR_FTM_REQ_ATTR_INGRESS ,
NL80211_PMSR_FTM_REQ_ATTR_EGRESS ,
NL80211_PMSR_FTM_REQ_ATTR_PD_SUPPRESS_RESULTS ,
NUM_NL80211_PMSR_FTM_REQ_ATTR ,
NL80211_PMSR_FTM_REQ_ATTR_MAX
};
like, that's the whole roster. every single one is iconic in its own way, no cap. π
π CONSTANTS π
okay so here's the breakdown, one by one, main character energy for each:
__NL80211_PMSR_FTM_REQ_ATTR_INVALIDβ invalid. that's it, that's the vibe. placeholder queen. π«₯NL80211_PMSR_FTM_REQ_ATTR_ASAPβ ASAP mode requested (flag). yes bestie, as soon as possible, we are NOT waiting. β‘NL80211_PMSR_FTM_REQ_ATTR_PREAMBLEβ preamble type (seeenum nl80211_preamble), optional for DMG (u32). it's au32, keep up. π¦NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXPβ number of bursts exponent as in802.11-2016 9.4.2.168 "Fine Timing Measurement Parameters element"(u8, 0-15, optional with default 15 i.e. "no preference". No limit for non-EDCA ranging). sou8, 0 through 15, default 15 which literally means "no preference", and for non-EDCA ranging there's like, no limit. periodt. π₯NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIODβ interval between bursts in units of 100ms (u16, optional with default 0).u16, default 0, measured in 100ms chunks. π°οΈNL80211_PMSR_FTM_REQ_ATTR_BURST_DURATIONβ burst duration, as in802.11-2016 Table 9-257 "Burst Duration field encoding"(u8, 0-15, optional with default 15 i.e. "no preference"). For non-EDCA ranging, this is the burst duration in milliseconds (optional with default 0, i.e. let the device decide). two modes bestie, don't mix them up: EDCA-style isu80-15 default 15 ("no preference"), and non-EDCA is literally milliseconds with default 0 so the device picks. πNL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURSTβ (Optional) number of successful FTM frames requested per burst (u8, 0-31, optional with default 0 i.e. "no preference") If the attribute is absent ("no preference"), the driver or firmware can choose a suitable value. so 0-31, default 0 = "no preference", and if you just don't include it at all, driver/firmware gets to choose. delegating, slay. πNL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIESβ number of FTMR frame retries (u8, default 3). default is3, we love a sensible default. πNL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCIβ request LCI data (flag). πΊοΈNL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOCβ request civic location data (flag). πNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASEDβ request trigger based ranging measurement (flag). This attribute andNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDare mutually exclusive. if neitherNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASEDnorNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDis set, EDCA based ranging will be used. so like, pick one, they're mutually exclusive fr, and if you set neither you get EDCA based ranging by default. βοΈNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDβ request non-trigger-based ranging measurement (flag) This attribute andNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASEDare mutually exclusive. if neitherNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASEDnorNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDis set, EDCA based ranging will be used. yeah same deal, the other half of the mutually-exclusive duo, and neither-set still lands you on EDCA based ranging. πNL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACKβ negotiate for LMR feedback. Only valid if eitherNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASEDorNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDis set. so don't even try it solo, it needs one of the two above, otherwise it's not valid. π«NL80211_PMSR_FTM_REQ_ATTR_BSS_COLORβ optional. The BSS color of the responder. Only valid ifNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDorNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASEDis set. again: optional, needs one of the two ranging-type flags or it's invalid. π¨NL80211_PMSR_FTM_REQ_ATTR_RSTAβ optional. Request to perform the measurement as the RSTA (flag). When set, the device is expected to dwell on the channel specified inNL80211_PMSR_PEER_ATTR_CHANuntil it receives the FTM request from the peer or the timeout specified byNL80211_ATTR_TIMEOUThas expired. Only valid ifNL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACKis set (so the RSTA will have the measurement results to report back in the FTM response). okay so this one is a whole situation: device chills on theNL80211_PMSR_PEER_ATTR_CHANchannel until the FTM request shows up orNL80211_ATTR_TIMEOUTruns out, and it's only valid whenNL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACKis set β because the RSTA needs results to report back in the FTM response. make it make sense, and it does. ποΈNL80211_PMSR_FTM_REQ_ATTR_MIN_TIME_BETWEEN_MEASUREMENTSβ minimum time between two consecutive range measurements in units of 100 microseconds, for non-trigger based ranging (u32). Should be set as short as possible to minimize turnaround time, since two-way ranging with delayed LMR requires two measurements. Only valid ifNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDis set.u32, units of 100 microseconds, keep it as short as possible for minimal turnaround time (two-way ranging with delayed LMR needs two measurements, so yeah), and only valid withNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED. β±οΈNL80211_PMSR_FTM_REQ_ATTR_MAX_TIME_BETWEEN_MEASUREMENTSβ maximum time between two consecutive range measurements in units of 10 milliseconds, for non-trigger based ranging (u32). Acts as a session timeout; if exceeded, the ranging session should be terminated. Only valid ifNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDis set.u32, units of 10 milliseconds, and it's literally a session timeout β blow past it and the ranging session should be terminated, no cap. only valid withNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED. β³NL80211_PMSR_FTM_REQ_ATTR_NOMINAL_TIMEβ The nominal time field shall be set to the nominal duration between adjacent Availability Windows in units of milli seconds (u32). Mandatory ifNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDis set.u32, milliseconds, and it's mandatory whenNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDis set β mandatory bestie, not optional. π¨NL80211_PMSR_FTM_REQ_ATTR_AW_DURATIONβ (Optional) The AW duration field shall be set to the duration of the AW in units of 1ms (0-255 ms) (u32). Only valid ifNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDis set. If the attribute is absent ("no preference"), the driver or firmware can choose a suitable value.u32, 0-255 ms, units of 1ms, only valid withNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED, and absent = "no preference" = driver/firmware picks. πNL80211_PMSR_FTM_REQ_ATTR_NUM_MEASUREMENTSβ (Optional) number of Availability Windows (AWs) to schedule for non-trigger-based ranging. Each AW may contain multiple FTM exchanges as configured byNL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST. Only valid ifNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASEDis set. If the attribute is absent ("no preference"), the driver or firmware can choose a suitable value. so it's how many AWs you want scheduled, each one can hold multiple FTM exchanges perNL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST, only valid withNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED, and absent again means "no preference" and the driver/firmware decides. ποΈNL80211_PMSR_FTM_REQ_ATTR_PADβ ignore, for u64/s64 padding only. literally just padding bestie, ignore it. π«ΆNL80211_PMSR_FTM_REQ_ATTR_INGRESSβ optional u64 attribute in units of mm. When specified, the measurement result of the peer needs to be indicated if the device moves into this range.u64, millimeters, and when you set it the peer's measurement result needs to be indicated when the device moves into this range. π₯NL80211_PMSR_FTM_REQ_ATTR_EGRESSβ optional u64 attribute in units of mm. When specified, the measurement result of the peer needs to be indicated if the device moves out of this range. If neither or only one ofNL80211_PMSR_FTM_REQ_ATTR_INGRESSandNL80211_PMSR_FTM_REQ_ATTR_EGRESSis specified, only the specified threshold is used. If both are specified, both thresholds are applied. If neither is specified, results are reported without threshold filtering. okay sou64, mm, and it's the out of range one. the logic, bestie, listen: neither-or-only-one β only the specified threshold gets used; both β both thresholds apply; neither β results come back with no threshold filtering at all. π€NL80211_PMSR_FTM_REQ_ATTR_PD_SUPPRESS_RESULTSβ Flag to suppress ranging results for PD requests. When set, ranging measurements are performed but results are not reported to userspace, regardless of ranging role or type. Only valid whenNL80211_PMSR_PEER_ATTR_REQ_TYPEis set toNL80211_PMSR_FTM_REQ_TYPE_PD. so the measurement still happens, the results just don't get reported to userspace β regardless of ranging role or type, like it does not care β and it's only valid whenNL80211_PMSR_PEER_ATTR_REQ_TYPEis set toNL80211_PMSR_FTM_REQ_TYPE_PD. π€«NUM_NL80211_PMSR_FTM_REQ_ATTRβ internal. that's for the kernel, not you, move along. π§NL80211_PMSR_FTM_REQ_ATTR_MAXβ highest attribute number. the ceiling, the finale, the top of the list. π
okay so real talk β this page is basically a whole friend group, and you're about to be introduced to every single one of them. no skipping, bestie, we're doing the full roster π
and yeah, all of these live in the kernel file ./include/uapi/linux/nl80211.h β that's the mothership.
<h2>β¨ the whole extended family (SEE ALSO energy) β¨</h2>
first up, the ~concepts~ crew β the big-picture vibes pages:
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)
then the enums and structs start rolling in like a group chat that keeps adding people π
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)
mesh, bands, and regulatory stuff β the "who's allowed to do what" girlies πΈ
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_frequency_attr(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)
monitor flags, mesh power modes, and BSS lore β¨
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)
keys, auth, and rate tables β the security girlies ate π₯
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)
wakeup-on-wifi and packet patterns, aka the "let me sleep but also stay online" era π
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)
interfaces, links, and power save β housekeeping but make it iconic π
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)
radar, DFS, and NAN β the exotic ones, lowkey main character energy π
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)
and now we're in the neighbourhood of this very page β external auth, FTM responders, and the peer measurement squad π«Ά
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)
the FTM specifics β capabilities, type capabilities, failure reasons, resp. the way this little cluster is so specific, we love a specialist π
enum nl80211_peer_measurement_ftm_capa(9)enum nl80211_peer_measurement_ftm_type_capa(9)enum nl80211_peer_measurement_ftm_failure_reasons(9)enum nl80211_peer_measurement_ftm_resp(9)
and finally the tail end β OBSS PD, BSS colour, AKM, FILS discovery, SAE PWE, SAR, M-BSSID, AP settings, wiphy radios, S1G beacons, and the rest of the NAN pages. full send π
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)
and that's the whole guest list, bestie β every single one accounted for, no cuts, no edits, no "we'll skip these for time" nonsense πΈ
this page ships out of ./include/uapi/linux, dated October 2026, and it's titled enum nl8021...ment_ftm_req(9) β so go forth, read the enums, and slay your netlink journey πβ¨π
π¦ 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