]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net/mlx5: HWS, Fix pool size optimization
authorVlad Dogaru <vdogaru@nvidia.com>
Thu, 10 Apr 2025 19:17:37 +0000 (22:17 +0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 15 Apr 2025 00:29:16 +0000 (17:29 -0700)
The optimization to create a size-one STE range for the unused direction
was broken. The hardware prevents us from creating RTCs over unallocated
STE space, so the only reason this has worked so far is because the
optimization was never used.

Signed-off-by: Vlad Dogaru <vdogaru@nvidia.com>
Reviewed-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>
Link: https://patch.msgid.link/1744312662-356571-8-git-send-email-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/pool.c

index 26d85fe3c417d81811380f958b92cdb2953de3ee..7e37d6e9eb83610981d9762ef84be4e0a5349ff9 100644 (file)
@@ -80,7 +80,7 @@ static int hws_pool_resource_alloc(struct mlx5hws_pool *pool)
        u32 fw_ft_type, opt_log_range;
 
        fw_ft_type = mlx5hws_table_get_res_fw_ft_type(pool->tbl_type, false);
-       opt_log_range = pool->opt_type == MLX5HWS_POOL_OPTIMIZE_ORIG ?
+       opt_log_range = pool->opt_type == MLX5HWS_POOL_OPTIMIZE_MIRROR ?
                                0 : pool->alloc_log_sz;
        resource = hws_pool_create_one_resource(pool, opt_log_range, fw_ft_type);
        if (!resource) {
@@ -94,7 +94,7 @@ static int hws_pool_resource_alloc(struct mlx5hws_pool *pool)
                struct mlx5hws_pool_resource *mirror_resource;
 
                fw_ft_type = mlx5hws_table_get_res_fw_ft_type(pool->tbl_type, true);
-               opt_log_range = pool->opt_type == MLX5HWS_POOL_OPTIMIZE_MIRROR ?
+               opt_log_range = pool->opt_type == MLX5HWS_POOL_OPTIMIZE_ORIG ?
                                        0 : pool->alloc_log_sz;
                mirror_resource = hws_pool_create_one_resource(pool, opt_log_range, fw_ft_type);
                if (!mirror_resource) {