Ethtool -K offload settings understanding

Hey guys so I’ve been messing around with the Ethtool settings such as ethtool -k gro. I know what Generic Receive Offload (GRO) does but I don’t quite understand the concept of certain settings such as Generic Segmentation Offload (GSO), TCP Segmentation Offload (TSO), and tx-udp-segmentation-offload. I know that Generic Receive Offload basically groups smaller packets together into larger ones but I was wondering if the other offload settings I have mentioned do the same thing. The only reason why I ask is because I game a lot and I do FPS online gaming. Sometimes grouping the packets together causes a delay so I’ve seen better performance with GRO off. Just want to learn what these settings do. I’ve checked the man page but it only specifies a list of these settings but not the explanation of the concept of these settings.

Have look here:
https://docs.kernel.org/networking/segmentation-offloads.html
cake already splits GSO/GRO style meta packets into normal sized segments, which solves most of the issue...

Hmmm I didn’t know that.. idk why but even with cake sqm on it seemed to feel sluggish when gaming. Also using the same game server as I am using @Hudra package called geomate where I can lock myself to one server. Tried default which is gro on and then gro off. Gro disabled gave me more consistent responsiveness in gaming. Idk why. The more I dig into openwrt. The more I see how weird rockchip cpus are with their settings..

Also I did see that flow control is on by default for wan port and another Ethernet port. It seems like cake sqm works better with flow control off rather than it being on

I actually read that article but I didn’t get a complete understanding. From what I can understand, GSO breaks down the packets? Or does it combine packets. I know split-gso breaks down packets.

Okay I think I got an understanding. TSO basically means if the nic handles the large packets it can transmit or process or whatever. GSO basically takes multiple packets and puts them together to form a huge packet. Basically like if you are moving and you got many small things. Instead of carrying them one by one you put them into one big box and transport. And your truck is TSO where it can carry large items to one destination. Is that correct?

However I don’t see anything about tx-udp-segmentation on that article.

As far as I understood all these offloading does not help for routers.
Servers yes, or layer 4 load balancer. Maybe Nat boxes. But routers, I don't think so :person_shrugging:

Yea that’s why I turned them off. It seems that turning GRO actually helps responsiveness in gaming. I tested it too. I locked down the server for my game closest to me using geo mate so no difference in ping. Solid at 20ms. With gro the game felt sluggish and delayed but with gro off it was fluid. Even though I had cake sqm set up.

Tx-udp-segmentation basically takes large udp packets and breaks it down. The NIC handles that process. Now I’m not sure if this is better for real time activities as every millisecond counts. But since it’s breaking down large udp packets that means it’s easier to transmit and process smaller packets. Thus improving efficiency but that’s just my assumption. I believe the latency reduction will be negligible

Again take what I’m saying with a grain of salt as this is just myself assuming and interpreting the concept of these settings based off what I’ve read. I could be wrong.

GRO/GSO can help a router just fine... the kernel will then only have to do the routing lookup per meta-packet instead of for the individual merged segments...

Yes just more of an organization of larger packets. Basically like a folders full of papers. Each folder is a subject so it’s easier to look through.

But in my experience I disabled it for my lan port that my gaming pc is connected to as it was a positive effect for gaming. Probably best to keep it enabled on your WAN port and any other port that is handling WiFi devices or a large number of devices.

Not really, only if your CPUs are already overtaxed... or maybe if you try to hard to GRO and delay packets in the driver...

That said, if you are happy with GRO disabled by all means, disable it.

Personally I think the NanoPi R6S is a bit underpowered for my set up. My mistake but then again it’s a learning experience. I do host a ton of devices in my smart home so when I game I do need the best experience. And GRO off gives me that.

Hey I just came back because your response had me curious. What did you mean by ‘if you are trying too hard ti GRO’

The actual test is not as good as Close Scatter-Gather

What do you mean? Elaborate?

Maybe read:

to get a general idea how this works and that might help to form a thory why disabling GRO helps on your system.

1 Like