Currently, ESP4 GRO doesn't work for fragmented packets, so let's send
these through the normal path.
Fixes: 7785bba299a8 ("esp: Add a software GRO codepath")
Signed-off-by: Sabrina Dubroca <[email protected]>
---
Steffen, if you prefer to drop this patch and fix this properly,
that's okay for me. I can't look much deeper into this right now and
it's broken on current net/master.
It seems like the first fragment gets dropped, at least I don't see it
on tcpdump on the RX machine.
net/ipv4/esp4_offload.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/ipv4/esp4_offload.c b/net/ipv4/esp4_offload.c
index 1de442632406..ab5faca28e19 100644
--- a/net/ipv4/esp4_offload.c
+++ b/net/ipv4/esp4_offload.c
@@ -38,6 +38,9 @@ static struct sk_buff **esp4_gro_receive(struct sk_buff
**head,
__be32 spi;
int err;
+ if (ip_is_fragment(ip_hdr(skb)))
+ goto flush;
+
skb_pull(skb, offset);
if ((err = xfrm_parse_spi(skb, IPPROTO_ESP, &spi, &seq)) != 0)
@@ -78,6 +81,7 @@ static struct sk_buff **esp4_gro_receive(struct sk_buff
**head,
return ERR_PTR(-EINPROGRESS);
out:
skb_push(skb, offset);
+flush:
NAPI_GRO_CB(skb)->same_flow = 0;
NAPI_GRO_CB(skb)->flush = 1;
--
2.12.2