Messages in this thread | ![/](/images/icornerl.gif) | | Date | Tue, 23 Apr 2024 18:55:32 +0200 | Subject | Re: [RFC] net: add TCP fraglist GRO support | From | Felix Fietkau <> |
| |
On 23.04.24 16:34, Paolo Abeni wrote: > On Tue, 2024-04-23 at 14:23 +0200, Felix Fietkau wrote: >> On 23.04.24 14:11, Eric Dumazet wrote: >> > On Tue, Apr 23, 2024 at 1:55 PM Felix Fietkau <nbd@nbd.name> wrote: >> > > >> > > In the world of consumer-grade WiFi devices, there are a lot of chipsets >> > > with limited or nonexistent SG support, and very limited checksum >> > > offload capabilities on Ethernet. The WiFi side of these devices is >> > > often even worse. I think fraglist GRO is a decent fallback for the >> > > inevitable corner cases. >> > >> > What about netfilter and NAT ? Are they okay with NETIF_F_FRAGLIST_GRO already ? >> > >> > Many of these devices are probably using NAT. >> >> In my tests, nftables NAT works just fine, both with and without >> flowtable offloading. I didn't see anything in netfilter that would have >> a problem with this. > > I see you handle explicitly NAT changes in __tcpv4_gso_segment_csum(), > like the current UDP code. > > The TCP header has many other fields that could be updated affecting > the TCP csum. > Handling every possible mutation looks cumbersome and will likely > reduce the performance benefits. > > What is your plan WRT other TCP header fields update?
I think that should be easy enough to handle. My patch already only combines packets where tcp_flag_word(th) is identical. So when segmenting, I could handle all flags changes with a single inet_proto_csum_replace4 call.
> Strictly WRT the patch, I guess it deserves to be split in series, > moving UDP helpers in common code and possibly factoring out more > helpers with separate patches. Will do.
> e.g. in __tcpv4_gso_segment_csum() is quite similar > __udpv4_gso_segment_csum() - even too much, as the tcp csum should be > always be updated when the ports or addresses change ;)
Will fix that.
Thanks,
- Felix
| ![\](/images/icornerr.gif) |