]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5e: xsk: Use partial batches in legacy RQ with XSK
authorMaxim Mikityanskiy <maximmi@nvidia.com>
Fri, 30 Sep 2022 16:28:53 +0000 (09:28 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 1 Oct 2022 20:30:19 +0000 (13:30 -0700)
The previous commit allowed allocating WQE batches in legacy RQ
partially, however, XSK still checks whether there are enough frames in
the fill ring. Remove this check to allow to allocate batches partially
also with XSK.

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 ffca217b7d7e5efa22a4cec3f6a4defd5a3cf23b..80f2b5960782fca1a72f4227508015a13d8002ed 100644 (file)
@@ -429,17 +429,6 @@ static int mlx5e_alloc_rx_wqes(struct mlx5e_rq *rq, u16 ix, u8 wqe_bulk)
        struct mlx5_wq_cyc *wq = &rq->wqe.wq;
        int i;
 
-       if (rq->xsk_pool) {
-               int pages_desired = wqe_bulk << rq->wqe.info.log_num_frags;
-
-               /* Check in advance that we have enough frames, instead of
-                * allocating one-by-one, failing and moving frames to the
-                * Reuse Ring.
-                */
-               if (unlikely(!xsk_buff_can_alloc(rq->xsk_pool, pages_desired)))
-                       return -ENOMEM;
-       }
-
        for (i = 0; i < wqe_bulk; i++) {
                int j = mlx5_wq_cyc_ctr2ix(wq, ix + i);
                struct mlx5e_rx_wqe_cyc *wqe;
@@ -841,8 +830,7 @@ INDIRECT_CALLABLE_SCOPE bool mlx5e_post_rx_wqes(struct mlx5e_rq *rq)
                bulk = wqe_bulk - ((head + wqe_bulk) & rq->wqe.info.wqe_index_mask);
 
                count = mlx5e_alloc_rx_wqes(rq, head, bulk);
-               if (likely(count > 0))
-                       mlx5_wq_cyc_push_n(wq, count);
+               mlx5_wq_cyc_push_n(wq, count);
                if (unlikely(count != bulk)) {
                        rq->stats->buff_alloc_err++;
                        busy = true;