gro: add support of (hw)gro packets to gro stack
authorCoco Li <lixiaoyan@google.com>
Fri, 30 Sep 2022 22:09:05 +0000 (15:09 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 3 Oct 2022 11:38:34 +0000 (12:38 +0100)
commit5eddb24901ee49eee23c0bfce6af2e83fd5679bd
treed6d3b37a6a5c040641259b5082b73beb3d2ee7b9
parent197060c155106c48b2f35b0c1306c1b1d320a47a
gro: add support of (hw)gro packets to gro stack

Current GRO stack only supports incoming packets containing
one frame/MSS.

This patch changes GRO to accept packets that are already GRO.

HW-GRO (aka RSC for some vendors) is very often limited in presence
of interleaved packets. Linux SW GRO stack can complete the job
and provide larger GRO packets, thus reducing rate of ACK packets
and cpu overhead.

This also means BIG TCP can still be used, even if HW-GRO/RSC was
able to cook ~64 KB GRO packets.

v2: fix logic in tcp_gro_receive()

    Only support TCP for the moment (Paolo)

Co-Developed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Coco Li <lixiaoyan@google.com>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/gro.c
net/ipv4/tcp_offload.c