On Wed, Apr 05, 2023 at 06:39:00PM +0300, Ivan Bornyakov wrote: > sfp->i2c_block_size is initialized at SFP module insertion in > sfp_sm_mod_probe(). Because of that, if SFP module was not inserted > since boot, ethtool -m leads to zero-length I2C read attempt. > > # ethtool -m xge0 > i2c i2c-3: adapter quirk: no zero length (addr 0x0050, size 0, read) > Cannot get Module EEPROM data: Operation not supported Do i understand you correct in that this is when the SFP cage has always been empty? The I2C transaction is going to fail whatever the length is. > If SFP module was plugged then removed at least once, > sfp->i2c_block_size will be initialized and ethtool -m will fail with > different error > > # ethtool -m xge0 > Cannot get Module EEPROM data: Remote I/O error So again, the SFP cage is empty? I wonder if a better fix is to use sfp->state & SFP_F_PRESENT in sfp_module_eeprom() and sfp_module_eeprom_by_page() and don't even do the I2C read if there is no module in the cage? Andrew