From: Felix Fietkau <nbd@nbd.name>
To: Richard Gobert <richardbgobert@gmail.com>,
netdev@vger.kernel.org, Eric Dumazet <edumazet@google.com>,
Neal Cardwell <ncardwell@google.com>,
Kuniyuki Iwashima <kuniyu@google.com>,
"David S. Miller" <davem@davemloft.net>,
David Ahern <dsahern@kernel.org>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>,
Willem de Bruijn <willemb@google.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH net] net: fix segmentation after TCP/UDP fraglist GRO
Date: Thu, 10 Jul 2025 13:58:32 +0200 [thread overview]
Message-ID: <5a787632-97cb-479e-897c-6e9034d9dfde@nbd.name> (raw)
In-Reply-To: <615bc4d6-3b10-bd7d-dbfe-2b79072af44e@gmail.com>
On 10.07.25 13:37, Richard Gobert wrote:
> Felix Fietkau wrote:
>> Since "net: gro: use cb instead of skb->network_header", the skb network
>> header is no longer set in the GRO path.
>> This breaks fraglist segmentation, which relies on ip_hdr()/tcp_hdr()
>> to check for address/port changes.
>> Fix this regression by selectively setting the network header for merged
>> segment skbs.
>>
>> Fixes: 186b1ea73ad8 ("net: gro: use cb instead of skb->network_header")
>> Signed-off-by: Felix Fietkau <nbd@nbd.name>
>> ---
>> net/ipv4/tcp_offload.c | 1 +
>> net/ipv4/udp_offload.c | 1 +
>> 2 files changed, 2 insertions(+)
>>
>> diff --git a/net/ipv4/tcp_offload.c b/net/ipv4/tcp_offload.c
>> index d293087b426d..be5c2294610e 100644
>> --- a/net/ipv4/tcp_offload.c
>> +++ b/net/ipv4/tcp_offload.c
>> @@ -359,6 +359,7 @@ struct sk_buff *tcp_gro_receive(struct list_head *head, struct sk_buff *skb,
>> flush |= skb->ip_summed != p->ip_summed;
>> flush |= skb->csum_level != p->csum_level;
>> flush |= NAPI_GRO_CB(p)->count >= 64;
>> + skb_set_network_header(skb, skb_gro_receive_network_offset(skb));
>>
>> if (flush || skb_gro_receive_list(p, skb))
>> mss = 1;
>> diff --git a/net/ipv4/udp_offload.c b/net/ipv4/udp_offload.c
>> index 85b5aa82d7d7..e0a6bfa95118 100644
>> --- a/net/ipv4/udp_offload.c
>> +++ b/net/ipv4/udp_offload.c
>> @@ -767,6 +767,7 @@ static struct sk_buff *udp_gro_receive_segment(struct list_head *head,
>> NAPI_GRO_CB(skb)->flush = 1;
>> return NULL;
>> }
>> + skb_set_network_header(skb, skb_gro_receive_network_offset(skb));
>> ret = skb_gro_receive_list(p, skb);
>> } else {
>> skb_gro_postpull_rcsum(skb, uh,
>
> Were you able to reproduce this regression? If so, can you share how?
This was reported by several OpenWrt users after upgrading from Linux
6.6 to 6.12. OpenWrt enables fraglist GRO by default. From the reports,
the issues appeared when bridging packets through a VLAN filtering
bridge from DSA ports to a WLAN device.
- Felix
next prev parent reply other threads:[~2025-07-10 11:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-05 15:06 Felix Fietkau
2025-07-06 13:45 ` Willem de Bruijn
2025-07-10 8:58 ` Paolo Abeni
2025-07-11 12:06 ` Felix Fietkau
2025-07-11 19:51 ` Willem de Bruijn
2025-07-15 11:35 ` Felix Fietkau
2025-07-16 15:01 ` Willem de Bruijn
2025-07-10 11:37 ` Richard Gobert
2025-07-10 11:58 ` Felix Fietkau [this message]
2025-07-17 8:20 ` patchwork-bot+netdevbpf
2025-07-17 10:18 ` Richard Gobert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5a787632-97cb-479e-897c-6e9034d9dfde@nbd.name \
--to=nbd@nbd.name \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ncardwell@google.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=richardbgobert@gmail.com \
--cc=willemb@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®