STRUCT IWL_TOF_RANGE_REQ_AP_ENTRY(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ‘‘ struct iwl_tof_range_req_ap_entry β€” the Kernel API Manual, but make it make sense πŸ’…

okay so bestie, welcome to the Kernel API Manual entry for struct iwl_tof_range_req_ap_entry(9) β€” yes that's the icon herself, the AP configuration parameters struct. she's literally the blueprint for how you describe an AP you wanna range with, and we're gonna go through every single field together, no skipping, no cap 🫢


✨ NAME ✨

struct iwl_tof_range_req_ap_entry β€” AP configuration parameters. that's it, that's the vibe. she holds the deets you send about an AP πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the whole glow-up, copied exactly so you can trust me:

struct iwl_tof_range_req_ap_entry {
    __le32 initiator_ap_flags;
    u8 band;
    u8 channel_num;
    u8 format_bw;
    u8 ctrl_ch_position;
    u8 bssid[ETH_ALEN];
    __le16 burst_period;
    u8 samples_per_burst;
    u8 num_of_bursts;
    u8 sta_id;
    u8 cipher;
    u8 hltk[HLTK_11AZ_LEN];
    u8 tk[TK_11AZ_LEN];
    __le16 calib[IWL_TOF_BW_NUM];
    __le16 beacon_interval;
    u8 rx_pn[IEEE80211_CCMP_PN_LEN];
    u8 tx_pn[IEEE80211_CCMP_PN_LEN];
    u8 r2i_ndp_params;
    u8 i2r_ndp_params;
    __le16 min_time_between_msr;
};

look at her. twenty fields. main character energy fr fr 🌟


🌸 Members 🌸

okay now the part where we go field by field, because every one of these matters and i refuse to let you skim 😀

  • initiator_ap_flags β€” see enum iwl_initiator_ap_flags. that's where the personality flags live, go look πŸ’…
  • band β€” 0 for 5.2 GHz, 1 for 2.4 GHz, 2 for 6GHz. pick your lane bestie πŸ“‘
  • channel_num β€” the AP Channel number. self-explanatory, she's serving channel <3
  • format_bw β€” enum iwl_location_format_bw. that's the bandwidth/format coding, iykyk.
  • ctrl_ch_position β€” the coding of the control channel position relative to the center frequency, see iwl_mvm_get_ctrl_pos. lowkey fancy geometry, but it's just "where does the control channel sit" πŸŽ€
  • bssid β€” the AP's BSSID. six bytes of pure identity ✨
  • burst_period β€” okay this one has ✨range✨:
    • For EDCA based ranging: the recommended value to be sent to the AP. Measurement periodicity, in units of 100ms. ignored if num_of_bursts_exp = 0.
    • For non trigger based NDP ranging: the maximum time between measurements, in units of milliseconds.
  • samples_per_burst β€” the number of FTMs pairs in single Burst (1-31). yes, 1-31, that's the window, don't push it πŸšͺ
  • num_of_bursts β€” recommended value to be sent to the AP. 2s Exponent of the number of measurement iterations (min 2^0 = 1, max 2^14). exponential, she's dramatic like that 😭
  • sta_id β€” the station id of the AP. Only relevant when associated to the AP, otherwise should be set to IWL_INVALID_STA. so if you're not associated, use IWL_INVALID_STA, periodt.
  • cipher β€” pairwise cipher suite for secured measurement. enum iwl_location_cipher. πŸ”
  • hltk β€” HLTK to be used for secured 11az measurement. the key material, guard it 🫢
  • tk β€” TK to be used for secured 11az measurement. also key material. also guard it πŸ’œ
  • calib β€” An array of calibration values per FTM rx bandwidth. If IWL_INITIATOR_AP_FLAGS_USE_CALIB is set, the fw will use the calibration value that corresponds to the rx bandwidth of the FTM frame. so the firmware picks the right one for you, slay πŸŽ€
  • beacon_interval β€” beacon interval of the AP in TUs. Only required if IWL_INITIATOR_AP_FLAGS_TB is set. conditional queen πŸ‘‘
  • rx_pn β€” the next expected PN for protected management frames Rx. LE byte order. Only valid if IWL_INITIATOR_AP_FLAGS_SECURED is set and sta_id is set to IWL_INVALID_STA. two conditions, both required, no exceptions πŸ”₯
  • tx_pn β€” the next PN to use for protected management frames Tx. LE byte order. Only valid if IWL_INITIATOR_AP_FLAGS_SECURED is set and sta_id is set to IWL_INVALID_STA. same deal, same two conditions πŸ’€
  • r2i_ndp_params β€” parameters for R2I NDP ranging negotiation. here's the bit layout:
    • bits 0 - 2: max LTF repetitions
    • bits 3 - 5: max number of spatial streams
    • bits 6 - 7: max total LTFs. One of enum ieee80211_range_params_max_total_ltf.

bit-packing, we love to see it 🧚

  • i2r_ndp_params β€” parameters for I2R NDP ranging negotiation. and the layout:
    • bits 0 - 2: max LTF repetitions
    • bits 3 - 5: max number of spatial streams (supported values are < 2)
    • bits 6 - 7: max total LTFs. One of enum ieee80211_range_params_max_total_ltf.

note the < 2 on spatial streams for this one β€” that's a real limit, don't come for me πŸ™ˆ

  • min_time_between_msr β€” For non trigger based NDP ranging, the minimum time between measurements in units of milliseconds. ⏱️
⚠️ heads up bestie: those Only valid if / Only required if notes are not decorative. if the flags aren't set, those fields don't mean what you think they mean. respect the caveats πŸ’…

πŸ”— SEE ALSO πŸ”—

  • Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/location.h

and now the whole friend group, in order:

  • enum iwl_location_subcmd_ids(9)
  • enum iwl_location_frame_format(9)
  • enum iwl_location_bw(9)
  • enum iwl_location_format_bw(9)
  • struct iwl_tof_config_cmd(9)
  • enum iwl_tof_bandwidth(9)
  • enum iwl_tof_responder_cmd_valid_field(9)
  • enum iwl_tof_responder_cfg_flags(9)
  • struct iwl_tof_responder_config_cmd_v6(9)
  • struct iwl_tof_responder_config_cmd_v7(9)
  • struct iwl_tof_responder_config_cmd_v8(9)
  • struct iwl_tof_responder_config_cmd_v9(9)
  • struct iwl_tof_responder_config_cmd(9)
  • struct iwl_tof_responder_dyn_config_cmd_v2(9)
  • enum iwl_responder_dyn_cfg_valid_flags(9)
  • struct iwl_tof_responder_dyn_config_cmd(9)
  • struct iwl_tof_range_req_ext_cmd(9)
  • enum iwl_tof_location_query(9)
  • enum iwl_initiator_ap_flags(9)
  • struct iwl_tof_range_req_ap_entry_v3(9)
  • struct iwl_tof_range_req_ap_entry_v4(9)
  • enum iwl_location_cipher(9)
  • struct iwl_tof_range_req_ap_entry_v6(9)
  • struct iwl_tof_range_req_ap_entry_v7(9)
  • struct iwl_tof_range_req_ap_entry_v8(9)
  • struct iwl_tof_range_req_ap_entry_v9(9)
  • enum iwl_tof_response_mode(9)
  • enum iwl_tof_initiator_flags(9)
  • struct iwl_tof_range_req_cmd_v5(9)
  • struct iwl_tof_range_req_cmd_v7(9)
  • struct iwl_tof_range_req_cmd_v8(9)
  • struct iwl_tof_range_req_cmd_v9(9)
  • struct iwl_tof_range_req_cmd_v11(9)
  • struct iwl_tof_range_req_cmd_v12(9)
  • struct iwl_tof_range_req_cmd_v13(9)
  • struct iwl_tof_range_req_cmd(9)
  • enum iwl_tof_entry_status(9)
  • struct iwl_tof_range_rsp_ap_entry_ntfy_v3(9)
  • struct iwl_tof_range_rsp_ap_entry_ntfy_v4(9)
  • struct iwl_tof_range_rsp_ap_entry_ntfy_v5(9)
  • struct iwl_tof_range_rsp_ap_entry_ntfy_v7(9)
  • struct iwl_tof_range_rsp_ap_entry_ntfy(9)
  • enum iwl_tof_response_status(9)
  • struct iwl_tof_range_rsp_ntfy_v5(9)
  • struct iwl_tof_range_rsp_ntfy_v6(9)
  • struct iwl_tof_range_rsp_ntfy_v7(9)
  • struct iwl_tof_range_rsp_ntfy_v9(9)
  • struct iwl_tof_range_rsp_ntfy(9)
  • struct iwl_tof_mcsi_notif(9)
  • struct iwl_tof_range_abort_cmd(9)
  • struct iwl_ftm_responder_stats(9)

like i said. whole friend group. every single one invited to the party πŸŽ‰πŸ’–


and that's the page bestie!! this little love letter lives at ./drivers/net/wireless/intel/i... (yes the path is truncated in the footer, that's just how the renderer does her πŸ’…), dated October 2026, and it's filed under the title struct iwl_...req_ap_entry(9) in the Kernel API Manual. mwah, go range some APs responsibly, ily πŸ«ΆπŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from