]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5: Update log_max_qp value to FW max capability
authorMaher Sanalla <msanalla@nvidia.com>
Wed, 5 Jan 2022 12:50:11 +0000 (14:50 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Fri, 7 Jan 2022 00:22:52 +0000 (16:22 -0800)
log_max_qp in driver's default profile #2 was set to 18, but FW actually
supports 17 at the most - a situation that led to the concerning print
when the driver is loaded:
"log_max_qp value in current profile is 18, changing to HCA capabaility
limit (17)"

The expected behavior from mlx5_profile #2 is to match the maximum FW
capability in regards to log_max_qp. Thus, log_max_qp in profile #2 is
initialized to a defined static value (0xff) - which basically means that
when loading this profile, log_max_qp value  will be what the currently
installed FW supports at most.

Signed-off-by: Maher Sanalla <msanalla@nvidia.com>
Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/main.c

index 6b225bb5751a0242014711424919c60af1217753..2c774f367199d6846241abab218e11706aa76064 100644 (file)
@@ -98,6 +98,8 @@ enum {
        MLX5_ATOMIC_REQ_MODE_HOST_ENDIANNESS = 0x1,
 };
 
+#define LOG_MAX_SUPPORTED_QPS 0xff
+
 static struct mlx5_profile profile[] = {
        [0] = {
                .mask           = 0,
@@ -109,7 +111,7 @@ static struct mlx5_profile profile[] = {
        [2] = {
                .mask           = MLX5_PROF_MASK_QP_SIZE |
                                  MLX5_PROF_MASK_MR_CACHE,
-               .log_max_qp     = 18,
+               .log_max_qp     = LOG_MAX_SUPPORTED_QPS,
                .mr_cache[0]    = {
                        .size   = 500,
                        .limit  = 250
@@ -523,7 +525,9 @@ static int handle_hca_cap(struct mlx5_core_dev *dev, void *set_ctx)
                 to_fw_pkey_sz(dev, 128));
 
        /* Check log_max_qp from HCA caps to set in current profile */
-       if (MLX5_CAP_GEN_MAX(dev, log_max_qp) < prof->log_max_qp) {
+       if (prof->log_max_qp == LOG_MAX_SUPPORTED_QPS) {
+               prof->log_max_qp = MLX5_CAP_GEN_MAX(dev, log_max_qp);
+       } else if (MLX5_CAP_GEN_MAX(dev, log_max_qp) < prof->log_max_qp) {
                mlx5_core_warn(dev, "log_max_qp value in current profile is %d, changing it to HCA capability limit (%d)\n",
                               prof->log_max_qp,
                               MLX5_CAP_GEN_MAX(dev, log_max_qp));