STRUCT IWL_STATISTICS_HE_NTFY(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME πŸ’…

struct iwl_statistics_he_ntfy β€” the HE statistics struct, bestie. It's the Kernel API Manual's take on it, and yes we're getting into all of it ✨


🌸 SYNOPSIS 🌸

struct iwl_statistics_he_ntfy {
    struct iwl_statistics_ntfy_hdr hdr;
    __le32 rx_siga_valid_cnt;
    __le32 rx_siga_invalid_cnt;
    __le32 rx_trig_based_frame_cnt;
    __le32 rx_su_frame_cnt;
    __le32 rx_sigb_invalid_cnt;
    __le32 rx_our_bss_color_cnt;
    __le32 rx_other_bss_color_cnt;
    __le32 rx_zero_bss_color_cnt;
    __le32 rx_mu_for_us_cnt;
    __le32 rx_mu_not_for_us_cnt;
    __le32 rx_mu_nss_ar[2];
    __le32 rx_mu_mimo_cnt;
    __le32 rx_mu_ru_bw_ar[7];
    __le32 rx_trig_for_us_cnt;
    __le32 rx_trig_not_for_us_cnt;
    __le32 rx_trig_with_cs_req_cnt;
    __le32 rx_trig_type_ar[8 + 1];
    __le32 rx_trig_in_agg_cnt;
    __le32 rx_basic_trig_alloc_nss_ar[2];
    __le32 rx_basic_trig_alloc_mu_mimo_cnt;
    __le32 rx_basic_trig_alloc_ru_bw_ar[7];
    __le32 rx_basic_trig_total_byte_cnt;
    __le32 tx_trig_based_cs_req_fail_cnt;
    __le32 tx_trig_based_sifs_ok_cnt;
    __le32 tx_trig_based_sifs_fail_cnt;
    __le32 tx_trig_based_byte_cnt;
    __le32 tx_trig_based_pad_byte_cnt;
    __le32 tx_trig_based_frame_cnt;
    __le32 tx_trig_based_acked_frame_cnt;
    __le32 tx_trig_based_ack_timeout_cnt;
    __le32 tx_su_frame_cnt;
    __le32 tx_edca_to_mu_edca_cnt;
    __le32 tx_mu_edca_to_edca_by_timeout_cnt;
    __le32 tx_mu_edca_to_edca_by_ack_fail_cnt;
    __le32 tx_mu_edca_to_edca_by_small_alloc_cnt;
    __le32 reserved;
};

πŸ‘‘ Members πŸ‘‘

Okay so it's a whole vibe of __le32 counters, one hdr, and a reserved at the end for luck. Let's go down the list, no skipping, fr fr 🫢

  • hdr β€” the general statistics header received HE frames. It's giving "main character" energy, the header all the rest live under.
  • rx_siga_valid_cnt β€” rx HE SIG-A valid.
  • rx_siga_invalid_cnt β€” rx HE SIG-A invalid received HE frames w/ valid Sig-A.
  • rx_trig_based_frame_cnt β€” rx HE-TB (trig-based).
  • rx_su_frame_cnt β€” rx HE-SU.
  • rx_sigb_invalid_cnt β€” rx (suspected) HE-MU w/ bad SIG-B.
  • rx_our_bss_color_cnt β€” rx valid HE SIG-A w/ our BSS color.
  • rx_other_bss_color_cnt β€” rx valid HE SIG-A w/ other BSS color.
  • rx_zero_bss_color_cnt β€” ??? received HE-MU frames w/ good Sig-B. (Yes the ??? is literally in there πŸ’€)
  • rx_mu_for_us_cnt β€” match AID.
  • rx_mu_not_for_us_cnt β€” no matched AID received HE-MU frames for us (w/ our AID).
  • rx_mu_nss_ar β€” 0 - SISO, 1 - MIMO2.
  • rx_mu_mimo_cnt β€” full BW RU, compressed SIG-B.
  • rx_mu_ru_bw_ar β€” MU alloc, MHz: 0 - 2, 1 - 5, 2 - 10, 3 - 20, 4 - 40, 5 - 80, 6 - 160 received trigger frames.
  • rx_trig_for_us_cnt β€” ???
  • rx_trig_not_for_us_cnt β€” ??? trigger for us.
  • rx_trig_with_cs_req_cnt β€” ???
  • rx_trig_type_ar β€” ???
  • rx_trig_in_agg_cnt β€” ??? basic trigger for us allocations.
  • rx_basic_trig_alloc_nss_ar β€” ???
  • rx_basic_trig_alloc_mu_mimo_cnt β€” ???
  • rx_basic_trig_alloc_ru_bw_ar β€” ???
  • rx_basic_trig_total_byte_cnt β€” ??? trig-based TX.
  • tx_trig_based_cs_req_fail_cnt β€” ???
  • tx_trig_based_sifs_ok_cnt β€” ???
  • tx_trig_based_sifs_fail_cnt β€” ???
  • tx_trig_based_byte_cnt β€” ???
  • tx_trig_based_pad_byte_cnt β€” ???
  • tx_trig_based_frame_cnt β€” ???
  • tx_trig_based_acked_frame_cnt β€” ???
  • tx_trig_based_ack_timeout_cnt β€” ??? HE-SU TX.
  • tx_su_frame_cnt β€” ??? EDCA <--> MU-EDCA transitions.
  • tx_edca_to_mu_edca_cnt β€” ???
  • tx_mu_edca_to_edca_by_timeout_cnt β€” ???
  • tx_mu_edca_to_edca_by_ack_fail_cnt β€” ???
  • tx_mu_edca_to_edca_by_small_alloc_cnt β€” ???
  • reserved β€” reserved. (The moment of silence at the end, we respect it πŸ™ˆ)
ngl bestie, those ??? are straight from the source β€” the docs literally shrug at us there. Don't come for me, come for the kernel devs πŸ’€

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./drivers/net/wireless/intel/iwlwifi/fw/api/stats.h and its whole friend group β€” our struct is not solo, it's a group chat:

  • struct mvm_statistics_rx_non_phy(9)
  • struct mvm_statistics_load(9)
  • enum iwl_statistics_notif_flags(9)
  • enum iwl_statistics_cmd_flags(9)
  • struct iwl_statistics_cmd(9)
  • enum iwl_statistics_notify_type_id(9)
  • enum iwl_statistics_cfg_flags(9)
  • struct iwl_system_statistics_cmd(9)
  • enum iwl_fw_statistics_type(9)
  • struct iwl_statistics_ntfy_hdr(9)
  • struct iwl_stats_ntfy_per_link(9)
  • struct iwl_stats_ntfy_part1_per_link(9)
  • struct iwl_stats_ntfy_per_mac(9)
  • struct iwl_stats_ntfy_per_phy_v1(9)
  • struct iwl_stats_ntfy_coex(9)
  • struct iwl_stats_ntfy_per_phy(9)
  • struct iwl_stats_ntfy_per_sta(9)
  • struct iwl_system_statistics_notif_oper_v3(9)
  • struct iwl_system_statistics_notif_oper(9)
  • struct iwl_system_statistics_part1_notif_oper(9)
  • struct iwl_system_statistics_end_notif(9)
  • struct iwl_statistics_operational_ntfy(9)
  • struct iwl_statistics_operational_ntfy_ver_14(9)
  • struct iwl_statistics_phy_ntfy(9)
  • struct iwl_statistics_mac_ntfy(9)
  • struct iwl_statistics_rx_ntfy(9)
  • struct iwl_statistics_tx_ntfy(9)
  • struct iwl_statistics_duration_ntfy(9)

Okay that's the whole page, mwah πŸ’‹ This little icon came from ./drivers/net/wireless/intel/i..., dated October 2026, and it lives its best life filed under struct iwl_...tics_he_ntfy(9). Go read the source, drink some water, slay βœ¨πŸŽ€πŸ«Ά

πŸ“¦ where this page comes from