STRUCT IWL_CHANNEL_ESTIMATION_CFG(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’… struct iwl_channel_estimation_cfg(9) ๐Ÿ’…

okay bestie, welcome to the Kernel API Manual โ€” this is the glow-up guide to struct iwl_channel_estimation_cfg(9), aka the channel estimation reporting config. yes it's a struct. yes it's important. let's get into it ๐Ÿซถ


โœจ NAME โœจ

struct iwl_channel_estimation_cfg โ€” channel estimation reporting config. that's the whole vibe. it's the config struct that tells the firmware how you want channel estimation matrices reported back to you ๐Ÿ“ก


๐ŸŒธ SYNOPSIS ๐ŸŒธ

struct iwl_channel_estimation_cfg {
    __le32 flags;
    __le32 timer;
    __le32 count;
    __le32 rate_n_flags_mask;
    __le32 rate_n_flags_val;
    __le32 reserved;
    __le64 frame_types;
 };

look at her. seven fields, all little-endian, all doing their job. iconic behavior honestly ๐Ÿ‘‘


๐ŸŽ€ Members ๐ŸŽ€

  • flags โ€” the flags field, bestie. and like, which flags? see enum iwl_channel_estimation_flags โ€” that's where the actual flag meanings live, this is just the container ๐Ÿ’…
  • timer โ€” if it's enabled via flags (big if, note it), it automatically disables after this many microseconds. cute little self-destruct timer โณ
  • count โ€” again, if enabled via flags, it automatically disables after this many frames with a channel estimation matrix were captured. so you get N frames and then it's done, no cap ๐Ÿ“ธ
  • rate_n_flags_mask โ€” this one's the picky one. it only tries to record the channel estimation matrix if the rate_n_flags value for the received frame (the original calls it rx_rnf, we love a nickname) matches the mask/value given here, exactly like this:
(rx_rnf & rate_n_flags_mask) == rate_n_flags_val

read it like a little equation, because it literally is one ๐Ÿงฎ

  • rate_n_flags_val โ€” see rate_n_flags_mask above. they're a matching set, they come as a pair, do not separate them ๐Ÿซถ
  • reserved โ€” reserved (for alignment). she's just here to keep things lined up. we respect her ๐ŸŽ€
  • frame_types โ€” a bitmap of frame types to capture. here's the deal: the received frame's subtype|type takes 6 bits in the frame, and the corresponding bit in this field must be set to 1 to capture channel estimation for that frame type. want all the frame types? set it to all-ones and go off ๐Ÿ’€โœจ

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

all the neighbors in the header file, gathered here so you can go snoop on them too. the kernel file is ./drivers/net/wireless/intel/iwlwifi/fw/api/datapath.h, and from there we've got:

  • enum iwl_data_path_subcmd_ids(9)
  • struct iwl_mu_group_mgmt_cmd(9)
  • struct iwl_mu_group_mgmt_notif(9)
  • struct iwl_time_sync_cfg_cmd(9)
  • enum iwl_synced_time_operation(9)
  • struct iwl_synced_time_cmd(9)
  • struct iwl_synced_time_rsp(9)
  • struct iwl_time_msmt_ptp_ctx(9)
  • struct iwl_time_msmt_notify(9)
  • struct iwl_time_msmt_cfm_notify(9)
  • enum iwl_thermal_dual_chain_req_events(9)
  • struct iwl_thermal_dual_chain_request(9)
  • struct iwl_rlc_properties(9)
  • struct iwl_sad_properties(9)
  • struct iwl_rlc_config_cmd(9)
  • enum iwl_rx_baid_action(9)
  • struct iwl_rx_baid_cfg_cmd_alloc(9)
  • struct iwl_rx_baid_cfg_cmd_modify(9)
  • struct iwl_rx_baid_cfg_cmd_remove_v1(9)
  • struct iwl_rx_baid_cfg_cmd_remove(9)
  • struct iwl_rx_baid_cfg_cmd(9)
  • struct iwl_rx_baid_cfg_resp(9)
  • enum iwl_scd_queue_cfg_operation(9)
  • struct iwl_scd_queue_cfg_cmd(9)
  • enum iwl_sec_key_flags(9)
  • struct iwl_sec_key_cmd(9)

that's the whole page, bestie, go forth and capture some channel estimation matrices responsibly ๐Ÿ’–

source: ./drivers/net/wireless/intel/i...  ยท  date: October 2026 โ€” mwah, thanks for reading, ily, bye ๐Ÿ’‹๐ŸŽ€โœจ

๐Ÿ“ฆ where this page comes from