Re: [PATCH RFC v3 0/5] Support fraglist GRO/GSO
From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date: 2019-09-18 16:58:24
On Wed, Sep 18, 2019 at 12:17:08PM -0400, Willem de Bruijn wrote:
On Wed, Sep 18, 2019 at 3:25 AM Steffen Klassert [off-list ref] wrote:quoted
This patchset adds support to do GRO/GSO by chaining packets of the same flow at the SKB frag_list pointer. This avoids the overhead to merge payloads into one big packet, and on the other end, if GSO is needed it avoids the overhead of splitting the big packet back to the native form. Patch 1 Enables UDP GRO by default. Patch 2 adds a netdev feature flag to enable listifyed GRO, this implements one of the configuration options discussed at netconf 2019. Patch 3 adds a netdev software feature set that defaults to off and assigns the new listifyed GRO feature flag to it. Patch 4 adds the core infrastructure to do fraglist GRO/GSO. Patch 5 enables UDP to use fraglist GRO/GSO if configured and no GRO supported socket is found.Very nice feature, Steffen. Aside from questions around performance, my only question is really how this relates to GSO_BY_FRAGS.
They do the exact same thing AFAICT: they GSO according to a pre-formatted list of fragments/packets, and not to a specific size (such as MSS).
More specifically, whether we can remove that in favor of using your new skb_segment_list. That would actually be a big first step in simplifying skb_segment back to something manageable.
The main issue (that I know) on obsoleting GSO_BY_FRAGS is that dealing with frags instead of frag_list was considered easier to be offloaded, if ever attempted. So this would be a step back on that aspect. Other than this, it should be doable.