STRUCT ETHTOOL_RINGPARAM(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct ethtool_ringparam β€” RX/TX ring parameters (kernel API manual, bestie edition) ✨

Okay so this one is from the Kernel API Manual, and it's genuinely one of the cuter little structs in ./include/uapi/linux/ethtool.h β€” it's all about rings, which sounds like jewelry πŸ’ but is actually about how many entries your RX and TX rings can hold. No cap. Let's get into it.


🌸 SYNOPSIS 🌸

struct ethtool_ringparam {
    __u32 cmd;
    __u32 rx_max_pending;
    __u32 rx_mini_max_pending;
    __u32 rx_jumbo_max_pending;
    __u32 tx_max_pending;
    __u32 rx_pending;
    __u32 rx_mini_pending;
    __u32 rx_jumbo_pending;
    __u32 tx_pending;
 };

Like, there it is. Iconic. Nine __u32 fields, all lined up, all serving their purpose. πŸ’…


πŸŽ€ Members πŸŽ€

  • cmd β€” the command number. It's literally ETHTOOL_GRINGPARAM or ETHTOOL_SRINGPARAM. Get it? G for get, S for set. Main character energy.
  • rx_max_pending β€” the max number of pending entries per RX ring that the thing can actually support. Read-only, so don't even try to write to it, bestie. πŸ™ˆ
  • rx_mini_max_pending β€” same deal, but for the RX mini ring. Max supported pending entries. Read-only.
  • rx_jumbo_max_pending β€” and again, but this time for the RX jumbo ring. Max supported pending entries. Read-only.
  • tx_max_pending β€” max supported pending entries per TX ring. Yep, you guessed it: Read-only. 🫢
  • rx_pending β€” the current maximum number of pending entries per RX ring. This one's not read-only, so it's giving "you can actually touch this."
  • rx_mini_pending β€” current maximum pending entries per RX mini ring.
  • rx_jumbo_pending β€” current maximum pending entries per RX jumbo ring.
  • tx_pending β€” the current maximum supported number of pending entries per TX ring. Note the vibe: "supported" is in there for TX, it's just how the original says it. Not me making that up. πŸ’€

πŸ¦‹ Description πŸ¦‹

So here's the tea πŸ“: if the interface doesn't have separate RX mini rings and/or jumbo rings, then rx_mini_max_pending and/or rx_jumbo_max_pending are just gonna be 0. Like, empty. Nada. Not every NIC is blessed with those.

⚠️ Also lowkey important: there may be driver-dependent minimum values for the number of entries per ring. So the "max" fields don't mean every value under them is chill β€” your driver gets a say and it might have ✨boundaries✨.

πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./include/uapi/linux/ethtool.h, plus this whole extended universe of friends:

struct ethtool_cmd(9), struct ethtool_drvinfo(9), struct ethtool_wolinfo(9), struct ethtool_regs(9), struct ethtool_eeprom(9), struct ethtool_eee(9), struct ethtool_modinfo(9), struct ethtool_coalesce(9), struct ethtool_channels(9), struct ethtool_pauseparam(9), enum ethtool_stringset(9), enum ethtool_mac_stats_src(9), enum ethtool_module_power_mode_policy(9), enum ethtool_module_power_mode(9), enum ethtool_c33_pse_ext_state(9), enum ethtool_c33_pse_ext_substate_mr_mps_valid(9), enum ethtool_c33_pse_ext_substate_error_condition(9), enum ethtool_c33_pse_ext_substate_mr_pse_enable(9), enum ethtool_c33_pse_ext_substate_option_detect_ted(9), enum ethtool_c33_pse_ext_substate_option_vport_lim(9), enum ethtool_c33_pse_ext_substate_ovld_detected(9), enum ethtool_c33_pse_ext_substate_power_not_available(9), enum ethtool_c33_pse_ext_substate_short_detected(9), enum ethtool_pse_types(9), enum ethtool_c33_pse_admin_state(9), enum ethtool_c33_pse_pw_d_status(9), enum ethtool_podl_pse_admin_state(9), enum ethtool_podl_pse_pw_d_status(9), enum ethtool_mm_verify_status(9), enum ethtool_module_fw_flash_status(9), struct ethtool_gstrings(9), struct ethtool_sset_info(9), enum ethtool_test_flags(9), struct ethtool_test(9), struct ethtool_stats(9), struct ethtool_perm_addr(9), struct ethtool_tcpip4_spec(9), struct ethtool_ah_espip4_spec(9), struct ethtool_usrip4_spec(9), struct ethtool_tcpip6_spec(9), struct ethtool_ah_espip6_spec(9), struct ethtool_usrip6_spec(9), struct ethtool_flow_ext(9), struct ethtool_rx_flow_spec(9), struct ethtool_rxnfc(9), struct ethtool_rxfh_indir(9), struct ethtool_rxfh(9), struct ethtool_rx_ntuple_flow_spec(9), struct ethtool_rx_ntuple(9), struct ethtool_dump(9), struct ethtool_get_features_block(9), struct ethtool_gfeatures(9), struct ethtool_set_features_block(9), struct ethtool_sfeatures(9), struct ethtool_ts_info(9), struct ethtool_per_queue_op(9), struct ethtool_fecparam(9), enum ethtool_fec_config_bits(9), struct ethtool_link_settings(9), enum phy_upstream(9)

That's the whole group chat, fr fr. πŸ’œ


Okay that's the page!! This one lives at ./include/uapi/linux and it's dated October 2026 β€” yes, we're reading the future, slay. Go forth and configure your rings responsibly, bestie. 🧚✨

πŸ“¦ where this page comes from