Re: [PATCH net v2] net: gro: avoid nesting TCP GSO skbs in skb_gro_receive_list()
From: Jakub Kicinski
Date: Thu Jul 23 2026 - 09:46:14 EST
On Thu, 23 Jul 2026 17:16:01 +0800 zhaoping.shu@xxxxxxxxxxxx wrote:
> From: HW He <hw.he@xxxxxxxxxxxx>
>
> On devices that support both NETIF_F_GRO_HW and NETIF_F_GRO_FRAGLIST,
"devices that support FRAGLIST"? Isn't it a software feature?
> the hardware or driver may deliver packets that have already been
If you have a driver in mind please name it.
> aggregated into a TCP GSO skb with frags[]. GRO may then
> aggregate the skb again in skb_gro_receive_list().
>
> This can create a nested GSO skb, which is not handled correctly by the
> later GSO segmentation paths. When the skb is segmented by
> skb_segment_list(), it not be fully restored to the original packets.
>
> Avoid this by setting NAPI_GRO_CB(skb)->flush for GSO skbs before
> aggregation.
I don't think we can do this. For GRO_HW devices re-aggregating
in SW is quite helpful, HW often runs out of contexts or times
out too soon, generating skbs with 16kB..32kB of data, the SW
can help bring it up to full TSO.
Also - you're missing a Fixes tag.