Skip to content

Commit 4a5c5e2

Browse files
dtatuleaSaeed Mahameed
authored andcommitted
net/mlx5e: RX, Enable dma map and sync from page_pool allocator
Remove driver dma mapping and unmapping of pages. Let the page_pool api do it. Signed-off-by: Dragos Tatulea <[email protected]> Reviewed-by: Tariq Toukan <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent 08c9b61 commit 4a5c5e2

File tree

4 files changed

+4
-27
lines changed

4 files changed

+4
-27
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ int mlx5e_napi_poll(struct napi_struct *napi, int budget);
6565
int mlx5e_poll_ico_cq(struct mlx5e_cq *cq);
6666

6767
/* RX */
68-
void mlx5e_page_dma_unmap(struct mlx5e_rq *rq, struct page *page);
6968
void mlx5e_page_release_dynamic(struct mlx5e_rq *rq, struct page *page, bool recycle);
7069
INDIRECT_CALLABLE_DECLARE(bool mlx5e_post_rx_wqes(struct mlx5e_rq *rq));
7170
INDIRECT_CALLABLE_DECLARE(bool mlx5e_post_rx_mpwqes(struct mlx5e_rq *rq));

drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,6 @@ bool mlx5e_xdp_handle(struct mlx5e_rq *rq,
209209
goto xdp_abort;
210210
__set_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags);
211211
__set_bit(MLX5E_RQ_FLAG_XDP_REDIRECT, rq->flags);
212-
if (xdp->rxq->mem.type != MEM_TYPE_XSK_BUFF_POOL)
213-
mlx5e_page_dma_unmap(rq, virt_to_page(xdp->data));
214212
rq->stats->xdp_redirect++;
215213
return true;
216214
default:

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,6 @@ static int mlx5e_alloc_rq(struct mlx5e_params *params,
733733
struct mlx5e_rq_param *rqp,
734734
int node, struct mlx5e_rq *rq)
735735
{
736-
struct page_pool_params pp_params = { 0 };
737736
struct mlx5_core_dev *mdev = rq->mdev;
738737
void *rqc = rqp->rqc;
739738
void *rqc_wq = MLX5_ADDR_OF(rqc, rqc, wq);
@@ -829,12 +828,15 @@ static int mlx5e_alloc_rq(struct mlx5e_params *params,
829828
xsk_pool_set_rxq_info(rq->xsk_pool, &rq->xdp_rxq);
830829
} else {
831830
/* Create a page_pool and register it with rxq */
831+
struct page_pool_params pp_params = { 0 };
832+
832833
pp_params.order = 0;
833-
pp_params.flags = 0; /* No-internal DMA mapping in page_pool */
834+
pp_params.flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV;
834835
pp_params.pool_size = pool_size;
835836
pp_params.nid = node;
836837
pp_params.dev = rq->pdev;
837838
pp_params.dma_dir = rq->buff.map_dir;
839+
pp_params.max_len = PAGE_SIZE;
838840

839841
/* page_pool can be used even when there is no rq->xdp_prog,
840842
* given page_pool does not handle DMA mapping there is no

drivers/net/ethernet/mellanox/mlx5/core/en_rx.c

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -273,40 +273,18 @@ static inline u32 mlx5e_decompress_cqes_start(struct mlx5e_rq *rq,
273273

274274
static inline int mlx5e_page_alloc_pool(struct mlx5e_rq *rq, struct page **pagep)
275275
{
276-
dma_addr_t addr;
277-
278276
*pagep = page_pool_dev_alloc_pages(rq->page_pool);
279277
if (unlikely(!*pagep))
280278
return -ENOMEM;
281279

282-
/* Non-XSK always uses PAGE_SIZE. */
283-
addr = dma_map_page(rq->pdev, *pagep, 0, PAGE_SIZE, rq->buff.map_dir);
284-
if (unlikely(dma_mapping_error(rq->pdev, addr))) {
285-
page_pool_recycle_direct(rq->page_pool, *pagep);
286-
*pagep = NULL;
287-
return -ENOMEM;
288-
}
289-
page_pool_set_dma_addr(*pagep, addr);
290-
291280
return 0;
292281
}
293282

294-
void mlx5e_page_dma_unmap(struct mlx5e_rq *rq, struct page *page)
295-
{
296-
dma_addr_t dma_addr = page_pool_get_dma_addr(page);
297-
298-
dma_unmap_page_attrs(rq->pdev, dma_addr, PAGE_SIZE, rq->buff.map_dir,
299-
DMA_ATTR_SKIP_CPU_SYNC);
300-
page_pool_set_dma_addr(page, 0);
301-
}
302-
303283
void mlx5e_page_release_dynamic(struct mlx5e_rq *rq, struct page *page, bool recycle)
304284
{
305285
if (likely(recycle)) {
306-
mlx5e_page_dma_unmap(rq, page);
307286
page_pool_recycle_direct(rq->page_pool, page);
308287
} else {
309-
mlx5e_page_dma_unmap(rq, page);
310288
page_pool_release_page(rq->page_pool, page);
311289
put_page(page);
312290
}

0 commit comments

Comments
 (0)