Re: [PATCH net v2] net: gro: avoid nesting TCP GSO skbs in skb_gro_receive_list()
Willem de Bruijn <[email protected]>
| Newsgroups | org.infradead.lists.linux-mediatek,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel,org.kernel.vger.netdev |
|---|---|
| Message-ID | <CA+FuTSfgBbPkdLanqEgbDq-jLVQJax4fUxQ-tuzTuFwQANwxBA@mail.gmail.com> |
On Thu, Jul 23, 2026 at 3:39 PM Jakub Kicinski <[email protected]> wrote: > > On Thu, 23 Jul 2026 17:16:01 +0800 [email protected] wrote: > > From: HW He <[email protected]> > > > > 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, after e751256486d0 ("net: gro: fix double aggregation of flush-marked skbs"), it's not clear an another bug remains. If it is: as said "nested GRO" of hw + sw GRO is intentional, e.g., for BIG-TCP. But it may not be anticipated for skb_gro_receive_list. One option would be to skip the fraglist GSO optimization for such packets. First I'd like to understand better what exact bug remains.