Commit 271907ee authored by Gal Pressman's avatar Gal Pressman Committed by Saeed Mahameed
Browse files

net/mlx5: Query the maximum MCIA register read size from firmware



The MCIA register supports either 12 or 32 dwords, use the correct value
by querying the capability from the MCAM register.

Signed-off-by: default avatarGal Pressman <gal@nvidia.com>
Reviewed-by: default avatarMaxim Mikityanskiy <maximmi@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent fbf6836d
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -365,6 +365,12 @@ static void mlx5_sfp_eeprom_params_set(u16 *i2c_addr, int *page_num, u16 *offset
	*offset -= MLX5_EEPROM_PAGE_LENGTH;
}

static int mlx5_mcia_max_bytes(struct mlx5_core_dev *dev)
{
	/* mcia supports either 12 dwords or 32 dwords */
	return (MLX5_CAP_MCAM_FEATURE(dev, mcia_32dwords) ? 32 : 12) * sizeof(u32);
}

static int mlx5_query_mcia(struct mlx5_core_dev *dev,
			   struct mlx5_module_eeprom_query_params *params, u8 *data)
{
@@ -374,7 +380,7 @@ static int mlx5_query_mcia(struct mlx5_core_dev *dev,
	void *ptr;
	u16 size;

	size = min_t(int, params->size, MLX5_EEPROM_MAX_BYTES);
	size = min_t(int, params->size, mlx5_mcia_max_bytes(dev));

	MLX5_SET(mcia_reg, in, l, 0);
	MLX5_SET(mcia_reg, in, size, size);
+3 −1
Original line number Diff line number Diff line
@@ -9691,7 +9691,9 @@ struct mlx5_ifc_pcam_reg_bits {
};

struct mlx5_ifc_mcam_enhanced_features_bits {
	u8         reserved_at_0[0x6a];
	u8         reserved_at_0[0x5d];
	u8         mcia_32dwords[0x1];
	u8         reserved_at_5e[0xc];
	u8         reset_state[0x1];
	u8         ptpcyc2realtime_modify[0x1];
	u8         reserved_at_6c[0x2];
+0 −1
Original line number Diff line number Diff line
@@ -56,7 +56,6 @@ enum mlx5_an_status {
	MLX5_AN_LINK_DOWN   = 4,
};

#define MLX5_EEPROM_MAX_BYTES			32
#define MLX5_EEPROM_IDENTIFIER_BYTE_MASK	0x000000ff
#define MLX5_I2C_ADDR_LOW		0x50
#define MLX5_I2C_ADDR_HIGH		0x51