STRUCT ETHTOOL_EEE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct ethtool_eee(9) β€” like, the whole vibe check on Energy Efficient Ethernet info πŸ’–

okay so this page lives in the Kernel API Manual, and bestie, it's all about one little struct that holds literally everything the kernel knows about Energy Efficient Ethernet. it's giving "small struct, big opinions." let's get into it 🧚


✨ NAME ✨

struct ethtool_eee β€” Energy Efficient Ethernet information. that's it, that's the whole name, and honestly? iconic. no notes. πŸ’…


🌸 SYNOPSIS 🌸

here's the struct in all its glory, and yes i'm putting it exactly how it is because we do NOT edit the source in this house πŸ‘‘

struct ethtool_eee {
    __u32 cmd;
    __u32 supported;
    __u32 advertised;
    __u32 lp_advertised;
    __u32 eee_active;
    __u32 eee_enabled;
    __u32 tx_lpi_enabled;
    __u32 tx_lpi_timer;
    __u32 reserved[2];
 };

πŸ¦‹ Members πŸ¦‹

okay, member-by-member, let's go, this is the main character section fr fr 🫢

  • cmd β€” it's ETHTOOL_{G,S}EEE. the command field, keeping it simple, doing its little job. ✨
  • supported β€” a mask of SUPPORTED_* flags, listing the speed/duplex combos that actually have EEE support. this is the "what could we even do" field. 🌈
  • advertised β€” a mask of ADVERTISED_* flags for the speed/duplex combos that are advertised as eee capable. so like, what we're putting out into the world πŸ’–
  • lp_advertised β€” a mask of ADVERTISED_* flags for the speed/duplex combos that the link partner advertised as eee capable. lp = link partner, iykyk. it's what the other end of the cable is saying about itself πŸ‘€
  • eee_active β€” literally just the result of the eee auto negotiation. whatever came out of that whole negotiation situation. πŸ’€
  • eee_enabled β€” the EEE configured mode, so: enabled or disabled. that's the whole field. πŸŽ€
  • tx_lpi_enabled β€” whether the interface should assert its tx lpi, given that eee was negotiated. conditional queen πŸ‘‘
  • tx_lpi_timer β€” time in microseconds that the interface delays before asserting its tx lpi (after reaching the 'idle' state). ⏱️ and note: it's effective only when eee was negotiated and tx_lpi_enabled was set. read that twice bestie, it matters πŸ”₯
  • reserved β€” reserved for future use; see the note on reserved space. it's a reserved[2], so two of them, just vibing there waiting for their moment 🌸
no cap, nothing on this page is dangerous, it's just a struct. but do respect the "effective only when…" caveat on tx_lpi_timer or the timer does literally nothing and you'll be sad 😭

⭐ SEE ALSO ⭐

starting with the kernel file itself: ./include/uapi/linux/ethtool.h, and then the whole extended friend group:

  • struct ethtool_cmd(9)
  • struct ethtool_drvinfo(9)
  • struct ethtool_wolinfo(9)
  • struct ethtool_regs(9)
  • struct ethtool_eeprom(9)
  • struct ethtool_modinfo(9)
  • struct ethtool_coalesce(9)
  • struct ethtool_ringparam(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)

and that's the whole page, bestie. go read your ethtool headers, you're gonna slay. πŸ’œ

this little number came from the source ./include/uapi/linux, dated October 2026. πŸŽ€ bye, love you, read your manpages 🫢

πŸ“¦ where this page comes from