STRUCT ETHTOOL_CHANNELS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct ethtool_channels(9) β€” the Kernel API Manual, but make it make sense

okay so bestie, welcome to the struct ethtool_channels(9) page πŸ’– this is part of the Kernel API Manual and it's genuinely one of the cuter little structs β€” it's literally the vibe check for how many network channels your NIC is running. let's get into it πŸŽ€


✨ NAME ✨

struct ethtool_channels β€” configuring number of network channel 🌸

no cap, that's the whole thing: you use this to say how many channels you want. channel queen energy πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the exact shape of it, character for character, don't @ me:

struct ethtool_channels {
    __u32 cmd;
    __u32 max_rx;
    __u32 max_tx;
    __u32 max_other;
    __u32 max_combined;
    __u32 rx_count;
    __u32 tx_count;
    __u32 other_count;
    __u32 combined_count;
 };

every field is a __u32. yes, all of them. consistent king behavior πŸ’…


🧚 Members 🧚

okay so these are the fields, one by one, and I'm telling you exactly what each one does:

  • cmd β€” this is ETHTOOL_{G,S}CHANNELS. that's the get-or-set switch, iykyk. G for get, S for set. πŸ”₯
  • max_rx β€” Read only. Maximum number of receive channel the driver support. so the driver tells you the ceiling and you do not exceed it. ⭐
  • max_tx β€” Read only. Maximum number of transmit channel the driver support. same deal, but for transmit. ✨
  • max_other β€” Read only. Maximum number of other channel the driver support. the mysterious "other" channels. main character energy honestly πŸ™ˆ
  • max_combined β€” Read only. Maximum number of combined channel the driver support. and btw this is a Set of queues RX, TX or other β€” combined channels do double duty 🫢
  • rx_count β€” Valid values are in the range 1 to the max_rx. πŸ’–
  • tx_count β€” Valid values are in the range 1 to the max_tx. πŸ’–
  • other_count β€” Valid values are in the range 1 to the max_other. πŸ’–
  • combined_count β€” Valid values are in the range 1 to the max_combined. πŸ’–
so real talk: the max_* ones are the read-only ceilings the driver reports, and the *_count ones are the values you're actually setting β€” and they gotta stay inside 1 to their matching max. that range is not a suggestion bestie 😭

🌈 Description 🌈

This can be used to configure RX, TX and other channels. like, that's it, that's the whole flex. you wanna tune how your network traffic gets spread across queues β€” RX, TX, or other β€” you're in the right struct. ate and left no crumbs πŸ“


πŸ‘‘ SEE ALSO πŸ‘‘

bestie there are SO many siblings, I'm listing every single one because I would never do them dirty like that πŸ₯Ί the kernel file is ./include/uapi/linux/ethtool.h, and here's the whole family:

  • 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_ringparam(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 squad, no gatekeeping πŸ’€βœ¨


and that's the page!! this one lives in ./include/uapi/linux and the version/date stamp on it is October 2026 β€” so yeah, shoutout to that directory and that date, they're iconic, periodt. go configure some channels bestie, you got this πŸ’œπŸ¦‹

πŸ“¦ where this page comes from