mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 20:54:03 +02:00
net/mlx5e: Fix reporting support for all RS FEC variants
get_fec_supported_advertised() populates the FEC modes reported as supported to userspace. The MLX5E_ADVERTISE_SUPPORTED_FEC macro only checked MLX5E_FEC_RS_528_514, causing devices that support only the other RS variants (RS_544_514_INTERLEAVED_QUAD or RS_544_514) to not advertise RS as supported to ethtool at all. Introduce MLX5E_FEC_RS_MASK covering all three RS bit positions, update the macro to accept a bitmask directly rather than a single enum value, and pass MLX5E_FEC_RS_MASK for the RS entry. Fixes:b5ede32d33("net/mlx5e: Add support for FEC modes based on 50G per lane links") Fixes:4e343c11ef("net/mlx5e: Support FEC settings for 200G per lane link modes") Signed-off-by: Shahar Shitrit <shshitrit@nvidia.com> Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com> Reviewed-by: Yael Chemla <ychemla@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20260902164634.3657606-4-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
b9d755c5a3
commit
c84ce45a7a
|
|
@ -66,4 +66,8 @@ enum {
|
|||
MLX5E_FEC_LLRS_272_257_1 = 9,
|
||||
};
|
||||
|
||||
#define MLX5E_FEC_RS_MASK (BIT(MLX5E_FEC_RS_528_514) | \
|
||||
BIT(MLX5E_FEC_RS_544_514_INTERLEAVED_QUAD) | \
|
||||
BIT(MLX5E_FEC_RS_544_514))
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1002,9 +1002,9 @@ static u32 pplm2ethtool_fec(u_long fec_mode, unsigned long size)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define MLX5E_ADVERTISE_SUPPORTED_FEC(mlx5_fec, ethtool_fec) \
|
||||
#define MLX5E_ADVERTISE_SUPPORTED_FEC(fec_mask, ethtool_fec) \
|
||||
do { \
|
||||
if (mlx5e_fec_in_caps(dev, 1 << (mlx5_fec))) \
|
||||
if (mlx5e_fec_in_caps(dev, fec_mask)) \
|
||||
__set_bit(ethtool_fec, \
|
||||
link_ksettings->link_modes.supported);\
|
||||
} while (0)
|
||||
|
|
@ -1030,13 +1030,13 @@ static int get_fec_supported_advertised(struct mlx5_core_dev *dev,
|
|||
if (err)
|
||||
return (err == -EOPNOTSUPP) ? 0 : err;
|
||||
|
||||
MLX5E_ADVERTISE_SUPPORTED_FEC(MLX5E_FEC_NOFEC,
|
||||
MLX5E_ADVERTISE_SUPPORTED_FEC(BIT(MLX5E_FEC_NOFEC),
|
||||
ETHTOOL_LINK_MODE_FEC_NONE_BIT);
|
||||
MLX5E_ADVERTISE_SUPPORTED_FEC(MLX5E_FEC_FIRECODE,
|
||||
MLX5E_ADVERTISE_SUPPORTED_FEC(BIT(MLX5E_FEC_FIRECODE),
|
||||
ETHTOOL_LINK_MODE_FEC_BASER_BIT);
|
||||
MLX5E_ADVERTISE_SUPPORTED_FEC(MLX5E_FEC_RS_528_514,
|
||||
MLX5E_ADVERTISE_SUPPORTED_FEC(MLX5E_FEC_RS_MASK,
|
||||
ETHTOOL_LINK_MODE_FEC_RS_BIT);
|
||||
MLX5E_ADVERTISE_SUPPORTED_FEC(MLX5E_FEC_LLRS_272_257_1,
|
||||
MLX5E_ADVERTISE_SUPPORTED_FEC(BIT(MLX5E_FEC_LLRS_272_257_1),
|
||||
ETHTOOL_LINK_MODE_FEC_LLRS_BIT);
|
||||
|
||||
active_fec_long = active_fec;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user