STRUCT ETHTOOL_DRVINFO(9)
πββοΈ 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 equalsETHTOOL_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 thedev_namestring 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 theETHTOOL_GPFLAGSandETHTOOL_SPFLAGScommands; also the number of strings in theETH_SS_PRIV_FLAGSset. double duty icon πn_statsβ number ofu64statistics returned by theETHTOOL_GSTATScommand; also the number of strings in theETH_SS_STATSset. stats queen fr fr πtestinfo_lenβ number of results returned by theETHTOOL_TESTcommand; also the number of strings in theETH_SS_TESTset π§ͺeedump_lenβ size of EEPROM accessible through theETHTOOL_GEEPROMandETHTOOL_SEEPROMcommands, in bytes βregdump_lenβ size of the register dump returned by theETHTOOL_GREGScommand, 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 andETHTOOL_GDRVINFOresponsibly, bestie. slay π π
π¦ 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