net/mlx5e: RX, Re-place page pool numa node change logic
authorTariq Toukan <tariqt@nvidia.com>
Wed, 19 May 2021 12:16:52 +0000 (15:16 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Thu, 3 Jun 2021 20:10:19 +0000 (13:10 -0700)
Move the logic that updates the page pool upon changes in numa node.
Before this patch, logic was placed in the RX polling function, being
called also when no RX traffic, wasting cpu cycles.  Here we move it to
the RX post_wqes function, to be called only when new RX descriptors are
going to be allocated.

Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c

index e884293..3c65fd0 100644 (file)
@@ -579,6 +579,9 @@ INDIRECT_CALLABLE_SCOPE bool mlx5e_post_rx_wqes(struct mlx5e_rq *rq)
        if (mlx5_wq_cyc_missing(wq) < wqe_bulk)
                return false;
 
+       if (rq->page_pool)
+               page_pool_nid_changed(rq->page_pool, numa_mem_id());
+
        do {
                u16 head = mlx5_wq_cyc_get_head(wq);
 
@@ -734,6 +737,9 @@ INDIRECT_CALLABLE_SCOPE bool mlx5e_post_rx_mpwqes(struct mlx5e_rq *rq)
        if (likely(missing < UMR_WQE_BULK))
                return false;
 
+       if (rq->page_pool)
+               page_pool_nid_changed(rq->page_pool, numa_mem_id());
+
        head = rq->mpwqe.actual_wq_head;
        i = missing;
        do {
@@ -1555,9 +1561,6 @@ int mlx5e_poll_rx_cq(struct mlx5e_cq *cq, int budget)
        if (unlikely(!test_bit(MLX5E_RQ_STATE_ENABLED, &rq->state)))
                return 0;
 
-       if (rq->page_pool)
-               page_pool_nid_changed(rq->page_pool, numa_mem_id());
-
        if (rq->cqd.left) {
                work_done += mlx5e_decompress_cqes_cont(rq, cqwq, 0, budget);
                if (work_done >= budget)