ixgbe: fix SFF data dumps of SFP+ modules from an offset
This patch fixes the read loop for the I2C data to account for the offset. Also includes a whitespace cleanup and removes ret_val as it is not needed. CC: Ben Hutchings <bhutchings@solarflare.com> Reported-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com> Reviewed-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
committed by
Jeff Kirsher
parent
1b1bf31a12
commit
31c7d2b06b
@@ -2946,28 +2946,27 @@ static int ixgbe_get_module_eeprom(struct net_device *dev,
|
|||||||
u32 status = IXGBE_ERR_PHY_ADDR_INVALID;
|
u32 status = IXGBE_ERR_PHY_ADDR_INVALID;
|
||||||
u8 databyte = 0xFF;
|
u8 databyte = 0xFF;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int ret_val = 0;
|
|
||||||
|
|
||||||
if (ee->len == 0)
|
if (ee->len == 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
for (i = ee->offset; i < ee->len; i++) {
|
for (i = ee->offset; i < ee->offset + ee->len; i++) {
|
||||||
/* I2C reads can take long time */
|
/* I2C reads can take long time */
|
||||||
if (test_bit(__IXGBE_IN_SFP_INIT, &adapter->state))
|
if (test_bit(__IXGBE_IN_SFP_INIT, &adapter->state))
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
if (i < ETH_MODULE_SFF_8079_LEN)
|
if (i < ETH_MODULE_SFF_8079_LEN)
|
||||||
status = hw->phy.ops.read_i2c_eeprom(hw, i, &databyte);
|
status = hw->phy.ops.read_i2c_eeprom(hw, i, &databyte);
|
||||||
else
|
else
|
||||||
status = hw->phy.ops.read_i2c_sff8472(hw, i, &databyte);
|
status = hw->phy.ops.read_i2c_sff8472(hw, i, &databyte);
|
||||||
|
|
||||||
if (status != 0)
|
if (status != 0)
|
||||||
ret_val = -EIO;
|
return -EIO;
|
||||||
|
|
||||||
data[i - ee->offset] = databyte;
|
data[i - ee->offset] = databyte;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret_val;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct ethtool_ops ixgbe_ethtool_ops = {
|
static const struct ethtool_ops ixgbe_ethtool_ops = {
|
||||||
|
Reference in New Issue
Block a user