STRUCT ETHTOOL_DRVINFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’β€β™€οΈ struct ethtool_drvinfo β€” the little info packet that tells you EVERYTHING about your driver πŸŽ€

okay bestie, so this is a page from the Kernel API Manual, and it's about struct ethtool_drvinfo β€” literally the glow-up info card for your driver and device 🌸. Think of it as the driver's little bio: who it is, what version it's on, what firmware it's running, where it lives on the bus, all of it. Obsessed πŸ’–.


✨ NAME ✨

struct ethtool_drvinfo β€” general driver and device information. it's giving "hi my name is and here's my whole resume" πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

struct ethtool_drvinfo {
    __u32 cmd;
    char driver[32];
    char version[32];
    char fw_version[ETHTOOL_FWVERS_LEN];
    char bus_info[ETHTOOL_BUSINFO_LEN];
    char erom_version[ETHTOOL_EROMVERS_LEN];
    char reserved2[12];
    __u32 n_priv_flags;
    __u32 n_stats;
    __u32 testinfo_len;
    __u32 eedump_len;
    __u32 regdump_len;
 };

like, that's the whole struct, no cap. every field copied exactly, don't come for me βœ‹


🧚 MEMBERS 🧚

okay so let's go field by field, bestie, because each one is a whole personality 🫢

  • cmd β€” the command number, and it equals ETHTOOL_GDRVINFO. that's literally its whole job ✨
  • driver β€” the driver's short name. it should normally match the name in its bus driver structure (e.g. pci_driver::name). Must not be an empty string β€” like, it can't just show up with no name, that's not the vibe πŸ™ˆ
  • version β€” the driver version string. it may be an empty string, so if it ghosts you, that's allowed πŸ’€
  • fw_version β€” firmware version string, and it's driver defined. may be an empty string too, lowkey chill about it 🌈
  • bus_info β€” the device bus address. this should match the dev_name string for the underlying bus device, if there is one. may be an empty string β€” so like, it's optional, iykyk πŸ¦‹
  • erom_version β€” Expansion ROM version string, driver defined, may be an empty string. fancy πŸ’…
  • reserved2 β€” reserved for future use. see the note on reserved space πŸ‘€ (yes, it's the "we're saving this seat for someone" of the struct)
  • n_priv_flags β€” number of flags valid for the ETHTOOL_GPFLAGS and ETHTOOL_SPFLAGS commands; also the number of strings in the ETH_SS_PRIV_FLAGS set. double duty icon πŸ‘‘
  • n_stats β€” number of u64 statistics returned by the ETHTOOL_GSTATS command; also the number of strings in the ETH_SS_STATS set. stats queen fr fr πŸ“Š
  • testinfo_len β€” number of results returned by the ETHTOOL_TEST command; also the number of strings in the ETH_SS_TEST set πŸ§ͺ
  • eedump_len β€” size of EEPROM accessible through the ETHTOOL_GEEPROM and ETHTOOL_SEEPROM commands, in bytes ⭐
  • regdump_len β€” size of the register dump returned by the ETHTOOL_GREGS command, in bytes πŸ”₯

🌈 DESCRIPTION 🌈

so here's the tea: users can use the ETHTOOL_GSSET_INFO command to get the number of strings in any string set (from Linux 2.6.34). that's it, that's the whole description, and it ate πŸ’–


🌸 SEE ALSO 🌸

buckle up bestie, this list is LONG and every single one is here, don't skip πŸ’€

Kernel file ./include/uapi/linux/ethtool.h, struct ethtool_cmd(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_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)

like, that's a whole friend group and we love them all 🫢✨


πŸ’– little sign-off from me to you: this page lives in ./include/uapi/linux, it's dated October 2026, and it's from the Kernel API Manual (that's the source/version vibe babe). go forth and ETHTOOL_GDRVINFO responsibly, bestie. slay πŸ’…πŸ‘‘
πŸ“¦ where this page comes from