]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
geneve: use GRO hint option in the RX path
authorPaolo Abeni <pabeni@redhat.com>
Wed, 21 Jan 2026 16:11:35 +0000 (17:11 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 23 Jan 2026 19:31:14 +0000 (11:31 -0800)
commitfd0dd796576e1a560e1441e665810129f0a82be0
tree11c8a1ee4d982a0c7309a5fa747a3398215488f5
parent0eaf63b3fcda14c7badbe7e5ccf6239895a1e5aa
geneve: use GRO hint option in the RX path

At the GRO stage, when a valid hint option is found, try match the whole
nested headers and try to aggregate on the inner protocol; in case of hdr
mismatch extract the nested address and port to properly flush on a
per-inner flow basis.

On GRO completion, the (unmodified) nested headers will be considered part
of the (constant) outer geneve encap header so that plain UDP tunnel
segmentation will yield valid wire packets.

In the geneve RX path, when processing a GSO packet carrying a GRO hint
option, update the nested header length fields from the wire packet size to
the GSO-packet one. If the nested header additionally carries a checksum,
convert it to CSUM-partial.

Finally, when the RX path leverages the GRO hints, skip the additional GRO
stage done by GRO cells: otherwise the already set skb->encapsulation flag
will foul the GRO cells complete step to use touch the innermost IP header
when it should update the nested csum, corrupting the packet.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Link: https://patch.msgid.link/4a9a390588a429191e0ffe48ccdd288bb69e567e.1769011015.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/geneve.c