Patch "net: stmmac: set PP_FLAG_DMA_SYNC_DEV only if XDP is enabled" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: stmmac: set PP_FLAG_DMA_SYNC_DEV only if XDP is enabled

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-stmmac-set-pp_flag_dma_sync_dev-only-if-xdp-is-e.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 5d2bdfa0db621567f55b228ab126dfa15a6ee780
Author: Furong Xu <0x1207@xxxxxxxxx>
Date:   Thu Sep 19 20:10:28 2024 +0800

    net: stmmac: set PP_FLAG_DMA_SYNC_DEV only if XDP is enabled
    
    [ Upstream commit b514c47ebf41a6536551ed28a05758036e6eca7c ]
    
    Commit 5fabb01207a2 ("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: 5fabb01207a2 ("net: stmmac: Add initial XDP support")
    Signed-off-by: Furong Xu <0x1207@xxxxxxxxx>
    Link: https://patch.msgid.link/20240919121028.1348023-1-0x1207@xxxxxxxxx
    Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 93630840309e7..b5b7ff5b32616 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -2015,7 +2015,7 @@ static int __alloc_dma_rx_desc_resources(struct stmmac_priv *priv,
 	rx_q->queue_index = queue;
 	rx_q->priv_data = priv;
 
-	pp_params.flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV;
+	pp_params.flags = PP_FLAG_DMA_MAP | (xdp_prog ? PP_FLAG_DMA_SYNC_DEV : 0);
 	pp_params.pool_size = dma_conf->dma_rx_size;
 	num_pages = DIV_ROUND_UP(dma_conf->dma_buf_sz, PAGE_SIZE);
 	pp_params.order = ilog2(num_pages);




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux