Re: [PATCH net-next] drivers: net: xgene: Fix dma_unmap_single() size
From: Daniel Machon
Date: Wed Oct 14 2026 - 16:09:57 EST
Hi Thomas,
> In xgene_enet_refill_pagepool(), the skb->data is dma-mapped with length
To me, it looks like the mapping happens in xgene_enet_refill_bufpool() and not
xgene_enet_refill_pagepool().
> len which is set to XGENE_ENET_STD_MTU which equals 1536. However, in
> xgene_enet_delete_bufpool(), the same buffer is unmapped with length
> XGENE_ENET_MAX_MTU which is 9600. This may erroneously unmap other
> DMA buffers or cause other issues.
>
> Change unmap length to XGENE_ENET_STD_MTU.
>
> Fixes: 6e434627bce2 ("drivers: net: xgene: fix: Add dma_unmap_single")
That commit mapped and unmapped with XGENE_ENET_MAX_MTU. At that point, there
was no mismatch. I think the mismatch came with:
Fixes: a9380b0f7be8 ("drivers: net: xgene: Add support for Jumbo frame")
> Signed-off-by: Thomas Fourier <fourier.thomas@xxxxxxxxx>
> ---
> drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
> index 507db46daf2b..2ddcbf27014e 100644
> --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
> +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
> @@ -185,7 +185,7 @@ static void xgene_enet_delete_bufpool(struct xgene_enet_desc_ring *buf_pool)
>
> raw_desc = &buf_pool->raw_desc16[i];
> dma_addr = GET_VAL(DATAADDR, le64_to_cpu(raw_desc->m1));
> - dma_unmap_single(dev, dma_addr, XGENE_ENET_MAX_MTU,
> + dma_unmap_single(dev, dma_addr, XGENE_ENET_STD_MTU,
> DMA_FROM_DEVICE);
> }
> }
> --
> 2.53.0
>
/Daniel