STRUCT IWL_TOF_RANGE_REQ_AP_ENTRY_V8(9)
π¦ 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, seeenum iwl_initiator_ap_flagsfor what all the bits mean π©channel_numβ the AP channel number.format_bwβ anenum iwl_location_format_bwvalue.ctrl_ch_positionβ the coding of the control channel position relative to the center frequency. peepiwl_mvm_get_ctrl_posfor 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 of100ms. ignored ifnum_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.2sexponent of the number of measurement iterations (min2^0=1, max2^14).sta_idβ the station id of the AP. only relevant when you're associated to the AP β otherwise it should be set toIWL_INVALID_STA.cipherβ pairwise cipher suite for secured measurement. it's anenum 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. ifIWL_INITIATOR_AP_FLAGS_USE_CALIBis 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 ifIWL_INITIATOR_AP_FLAGS_TBis set.rx_pnβ the next expected PN for protected management frames Rx. LE byte order. only valid ifIWL_INITIATOR_AP_FLAGS_SECUREDis set andsta_idis set toIWL_INVALID_STA.tx_pnβ the next PN to use for protected management frames Tx. LE byte order. only valid ifIWL_INITIATOR_AP_FLAGS_SECUREDis set andsta_idis set toIWL_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
- bits
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
- bits
r2i_max_total_ltfβ R2I Max Total LTFs for NDP ranging negotiation. one ofenum ieee80211_range_params_max_total_ltf.i2r_max_total_ltfβ I2R Max Total LTFs for NDP ranging negotiation. one ofenum ieee80211_range_params_max_total_ltf.
lowkey important:rx_pnandtx_pnboth hinge onIWL_INITIATOR_AP_FLAGS_SECUREDbeing set andsta_idbeingIWL_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
- 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