STRUCT IWL_TOF_RANGE_REQ_AP_ENTRY_V8(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ struct iwl_tof_range_req_ap_entry_v8(9) β€” Kernel API Manual πŸ¦‹

okay bestie, settle in, because we're looking at struct iwl_tof_range_req_ap_entry_v8 from the Kernel API Manual, and it's literally the lil' info packet that holds all the AP configuration parameters. Think of it as the vibe card you hand the firmware so it knows exactly how to talk to one specific access point for FTM ranging. no cap, it's giving "backstage pass for one (1) AP" ✨


πŸ’– NAME

struct iwl_tof_range_req_ap_entry_v8 β€” AP configuration parameters πŸŽ€


✨ SYNOPSIS

struct iwl_tof_range_req_ap_entry_v8 {
    __le32 initiator_ap_flags;
    u8 channel_num;
    u8 format_bw;
    u8 ctrl_ch_position;
    u8 ftmr_max_retries;
    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;
    u8 r2i_max_total_ltf;
    u8 i2r_max_total_ltf;
 };

look at her. twenty-one fields. every single one of them doing a job. main character struct energy fr fr πŸ’…


🫢 Members

  • initiator_ap_flags β€” the flag field, see enum iwl_initiator_ap_flags for what all the bits mean 🚩
  • channel_num β€” the AP channel number.
  • format_bw β€” an enum iwl_location_format_bw value.
  • ctrl_ch_position β€” the coding of the control channel position relative to the center frequency. peep iwl_mvm_get_ctrl_pos for the deets.
  • ftmr_max_retries β€” max number of retries to send the FTMR when the AP is ghosting you and sends no reply 😭
  • bssid β€” the AP's BSSID.
  • burst_period β€” recommended value to be sent to the AP. it's the measurement periodicity, in units of 100ms. ignored if num_of_bursts_exp = 0 πŸ’€
  • samples_per_burst β€” the number of FTMs pairs in single Burst (1-31);
  • 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).
  • sta_id β€” the station id of the AP. only relevant when you're associated to the AP β€” otherwise it should be set to IWL_INVALID_STA.
  • cipher β€” pairwise cipher suite for secured measurement. it's an enum iwl_location_cipher.
  • hltk β€” HLTK to be used for secured 11az measurement.
  • tk β€” TK to be used for secured 11az measurement.
  • 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. matching game, but make it firmware πŸ”₯
  • beacon_interval β€” beacon interval of the AP in TUs. only required if IWL_INITIATOR_AP_FLAGS_TB is set.
  • 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.
  • 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.
  • r2i_ndp_params β€” parameters for R2I NDP ranging negotiation.
    • bits 0 - 2: max LTF repetitions
    • bits 3 - 5: max number of spatial streams
    • bits 6 - 7: reserved
  • i2r_ndp_params β€” parameters for I2R NDP ranging negotiation.
    • bits 0 - 2: max LTF repetitions
    • bits 3 - 5: max number of spatial streams (supported values are < 2)
    • bits 6 - 7: reserved
  • r2i_max_total_ltf β€” R2I Max Total LTFs for NDP ranging negotiation. one of enum ieee80211_range_params_max_total_ltf.
  • i2r_max_total_ltf β€” I2R Max Total LTFs for NDP ranging negotiation. one of enum ieee80211_range_params_max_total_ltf.
lowkey important: rx_pn and tx_pn both hinge on IWL_INITIATOR_AP_FLAGS_SECURED being set and sta_id being IWL_INVALID_STA. don't skip the conditions bestie, they're load-bearing πŸ™ˆ

πŸ” SEE ALSO

the whole friend group lives in the kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/location.h, and honestly? the guest list is long but everyone ate πŸ‘‘

  • 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_v9(9)
  • struct iwl_tof_range_req_ap_entry(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)

and that's the whole thing, bestie!! you understood the assignment πŸ’œ this icon was brought to you by the source at ./drivers/net/wireless/intel/i..., dated October 2026 β€” same manual page, struct iwl_tof_range_req_ap_entry_v8(9), no notes. go forth and range some APs 🌸🫢

πŸ“¦ where this page comes from