]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net/mlx5: HWS, Remove unused element array
authorVlad Dogaru <vdogaru@nvidia.com>
Thu, 10 Apr 2025 19:17:32 +0000 (22:17 +0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 15 Apr 2025 00:29:15 +0000 (17:29 -0700)
Remove the array of elements wrapped in a struct because in reality only
the first element was ever 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-3-git-send-email-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/pool.c
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/pool.h

index 50a81d360bb2ff26cc6d7744b6753dc1b76daa20..35ed9bee06a69abcf52dc653bc0a6e8928171377 100644 (file)
@@ -293,7 +293,7 @@ static int hws_pool_create_resource_on_index(struct mlx5hws_pool *pool,
 }
 
 static struct mlx5hws_pool_elements *
-hws_pool_element_create_new_elem(struct mlx5hws_pool *pool, u32 order, int idx)
+hws_pool_element_create_new_elem(struct mlx5hws_pool *pool, u32 order)
 {
        struct mlx5hws_pool_elements *elem;
        u32 alloc_size;
@@ -311,21 +311,21 @@ hws_pool_element_create_new_elem(struct mlx5hws_pool *pool, u32 order, int idx)
                elem->bitmap = hws_pool_create_and_init_bitmap(alloc_size - order);
                if (!elem->bitmap) {
                        mlx5hws_err(pool->ctx,
-                                   "Failed to create bitmap type: %d: size %d index: %d\n",
-                                   pool->type, alloc_size, idx);
+                                   "Failed to create bitmap type: %d: size %d\n",
+                                   pool->type, alloc_size);
                        goto free_elem;
                }
 
                elem->log_size = alloc_size - order;
        }
 
-       if (hws_pool_create_resource_on_index(pool, alloc_size, idx)) {
-               mlx5hws_err(pool->ctx, "Failed to create resource type: %d: size %d index: %d\n",
-                           pool->type, alloc_size, idx);
+       if (hws_pool_create_resource_on_index(pool, alloc_size, 0)) {
+               mlx5hws_err(pool->ctx, "Failed to create resource type: %d: size %d\n",
+                           pool->type, alloc_size);
                goto free_db;
        }
 
-       pool->db.element_manager->elements[idx] = elem;
+       pool->db.element = elem;
 
        return elem;
 
@@ -359,9 +359,9 @@ hws_pool_onesize_element_get_mem_chunk(struct mlx5hws_pool *pool, u32 order,
 {
        struct mlx5hws_pool_elements *elem;
 
-       elem = pool->db.element_manager->elements[0];
+       elem = pool->db.element;
        if (!elem)
-               elem = hws_pool_element_create_new_elem(pool, order, 0);
+               elem = hws_pool_element_create_new_elem(pool, order);
        if (!elem)
                goto err_no_elem;
 
@@ -451,16 +451,14 @@ static int hws_pool_general_element_db_init(struct mlx5hws_pool *pool)
        return 0;
 }
 
-static void hws_onesize_element_db_destroy_element(struct mlx5hws_pool *pool,
-                                                  struct mlx5hws_pool_elements *elem,
-                                                  struct mlx5hws_pool_chunk *chunk)
+static void
+hws_onesize_element_db_destroy_element(struct mlx5hws_pool *pool,
+                                      struct mlx5hws_pool_elements *elem)
 {
-       if (unlikely(!pool->resource[chunk->resource_idx]))
-               pr_warn("HWS: invalid resource with index %d\n", chunk->resource_idx);
-
-       hws_pool_resource_free(pool, chunk->resource_idx);
+       hws_pool_resource_free(pool, 0);
+       bitmap_free(elem->bitmap);
        kfree(elem);
-       pool->db.element_manager->elements[chunk->resource_idx] = NULL;
+       pool->db.element = NULL;
 }
 
 static void hws_onesize_element_db_put_chunk(struct mlx5hws_pool *pool,
@@ -471,7 +469,7 @@ static void hws_onesize_element_db_put_chunk(struct mlx5hws_pool *pool,
        if (unlikely(chunk->resource_idx))
                pr_warn("HWS: invalid resource with index %d\n", chunk->resource_idx);
 
-       elem = pool->db.element_manager->elements[chunk->resource_idx];
+       elem = pool->db.element;
        if (!elem) {
                mlx5hws_err(pool->ctx, "No such element (%d)\n", chunk->resource_idx);
                return;
@@ -483,7 +481,7 @@ static void hws_onesize_element_db_put_chunk(struct mlx5hws_pool *pool,
 
        if (pool->flags & MLX5HWS_POOL_FLAGS_RELEASE_FREE_RESOURCE &&
            !elem->num_of_elements)
-               hws_onesize_element_db_destroy_element(pool, elem, chunk);
+               hws_onesize_element_db_destroy_element(pool, elem);
 }
 
 static int hws_onesize_element_db_get_chunk(struct mlx5hws_pool *pool,
@@ -504,18 +502,13 @@ static int hws_onesize_element_db_get_chunk(struct mlx5hws_pool *pool,
 
 static void hws_onesize_element_db_uninit(struct mlx5hws_pool *pool)
 {
-       struct mlx5hws_pool_elements *elem;
-       int i;
+       struct mlx5hws_pool_elements *elem = pool->db.element;
 
-       for (i = 0; i < MLX5HWS_POOL_RESOURCE_ARR_SZ; i++) {
-               elem = pool->db.element_manager->elements[i];
-               if (elem) {
-                       bitmap_free(elem->bitmap);
-                       kfree(elem);
-                       pool->db.element_manager->elements[i] = NULL;
-               }
+       if (elem) {
+               bitmap_free(elem->bitmap);
+               kfree(elem);
+               pool->db.element = NULL;
        }
-       kfree(pool->db.element_manager);
 }
 
 /* This memory management works as the following:
@@ -526,10 +519,6 @@ static void hws_onesize_element_db_uninit(struct mlx5hws_pool *pool)
  */
 static int hws_pool_onesize_element_db_init(struct mlx5hws_pool *pool)
 {
-       pool->db.element_manager = kzalloc(sizeof(*pool->db.element_manager), GFP_KERNEL);
-       if (!pool->db.element_manager)
-               return -ENOMEM;
-
        pool->p_db_uninit = &hws_onesize_element_db_uninit;
        pool->p_get_chunk = &hws_onesize_element_db_get_chunk;
        pool->p_put_chunk = &hws_onesize_element_db_put_chunk;
index 621298b352b2447c80ab646cd883ceb4e1cb7a22..f4258f83fdbf7ac0b9390d23882556bb2015fcf1 100644 (file)
@@ -87,14 +87,10 @@ struct mlx5hws_pool_elements {
        bool is_full;
 };
 
-struct mlx5hws_element_manager {
-       struct mlx5hws_pool_elements *elements[MLX5HWS_POOL_RESOURCE_ARR_SZ];
-};
-
 struct mlx5hws_pool_db {
        enum mlx5hws_db_type type;
        union {
-               struct mlx5hws_element_manager *element_manager;
+               struct mlx5hws_pool_elements *element;
                struct mlx5hws_buddy_manager *buddy_manager;
        };
 };