STRUCT IWL_TOF_RANGE_REQ_AP_ENTRY_V7(9)
π NAME π
struct iwl_tof_range_req_ap_entry_v7 β the AP configuration parameters struct, from the Kernel API Manual (section 9 of the kernel docs, bestie, you're in the right place π«Ά).
β¨ SYNOPSIS β¨
struct iwl_tof_range_req_ap_entry_v7 {
__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];
};
Look at that field list. It's giving organized. It's giving I know exactly what my AP needs. π
πΈ Members πΈ
Okay so each of these fields is a whole little personality, let's go one by one:
initiator_ap_flagsβ the flags field, and it's literally just seeenum iwl_initiator_ap_flags. That's the whole note. Go read the enum, she's the main character here. πchannel_numβ the AP Channel number. Simple. Iconic. No notes. β¨format_bwβ this one's anenum iwl_location_format_bw. That's it, that's the description.ctrl_ch_positionβ the coding of the control channel position relative to the center frequency. Wanna know the deets? Seeiwl_mvm_get_ctrl_pos. iykyk π§ftmr_max_retriesβ max number of retries to send the FTMR in case of no reply from the AP. So like, how many times you're willing to text back before you accept they left you on read π β except it's protocol frames and the AP is legally obligated to respond eventually.bssidβ the AP's BSSID.ETH_ALENbytes of pure identity. πburst_periodβ recommended value to be sent to the AP, measurement periodicity in units of 100ms. And watch out: ignored ifnum_of_bursts_exp= 0. (Yes, it saysnum_of_bursts_exp, we're just relaying what the manpage says, no cap, don't come for me π)samples_per_burstβ the number of FTMs pairs in single Burst, range (1-31). Keep it in range, bestie, it's a whole byte out there. π¦num_of_burstsβ recommended value to be sent to the AP. It's the 2s Exponent of the number of measurement iterations: min 2^0 = 1, max 2^14. So it scales fast. Exponential growth energy only. π₯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. Don't leave it unset, that's not the vibe. πcipherβ the pairwise cipher suite for secured measurement, anenum iwl_location_cipher. Security queen. πhltkβ the HLTK to be used for secured 11az measurement.HLTK_11AZ_LENbytes of extremely serious cryptographic business. π«Άtkβ the TK to be used for secured 11az measurement.TK_11AZ_LENbytes. Same energy, different key. πcalibβ an array of calibration values per FTM rx bandwidth. So here's the tea: ifIWL_INITIATOR_AP_FLAGS_USE_CALIBis set, the fw will use the calibration value that corresponds to the rx bandwidth of the FTM frame. It's a whole lookup situation. βbeacon_intervalβ the beacon interval of the AP in TUs. Only required ifIWL_INITIATOR_AP_FLAGS_TBis set. Conditional queen, shows up only when she's needed. π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. Both conditions, bestie, it's an AND not an OR. π€tx_pnβ the next PN to use for protected management frames Tx, LE byte order. Same rules, same two conditions: only valid ifIWL_INITIATOR_AP_FLAGS_SECUREDis set andsta_idis set toIWL_INVALID_STA. π
Fr fr, those last two have the exact same validity clause β if you're thinking "wait didn't I just read that," you did, that's just how the page is. π
π¦ SEE ALSO π¦
The friend group, in full, no cuts:
Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/location.h, 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_v8(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)
That's a lot of friends and every single one of them matters. π«Άπ
And that's the page, bestie! π Source: ./drivers/net/wireless/intel/i... β version vibe dated October 2026, signed struct iwl_t..._ap_entry_v7(9). Go forth and configure APs, you absolute icon. π
β¨
π¦ 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