Commit 135dd959 authored by Erez Alfasi's avatar Erez Alfasi Committed by David S. Miller

net/mlx4_en: ethtool, Remove unsupported SFP EEPROM high pages query

Querying EEPROM high pages data for SFP module is currently
not supported by our driver but is still tried, resulting in
invalid FW queries.

Set the EEPROM ethtool data length to 256 for SFP module to
limit the reading for page 0 only and prevent invalid FW queries.

Fixes: 7202da8b ("ethtool, net/mlx4_en: Cable info, get_module_info/eeprom ethtool support")
Signed-off-by: default avatarErez Alfasi <ereza@mellanox.com>
Signed-off-by: default avatarTariq Toukan <tariqt@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 526f5b85
...@@ -2010,6 +2010,8 @@ static int mlx4_en_set_tunable(struct net_device *dev, ...@@ -2010,6 +2010,8 @@ static int mlx4_en_set_tunable(struct net_device *dev,
return ret; return ret;
} }
#define MLX4_EEPROM_PAGE_LEN 256
static int mlx4_en_get_module_info(struct net_device *dev, static int mlx4_en_get_module_info(struct net_device *dev,
struct ethtool_modinfo *modinfo) struct ethtool_modinfo *modinfo)
{ {
...@@ -2044,7 +2046,7 @@ static int mlx4_en_get_module_info(struct net_device *dev, ...@@ -2044,7 +2046,7 @@ static int mlx4_en_get_module_info(struct net_device *dev,
break; break;
case MLX4_MODULE_ID_SFP: case MLX4_MODULE_ID_SFP:
modinfo->type = ETH_MODULE_SFF_8472; modinfo->type = ETH_MODULE_SFF_8472;
modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN; modinfo->eeprom_len = MLX4_EEPROM_PAGE_LEN;
break; break;
default: default:
return -EINVAL; return -EINVAL;
......
...@@ -2077,11 +2077,6 @@ int mlx4_get_module_info(struct mlx4_dev *dev, u8 port, ...@@ -2077,11 +2077,6 @@ int mlx4_get_module_info(struct mlx4_dev *dev, u8 port,
size -= offset + size - I2C_PAGE_SIZE; size -= offset + size - I2C_PAGE_SIZE;
i2c_addr = I2C_ADDR_LOW; i2c_addr = I2C_ADDR_LOW;
if (offset >= I2C_PAGE_SIZE) {
/* Reset offset to high page */
i2c_addr = I2C_ADDR_HIGH;
offset -= I2C_PAGE_SIZE;
}
cable_info = (struct mlx4_cable_info *)inmad->data; cable_info = (struct mlx4_cable_info *)inmad->data;
cable_info->dev_mem_address = cpu_to_be16(offset); cable_info->dev_mem_address = cpu_to_be16(offset);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment