STRUCT ETHTOOL_MODULE_EEPROM(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME

struct ethtool_module_eeprom β€” the read / write parameters for plug-in module EEPROM, bestie ✨

Like, this is the little struct that carries all the deets you need when you're talking to a plug-in module's EEPROM. She's giving "backstage pass to the memory" energy, no cap πŸŽ€


🌸 SYNOPSIS

struct ethtool_module_eeprom {
    u32 offset;
    u32 length;
    u8 page;
    u8 bank;
    u8 i2c_address;
    u8 *data;
 };

There she is πŸ˜­πŸ’– the whole squad, in order, exactly like that.


πŸ¦‹ Members

  • offset β€” okay so this one is lowkey the main character πŸ‘‘. When offset is 0-127, it's used as an address to the Lower Memory (and heads up, page must be 0 in that case, fr fr). Otherwise β€” like, any other value β€” it's used as an address to the Upper Memory. Two modes, one field, she contains multitudes ✨
  • length β€” the number of bytes to read / write. That's it, that's the whole vibe πŸ“
  • page β€” the page number. Yep. Just the page number πŸ’…
  • bank β€” the bank number, if supported by EEPROM spec. Key word: if πŸ™ˆ some EEPROMs simply do not have bank energy.
  • i2c_address β€” the I2C address of a page. A value less than 0x7f is expected ⭐ and ngl, most EEPROMs use 0x50 or 0x51 β€” those are the iconic ones, iykyk 🌈
  • data β€” pointer to a buffer with EEPROM data of length size. So like, the actual payload, the real content, the reason we're all here 🫢

🧚 SEE ALSO

Kernel file ./include/linux/ethtool.h β€” and the whole extended friend group πŸ’œ:

enum ethtool_phys_id_state(9), struct kernel_ethtool_ringparam(9), enum ethtool_supported_ring_param(9), ethtool_rxfh_indir_default(9), struct ethtool_rxfh_context(9), ethtool_link_ksettings_zero_link_mode(9), ethtool_link_ksettings_add_link_mode(9), ethtool_link_ksettings_del_link_mode(9), ethtool_link_ksettings_test_link_mode(9), ethtool_intersect_link_masks(9), struct ethtool_phy_stats(9), struct ethtool_pause_stats(9), struct ethtool_fec_hist_range(9), struct ethtool_fec_stats(9), struct ethtool_rmon_hist_range(9), struct ethtool_rmon_stats(9), struct ethtool_ts_stats(9), struct ethtool_module_power_mode_params(9), struct ethtool_mm_state(9), struct ethtool_mm_cfg(9), struct ethtool_mm_stats(9), struct ethtool_mmsv_ops(9), struct ethtool_mmsv(9), struct ethtool_rxfh_param(9), struct ethtool_rxfh_fields(9), struct kernel_ethtool_ts_info(9), struct ethtool_ops(9), struct ethtool_netdev_state(9), struct ethtool_phy_ops(9), ethtool_set_ethtool_phy_ops(9), ethtool_params_from_link_mode(9), ethtool_get_phc_vclocks(9), ethtool_mm_frag_size_add_to_min(9), ethtool_mm_frag_size_min_to_add(9), ethtool_get_ts_info_by_layer(9), ethtool_sprintf(9), ethtool_puts(9), ethtool_cpy(9)


okay that's the whole page, you ate that 🫢✨ this one lives in ./include/linux, dated October 2026, and she's filed under struct ethto...odule_eeprom(9) (yes the name got truncated, she's mysterious like that πŸ’€πŸ’…). go read your EEPROMs responsibly, mwah πŸŽ€

πŸ“¦ where this page comes from