STRUCT ATH_RX_STATS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct ath_rx_stats β€” RX Statistics πŸ’…

okay so this is a page from the Kernel API Manual, and today's main character is struct ath_rx_stats β€” the receipt-keeping era of your wireless driver's receive path 🧾✨ she literally counts everything that comes in the door, the good, the bad, and the CRC-cursed. no cap.


✨ SYNOPSIS ✨

bestie, here's the whole vibe, verbatim, do not touch:

struct ath_rx_stats {
    u32 rx_pkts_all;
    u32 rx_bytes_all;
    u32 crc_err;
    u32 decrypt_crc_err;
    u32 phy_err;
    u32 mic_err;
    u32 pre_delim_crc_err;
    u32 post_delim_crc_err;
    u32 decrypt_busy_err;
    u32 phy_err_stats[ATH9K_PHYERR_MAX];
    u32 rx_len_err;
    u32 rx_oom_err;
    u32 rx_rate_err;
    u32 rx_too_many_frags_err;
    u32 rx_beacons;
    u32 rx_frags;
    u32 rx_spectral;
    u32 rx_spectral_sample_good;
    u32 rx_spectral_sample_err;
};

like, nineteen-ish u32 counters and one very glamorous array. she's giving "spreadsheet but make it wifi" πŸ“ŠπŸ’–


πŸŽ€ Members πŸŽ€

okay so each of these fields is a little counter bestie, let me walk you through them one at a time 🌸

  • rx_pkts_all β€” No. of total frames received, including ones that may have had errors. she counts everybody, even the messy ones πŸ™ˆ
  • rx_bytes_all β€” No. of total bytes received, including ones that may have had errors. same energy, but in bytes πŸ”’
  • crc_err β€” No. of frames with incorrect CRC value πŸ’€ the checksum said no
  • decrypt_crc_err β€” No. of frames whose CRC check failed after decryption process completed πŸ”πŸ˜­ the decryption finished and then the CRC was like "actually no"
  • phy_err β€” No. of frames whose reception failed because the PHY encountered an error ⚑ the physical layer had a whole moment
  • mic_err β€” No. of frames with incorrect TKIP MIC verification failure 🎀 (not that kind of mic, but honestly equally dramatic)
  • pre_delim_crc_err β€” Pre-Frame delimiter CRC error detections 🚩 caught before the frame delimiter
  • post_delim_crc_err β€” Post-Frame delimiter CRC error detections 🚩 caught after the frame delimiter
  • decrypt_busy_err β€” Decryption interruptions counter ⏸️ the decryptor got interrupted, rude
  • phy_err_stats β€” Individual PHY error statistics πŸ“ˆ one stat per error type, sized ATH9K_PHYERR_MAX, very thorough of her
  • rx_len_err β€” No. of frames discarded due to bad length. πŸ“ thrown out for being the wrong size
  • rx_oom_err β€” No. of frames dropped due to OOM issues. 🫠 out of memory, out of luck
  • rx_rate_err β€” No. of frames dropped due to rate errors. πŸ’¨ dropped over rate drama
  • rx_too_many_frags_err β€” Frames dropped due to too-many-frags received. 🧩 just so many fragments, bestie
  • rx_beacons β€” No. of beacons received. πŸ”¦ lighthouse-core
  • rx_frags β€” No. of rx-fragements received. 🧩 (yes, that's how the original spells "fragements" β€” we keep the facts, we keep the typo, we don't touch it, periodt πŸ’…)
  • rx_spectral β€” No of spectral packets received. 🌈 (also verbatim: "No of", no period, iconic)
  • rx_spectral_sample_good β€” No. of good spectral samples ✨ the samples that ATE
  • rx_spectral_sample_err β€” No. of good spectral samples 😭🫢 yes, the original says "good" here too β€” that's literally what's written, so that's literally what you get. no editing, no notes, we report exactly what the page says.

πŸ” SEE ALSO πŸ”

if you wanna go read the source (and honestly, slay), check out this kernel file:

./drivers/net/wireless/ath/ath9k/common-debug.h

that's the one. go be nosy, iykyk πŸ’œ


πŸ¦‹ Sign-off πŸ¦‹

this little beauty lives over in ./drivers/net/wireless/ath/ath9k, and the page itself is dated October 2026 β€” so yeah, future-flavoured documentation, very forward-thinking of her πŸ‘‘βœ¨ go count some frames bestie, ily, bye πŸ«ΆπŸ’–

πŸ“¦ where this page comes from