STRUCT IWL_STATISTICS_TX_NTFY(9)
๐
struct iwl_statistics_tx_ntfy โ TX statistics notification โจ
okay bestie, this is a page straight outta the Kernel API Manual (section 9, no big deal), and it's all about a struct that literally just holds TX statistics counters. it's giving "scoreboard but make it wifi" ๐
๐ธ NAME ๐ธ
struct iwl_statistics_tx_ntfy โ TX statistics notification. that's it, that's the whole vibe ๐
โจ SYNOPSIS โจ
bestie do NOT retype this, just copy it exactly ๐
struct iwl_statistics_tx_ntfy {
struct iwl_statistics_ntfy_hdr hdr;
__le32 cts_timeout;
__le32 ack_timeout;
__le32 dump_msdu_cnt;
__le32 burst_abort_missing_next_frame_cnt;
__le32 cts_timeout_collision;
__le32 ack_or_ba_timeout_collision;
__le32 ba_timeout;
__le32 ba_reschedule_frames;
__le32 scd_query_agg_frame_cnt;
__le32 scd_query_no_agg;
__le32 scd_query_agg;
__le32 scd_query_mismatch;
__le32 agg_terminated_underrun;
__le32 agg_terminated_bt_prio_kill;
__le32 tx_kill_on_long_retry;
__le32 tx_kill_on_short_retry;
__le32 tx_deffer_counter;
__le32 tx_deffer_base_time;
__le32 tx_underrun;
__le32 bt_defer;
__le32 tx_kill_on_dsp_timeout;
__le32 tx_kill_on_immediate_quiet;
__le32 kill_ba_cnt;
__le32 kill_ack_cnt;
__le32 kill_cts_cnt;
__le32 burst_terminated;
__le32 late_tx_vec_wr_cnt;
__le32 late_rx2_tx_cnt;
__le32 scd_query_cnt;
__le32 tx_frames_acked_in_agg;
__le32 last_tx_ch_width_indx;
__le32 rx_detected_per_ch_width[4];
__le32 success_per_ch_width[4];
__le32 fail_per_ch_width[4];
__le32 reserved;
};
๐ฆ Members ๐ฆ
so many counters, and every single one is a little main character:
hdrโ the general statistics header, the โจglueโจ that holds the whole thing together.cts_timeoutโ timeout when waiting for CTS โณack_timeoutโ timeout when waiting for ACK โณdump_msdu_cntโ number of MSDUs that were dumped due to any reason. any. reason. ๐burst_abort_missing_next_frame_cntโ number of times a burst was aborted due to missing next frame bytes in txfifo number of times got timeout when waiting for CTS/ACK/BA and energy was detected just after sending the RTS/DATA. this statistics may help getting interesting indicators, like the likelihood of collision (so the benefit of protection may be estimated Vs. its cost). Or how many of the failures are due to collision and how many due to SNR. For Link-quality the CTS collision indication is more reliable then the ACK collision indication as the RTS frame is short and has more chance that the frame/s which caused the collision continue after the RTS was sent. ngl the source text runs two whole thoughts together here and we're keeping it exactly, no cap ๐ซถcts_timeout_collisionโ???ACK/BA failed and energy as detected after DATA ๐ญ (the manpage literally wrote???, we don't make the rules)ack_or_ba_timeout_collisionโ???๐ba_timeoutโ timeout when waiting for immediate BA response โณba_reschedule_framesโ failed to get BA response and rescheduled all the non-ACKed frames gives the average number of frames inside aggregation.scd_query_agg_frame_cntโ???๐scd_query_no_aggโ scheduler query prevented aggregation ๐ซscd_query_aggโ scheduler query allowed aggregation โscd_query_mismatchโ scheduler query inaccurate, either too short or too long ๐agg_terminated_underrunโ aggregation was terminated due to underrun ๐agg_terminated_bt_prio_killโ aggregation was terminated due to BT ๐ฆทtx_kill_on_long_retryโ count the tx frames dropped due to long retry limit (DATA frame failed) ๐ฅtx_kill_on_short_retryโ count the tx frames dropped due to short retry limit (RTS frame failed) TX deffer on energy. This counter is reset on each successful transmit. When timer exceed TX deffer limit than will be uCode assert. โ ๏ธ (yes, it says assert, and yes, that's the energy-defer pile-up, keep the whole thought together like the original does)tx_deffer_counterโ???๐tx_deffer_base_timeโ Keep the time of the last successful transmit ๐tx_underrunโ TX killed due to underrun ๐bt_deferโ TX deferred due to BT priority, so probably TX was not started. that "probably" is doing so much work bestie ๐ซtx_kill_on_dsp_timeoutโ TX killed on DSP problem detected ๐จtx_kill_on_immediate_quietโ TX killed due to immediate quiet ๐คซkill_ba_cntโ number of times sending BA failed ๐ญkill_ack_cntโ number of times sending ACK failed ๐ญkill_cts_cntโ number of times sending CTS failed ๐ญburst_terminatedโ Count burst or fragmentation termination occurrence ๐late_tx_vec_wr_cntโ???TX is not sent because ucode failed to notify the TRM in SIFS-delta from ON_AIR deassertion. ๐ฌlate_rx2_tx_cntโ???๐scd_query_cntโ count the times SCD query was done to check for TX AGG ๐tx_frames_acked_in_aggโ count the number of frames transmitted inside AGG and were successful ๐last_tx_ch_width_indxโ???number of deferred TX per channel width, 0 - 20, 1/2/3 - 40/80/160 ๐ถrx_detected_per_ch_widthโ???๐success_per_ch_widthโ???๐fail_per_ch_widthโ???๐reservedโ reserved. she's just vibing, don't touch her ๐
๐ Note ๐
to get the collision ratio need to: ackOrBaTimeoutCollision / (ack_timeout + ba_timeout)
that's the whole formula, write it down, it's giving math class but make it wifi ๐งฎโจ
๐ฅ SEE ALSO ๐ฅ
the whole friend group, in order:
- Kernel file
./drivers/net/wireless/intel/iwlwifi/fw/api/stats.h 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_duration_ntfy(9)struct iwl_statistics_he_ntfy(9)
alright bestie, that's the whole page, we ate and left absolutely no crumbs ๐
โจ this came from ./drivers/net/wireless/intel/i..., dated October 2026, and it's your girl signing off โ stay iconic, go read your stats, and remember: ??? is a valid documentation value, apparently ๐ญ๐ซถ๐
๐ฆ 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