]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5e: Call mlx5e_page_release_dynamic directly where possible
authorMaxim Mikityanskiy <maximmi@nvidia.com>
Fri, 30 Sep 2022 16:28:59 +0000 (09:28 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 1 Oct 2022 20:30:21 +0000 (13:30 -0700)
mlx5e_page_release calls the appropriate deallocator depending on
whether it's an XSK RQ or a regular one. Some flows that call this
function are not compatible with XSK, so they can call the non-XSK
deallocator directly to save a branch.

Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c

index 9d0a5c66c6a93dce70091f7d1115e9d9a4b02672..d0db6a66cb465def0ab0438c08c013a009a7a2c0 100644 (file)
@@ -588,12 +588,8 @@ err_unmap:
        while (--i >= 0) {
                dma_info = &shampo->info[--index];
                if (!(i & (MLX5E_SHAMPO_WQ_HEADER_PER_PAGE - 1))) {
-                       union mlx5e_alloc_unit au = {
-                               .page = dma_info->page,
-                       };
-
                        dma_info->addr = ALIGN_DOWN(dma_info->addr, PAGE_SIZE);
-                       mlx5e_page_release(rq, &au, true);
+                       mlx5e_page_release_dynamic(rq, dma_info->page, true);
                }
        }
        rq->stats->buff_alloc_err++;
@@ -698,7 +694,7 @@ static int mlx5e_alloc_rx_mpwqe(struct mlx5e_rq *rq, u16 ix)
 err_unmap:
        while (--i >= 0) {
                au--;
-               mlx5e_page_release(rq, au, true);
+               mlx5e_page_release_dynamic(rq, au->page, true);
        }
 
 err:
@@ -731,12 +727,8 @@ void mlx5e_shampo_dealloc_hd(struct mlx5e_rq *rq, u16 len, u16 start, bool close
                hd_info = &shampo->info[index];
                hd_info->addr = ALIGN_DOWN(hd_info->addr, PAGE_SIZE);
                if (hd_info->page != deleted_page) {
-                       union mlx5e_alloc_unit au = {
-                               .page = hd_info->page,
-                       };
-
                        deleted_page = hd_info->page;
-                       mlx5e_page_release(rq, &au, false);
+                       mlx5e_page_release_dynamic(rq, hd_info->page, false);
                }
        }
 
@@ -2061,12 +2053,8 @@ mlx5e_free_rx_shampo_hd_entry(struct mlx5e_rq *rq, u16 header_index)
        u64 addr = shampo->info[header_index].addr;
 
        if (((header_index + 1) & (MLX5E_SHAMPO_WQ_HEADER_PER_PAGE - 1)) == 0) {
-               union mlx5e_alloc_unit au = {
-                       .page = shampo->info[header_index].page,
-               };
-
                shampo->info[header_index].addr = ALIGN_DOWN(addr, PAGE_SIZE);
-               mlx5e_page_release(rq, &au, true);
+               mlx5e_page_release_dynamic(rq, shampo->info[header_index].page, true);
        }
        bitmap_clear(shampo->bitmap, header_index, 1);
 }