STRUCT ETHTOOL_RMON_STATS(9)
π struct ethtool_rmon_stats(9) β like, the RMON stats manual, bestie
okay so this is a page from the Kernel API Manual and it's all about struct ethtool_rmon_stats β which is literally just selected RMON (RFC 2819) statistics β¨ no cap, that's the whole name.
πΈ NAME πΈ
struct ethtool_rmon_stats β selected RMON (RFC 2819) statistics π
β¨ SYNOPSIS β¨
here's the whole struct, bestie, look at it, it's giving structured data realness:
struct ethtool_rmon_stats {
enum ethtool_mac_stats_src src;
struct {
u64 undersize_pkts;
u64 oversize_pkts;
u64 fragments;
u64 jabbers;
u64 hist[ETHTOOL_RMON_HIST_MAX];
u64 hist_tx[ETHTOOL_RMON_HIST_MAX];
};
};
π¦ Members π¦
okay so let's go member by member, i got you:
srcβ this is the input field that says whether the stats should be queried from the eMAC or the pMAC (but only if the MM layer is supported, iykyk). Otherwise it's to be ignored. straight up, don't think about it.{unnamed_struct}β it's anonymous. that's it. that's the whole vibe. πundersize_pktsβ equivalent toetherStatsUndersizePktsfrom the RFC. πoversize_pktsβ equivalent toetherStatsOversizePktsfrom the RFC. πfragmentsβ equivalent toetherStatsFragmentsfrom the RFC. πjabbersβ equivalent toetherStatsJabbersfrom the RFC. (yes, jabbers. iconic name ngl.) πhistβ packet counter for the packet length buckets, likeetherStatsPkts128to255Octetsfrom the RFC, fr fr. βhist_txβ Tx counters in a similar form tohist, but not defined in the RFC, so that's a little freestyle moment of its own. π
π Description π
so this struct is a selection of RMON (RFC 2819) statistics which are not exposed via different APIs β mainly the packet-length-based counters, which is honestly the main character of the whole thing. π
and here's the messy part: unfortunately, different designs choose different buckets beyond the 1024B mark (jumbo frame teritory β yes that's how it's spelled in the source, we're keeping it, no editing the lore π«Ά), so the definition of the bucket ranges is left to the driver. like, driver's choice. driver's vibe check. driver's problem.
careful bestie: because the bucket ranges are driver-defined past 1024B, don't go assuming they're the same across hardware. that's not me being dramatic, that's just the manual. π
π SEE ALSO π
the whole extended friend group, no one left behind:
- Kernel file
./include/linux/ethtool.h enum ethtool_phys_id_state(9)struct kernel_ethtool_ringparam(9)enum ethtool_supported_ring_param(9)ethtool_rxfh_indir_default(9)struct ethtool_rxfh_context(9)ethtool_link_ksettings_zero_link_mode(9)ethtool_link_ksettings_add_link_mode(9)ethtool_link_ksettings_del_link_mode(9)ethtool_link_ksettings_test_link_mode(9)ethtool_intersect_link_masks(9)struct ethtool_phy_stats(9)struct ethtool_pause_stats(9)struct ethtool_fec_hist_range(9)struct ethtool_fec_stats(9)struct ethtool_rmon_hist_range(9)struct ethtool_ts_stats(9)struct ethtool_module_eeprom(9)struct ethtool_module_power_mode_params(9)struct ethtool_mm_state(9)struct ethtool_mm_cfg(9)struct ethtool_mm_stats(9)struct ethtool_mmsv_ops(9)struct ethtool_mmsv(9)struct ethtool_rxfh_param(9)struct ethtool_rxfh_fields(9)struct kernel_ethtool_ts_info(9)struct ethtool_ops(9)struct ethtool_netdev_state(9)struct ethtool_phy_ops(9)ethtool_set_ethtool_phy_ops(9)ethtool_params_from_link_mode(9)ethtool_get_phc_vclocks(9)ethtool_mm_frag_size_add_to_min(9)ethtool_mm_frag_size_min_to_add(9)ethtool_get_ts_info_by_layer(9)ethtool_sprintf(9)ethtool_puts(9)ethtool_cpy(9)
πΈ okay that's the page, hope you ate it up πΈ
this one lives in ./include/linux and it's dated October 2026, and the header up top is struct ethtool_rmon_stats(9) in case you forgot already lol. bye bestie, go read your ethtool headers πππ¦
π¦ 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