skbuff: allow 'slow_gro' for skb carring sock reference
authorPaolo Abeni <pabeni@redhat.com>
Wed, 28 Jul 2021 16:24:03 +0000 (18:24 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 29 Jul 2021 11:18:12 +0000 (12:18 +0100)
commit5e10da5385d20c4bae587bc2921e5fdd9655d5fc
treeb199e9c7b0e962d363ed6a4d06d6521af76018d9
parent9efb4b5baf6ce851b247288992b0632cb4d31c17
skbuff: allow 'slow_gro' for skb carring sock reference

This change leverages the infrastructure introduced by the previous
patches to allow soft devices passing to the GRO engine owned skbs
without impacting the fast-path.

It's up to the GRO caller ensuring the slow_gro bit validity before
invoking the GRO engine. The new helper skb_prepare_for_gro() is
introduced for that goal.

On slow_gro, skbs are aggregated only with equal sk.
Additionally, skb truesize on GRO recycle and free is correctly
updated so that sk wmem is not changed by the GRO processing.

rfc-> v1:
 - fixed bad truesize on dev_gro_receive NAPI_FREE
 - use the existing state bit

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/sock.h
net/core/dev.c
net/core/skbuff.c