Skip to content

Commit b514c47

Browse files
Furong XuPaolo Abeni
authored andcommitted
net: stmmac: set PP_FLAG_DMA_SYNC_DEV only if XDP is enabled
Commit 5fabb01 ("net: stmmac: Add initial XDP support") sets PP_FLAG_DMA_SYNC_DEV flag for page_pool unconditionally, page_pool_recycle_direct() will call page_pool_dma_sync_for_device() on every page even the page is not going to be reused by XDP program. When XDP is not enabled, the page which holds the received buffer will be recycled once the buffer is copied into new SKB by skb_copy_to_linear_data(), then the MAC core will never reuse this page any longer. Always setting PP_FLAG_DMA_SYNC_DEV wastes CPU cycles on unnecessary calling of page_pool_dma_sync_for_device(). After this patch, up to 9% noticeable performance improvement was observed on certain platforms. Fixes: 5fabb01 ("net: stmmac: Add initial XDP support") Signed-off-by: Furong Xu <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
1 parent c11a49d commit b514c47

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2035,7 +2035,7 @@ static int __alloc_dma_rx_desc_resources(struct stmmac_priv *priv,
20352035
rx_q->queue_index = queue;
20362036
rx_q->priv_data = priv;
20372037

2038-
pp_params.flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV;
2038+
pp_params.flags = PP_FLAG_DMA_MAP | (xdp_prog ? PP_FLAG_DMA_SYNC_DEV : 0);
20392039
pp_params.pool_size = dma_conf->dma_rx_size;
20402040
num_pages = DIV_ROUND_UP(dma_conf->dma_buf_sz, PAGE_SIZE);
20412041
pp_params.order = ilog2(num_pages);

0 commit comments

Comments
 (0)