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