Re: [PATCH net] net: stmmac: fix TX descriptor availability check for TSO traffic
From: patchwork-bot+netdevbpf@kernel.org
Date: 2026-09-10 15:41:15
Also in:
netdev
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski [off-list ref]: On Mon, 07 Sep 2026 23:46:45 +0200 you wrote:
stmmac_tso_xmit() estimates the number of free TX descriptors required by a TSO skb as: (skb->len - proto_hdr_len) / TSO_MAX_BUFF_SIZE + 1 which assumes the payload is split into TSO_MAX_BUFF_SIZE chunks. This underestimates the descriptors actually consumed by stmmac_tso_allocator(), since each fragment is mapped individually and so it needs at least one descriptor regardless of its size. Moreover, one descriptor is used for the L2/L3/L4 headers and, when the MSS changes, one more is consumed for the MSS context descriptor. For a highly fragmented TSO skb the check can therefore pass even when the ring has too few free slots. stmmac_tso_allocator() then writes past the available descriptors, overwriting descriptors still owned by the DMA engine, corrupting the TX ring. Add stmmac_tso_get_num_desc() to compute the exact number of descriptors needed for the header, the linear payload and each fragment, plus the MSS context descriptor when required, and use it in the availability check. [...]
Here is the summary with links:
- [net] net: stmmac: fix TX descriptor availability check for TSO traffic
https://git.kernel.org/netdev/net/c/5e38d732ec67
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html