STRUCT ATH_INTERRUPT_STATS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME πŸ’…

okay bestie, so struct ath_interrupt_stats β€” from the Kernel API Manual, section 9, main character energy β€” is literally the struct that holds all the stats about interrupts ✨ like every counter your wifi driver is keeping an eye on, all chillin' in one place πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

struct ath_interrupt_stats {
    u32 total;
    u32 rxok;
    u32 rxlp;
    u32 rxhp;
    u32 rxeol;
    u32 rxorn;
    u32 txok;
    u32 txeol;
    u32 txurn;
    u32 mib;
    u32 rxphyerr;
    u32 rx_keycache_miss;
    u32 swba;
    u32 bmiss;
    u32 bnr;
    u32 cst;
    u32 gtt;
    u32 tim;
    u32 cabend;
    u32 dtimsync;
    u32 dtim;
    u32 bb_watchdog;
    u32 tsfoor;
    u32 mci;
    u32 gen_timer;
    u32 sync_cause_all;
    u32 sync_rtc_irq;
    u32 sync_mac_irq;
    u32 eeprom_illegal_access;
    u32 apb_timeout;
    u32 pci_mode_conflict;
    u32 host1_fatal;
    u32 host1_perr;
    u32 trcv_fifo_perr;
    u32 radm_cpl_ep;
    u32 radm_cpl_dllp_abort;
    u32 radm_cpl_tlp_abort;
    u32 radm_cpl_ecrc_err;
    u32 radm_cpl_timeout;
    u32 local_timeout;
    u32 pm_access;
    u32 mac_awake;
    u32 mac_asleep;
    u32 mac_sleep_access;
};

look at all those u32s, it's giving "I alphabetized my playlist and then gave up" πŸ’€ but no, it's fine, it's iconic, iykyk 🌸


🧚 Members 🧚

breaking it down one field at a time, bestie, no skipping πŸ‘‘

  • total β€” the grand total, like the big boss counter: total number of interrupts generated so far πŸ”₯
  • rxok β€” receive that went through with literally no errors, slay ✨
  • rxlp β€” receive with low priority RX
  • rxhp β€” receive with high priority β€” and heads up, uapsd only 🫢
  • rxeol β€” receive where there are no more RXDESC available 😭
  • rxorn β€” receive FIFO overrun, not the vibe
  • txok β€” transmit completed at the requested rate, ate πŸ’…
  • txeol β€” transmit end-of-list counter (this one's in the struct, the manpage doesn't spell it out for us, so we don't invent lore πŸ™ˆ)
  • txurn β€” transmit FIFO underrun, the other kind of oops
  • mib β€” MIB regs reaching its threshold πŸ‘€
  • rxphyerr β€” receive with phy errors
  • rx_keycache_miss β€” receive with key cache misses, tragic
  • swba β€” Software Beacon Alert 🚨
  • bmiss β€” Beacon Miss, honestly relatable
  • bnr β€” Beacon Not Ready, also relatable
  • cst β€” Carrier Sense TImeout
  • gtt β€” Global TX Timeout
  • tim β€” receive beacon TIM occurrence
  • cabend β€” receive End of CAB traffic
  • dtimsync β€” DTIM sync lossage
  • dtim β€” receive Beacon with DTIM
  • bb_watchdog β€” Baseband watchdog 🐢
  • tsfoor β€” TSF out of range, and okay this one's a whole paragraph so buckle up: it indicates that the corrected TSF received from a beacon differs from the PCU's internal TSF by more than a (programmable) threshold πŸ‘‘
  • mci β€” MCI interrupt, specific to MCI based BTCOEX chipsets (niche but we respect it)
  • gen_timer β€” Generic hardware timer interrupt ⏰
  • local_timeout β€” Internal bus timeout.
real talk: the manpage only spells out descriptions for the members listed above β€” the rest of the fields (sync_cause_all, sync_rtc_irq, sync_mac_irq, eeprom_illegal_access, apb_timeout, pci_mode_conflict, host1_fatal, host1_perr, trcv_fifo_perr, radm_cpl_ep, radm_cpl_dllp_abort, radm_cpl_tlp_abort, radm_cpl_ecrc_err, radm_cpl_timeout, pm_access, mac_awake, mac_asleep, mac_sleep_access) are just vibing in the struct with no written explanation. we don't make stuff up in this group chat, bestie 🫢

🌈 SEE ALSO 🌈

  • Kernel file ./drivers/net/wireless/ath/ath9k/debug.h
  • struct ath_tx_stats(9)

and that's the whole page, bestie πŸ’– this little gem lives over in ./drivers/net/wireless/ath/ath9k, dated October 2026, straight from the Kernel API Manual β€” go read the source, it's giving lore πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from