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 <s...@queasysnail.net> --- 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