ixgbe_read_i2c_byte_generic(9)
π ixgbe_read_i2c_byte_generic β kernel API manual, but make it make sense
okay bestie, so this one lives in the Kernel API Manual and it's called ixgbe_read_i2c_byte_generic(9) β say that three times fast, I dare you π. It's the little function that reads one single byte out of an SFP module's EEPROM over I2C, and honestly? It's giving quiet-helper energy. Not the main character, but everything falls apart without it π.
β¨ NAME β¨
ixgbe_read_i2c_byte_generic β reads 8 bit word over I2C π
(no, we are not calling it a "word" and a "byte" in the same breath, that's the manpage's business, not mine β we ride at dawn for the original author π«Ά)
πΈ SYNOPSIS πΈ
int ixgbe_read_i2c_byte_generic (struct ixgbe_hw *hw , u8 byte_offset ,
u8 dev_addr , u8 *data );
like, look at that signature. four arguments. returns an int. she's tidy, she's focused, she knows what she wants π
π¦ ARGUMENTS π¦
okay so here's who's who in the group chat:
hwβ pointer to the hardware structure. the main character of the whole ixgbe extended universe, fr fr πbyte_offsetβ byte offset to read. telling her where in the EEPROM to look πdev_addrβ device address. who exactly are we knocking on the door of πͺdataβ value read. this is the output β she writes back into here, so don't you dare pass garbage π
π DESCRIPTION π
So what actually happens? Performs a byte read operation to the SFP module's EEPROM over the I2C interface, at a specified device address. That's it. That's the whole vibe β¨
Like β she goes out over I2C, hits the EEPROM inside the SFP module, grabs exactly one byte at the address you told her, and drops it in data. One byte. No notes. ate and left no crumbs π
She's one of the _generic girlies too, which means she plays nice with the hardware-abstraction layer instead of hardcoding anything β highkey iconic π§
π₯ SEE ALSO π₯
the whole extended friend group, in order, no cap β I'm not skipping a single one of these, I refuse π:
- the kernel file:
./drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c ixgbe_out_i2c_byte_ack(9)ixgbe_in_i2c_byte_ack(9)ixgbe_ones_comp_byte_add(9)ixgbe_read_i2c_combined_generic_int(9)ixgbe_write_i2c_combined_generic_int(9)ixgbe_probe_phy(9)ixgbe_identify_phy_generic(9)ixgbe_check_reset_blocked(9)ixgbe_get_phy_id(9)ixgbe_get_phy_type_from_id(9)ixgbe_reset_phy_generic(9)ixgbe_read_phy_reg_mdi(9)ixgbe_read_phy_reg_generic(9)ixgbe_write_phy_reg_mdi(9)ixgbe_write_phy_reg_generic(9)ixgbe_msca_cmd(9)ixgbe_mii_bus_read_generic_c22(9)ixgbe_mii_bus_read_generic_c45(9)ixgbe_mii_bus_write_generic_c22(9)ixgbe_mii_bus_write_generic_c45(9)ixgbe_mii_bus_read_c22(9)ixgbe_mii_bus_read_c45(9)ixgbe_mii_bus_write_c22(9)ixgbe_mii_bus_write_c45(9)ixgbe_x550em_a_mii_bus_read_c22(9)ixgbe_x550em_a_mii_bus_read_c45(9)ixgbe_x550em_a_mii_bus_write_c22(9)ixgbe_x550em_a_mii_bus_write_c45(9)ixgbe_get_first_secondary_devfn(9)ixgbe_x550em_a_has_mii(9)ixgbe_mii_bus_init(9)ixgbe_setup_phy_link_generic(9)ixgbe_setup_phy_link_speed_generic(9)ixgbe_get_copper_speeds_supported(9)ixgbe_get_copper_link_capabilities_generic(9)ixgbe_check_phy_link_tnx(9)ixgbe_setup_phy_link_tnx(9)ixgbe_reset_phy_nl(9)ixgbe_identify_module_generic(9)ixgbe_identify_sfp_module_generic(9)ixgbe_identify_qsfp_module_generic(9)ixgbe_get_sfp_init_sequence_offsets(9)ixgbe_read_i2c_eeprom_generic(9)ixgbe_read_i2c_sff8472_generic(9)ixgbe_write_i2c_eeprom_generic(9)ixgbe_is_sfp_probe(9)ixgbe_read_i2c_byte_generic_int(9)ixgbe_read_i2c_byte_generic_unlocked(9)ixgbe_write_i2c_byte_generic_int(9)ixgbe_write_i2c_byte_generic(9)ixgbe_write_i2c_byte_generic_unlocked(9)ixgbe_i2c_start(9)ixgbe_i2c_stop(9)ixgbe_clock_in_i2c_byte(9)ixgbe_clock_out_i2c_byte(9)ixgbe_get_i2c_ack(9)ixgbe_clock_in_i2c_bit(9)ixgbe_clock_out_i2c_bit(9)ixgbe_raise_i2c_clk(9)ixgbe_lower_i2c_clk(9)ixgbe_set_i2c_data(9)ixgbe_get_i2c_data(9)ixgbe_i2c_bus_clear(9)ixgbe_tn_check_overtemp(9)
that's the whole roster, bestie. iykyk π
real talk for a sec: this page has no warnings, no exit-status list, no environment variables, and no BUGS section in the original β so there's nothing spicy to warn you about here. just a byte, an I2C bus, and a dream π
okay and finally, the sign-off β the footer of this page points at the source path that got cut off in the original at ./drivers/net/ethernet/intel/i... (yep, truncated mid-path, tragic π), dated October 2026, and it's stamped with the manual name ixgbe_read_i2c_byte_generic(9) all over again. that's a wrap, mwah πβ¨
π¦ 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