]> git.itanic.dy.fi Git - linux-stable/commitdiff
net/mlx5: Fix RoCE setting at HCA level
authorShay Drory <shayd@nvidia.com>
Wed, 9 Nov 2022 12:42:59 +0000 (14:42 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Wed, 28 Dec 2022 19:38:50 +0000 (11:38 -0800)
mlx5 PF can disable RoCE for its VFs and SFs. In such case RoCE is
marked as unsupported on those VFs/SFs.
The cited patch added an option for disable (and enable) RoCE at HCA
level. However, that commit didn't check whether RoCE is supported on
the HCA and enabled user to try and set RoCE to on.
Fix it by checking whether the HCA supports RoCE.

Fixes: fbfa97b4d79f ("net/mlx5: Disable roce at HCA level")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/devlink.c
drivers/net/ethernet/mellanox/mlx5/core/main.c

index be59bb35d795cf92e739105e3fef4f0501b88ec3..5bd83c0275f8218af3a2f182376706cfbff08c7c 100644 (file)
@@ -468,7 +468,7 @@ static int mlx5_devlink_enable_roce_validate(struct devlink *devlink, u32 id,
        bool new_state = val.vbool;
 
        if (new_state && !MLX5_CAP_GEN(dev, roce) &&
-           !MLX5_CAP_GEN(dev, roce_rw_supported)) {
+           !(MLX5_CAP_GEN(dev, roce_rw_supported) && MLX5_CAP_GEN_MAX(dev, roce))) {
                NL_SET_ERR_MSG_MOD(extack, "Device doesn't support RoCE");
                return -EOPNOTSUPP;
        }
index ec5652f31dda1874bf8b4c854807b17189bd3c0b..df134f6d32dc583a93f96f24cef5ccfc1a4cfd23 100644 (file)
@@ -613,7 +613,7 @@ static int handle_hca_cap(struct mlx5_core_dev *dev, void *set_ctx)
                MLX5_SET(cmd_hca_cap, set_hca_cap, num_total_dynamic_vf_msix,
                         MLX5_CAP_GEN_MAX(dev, num_total_dynamic_vf_msix));
 
-       if (MLX5_CAP_GEN(dev, roce_rw_supported))
+       if (MLX5_CAP_GEN(dev, roce_rw_supported) && MLX5_CAP_GEN_MAX(dev, roce))
                MLX5_SET(cmd_hca_cap, set_hca_cap, roce,
                         mlx5_is_roce_on(dev));