--- zzzz-none-000/linux-4.9.279/net/ipv4/ip_tunnel.c 2021-08-08 06:38:54.000000000 +0000 +++ puma7-atom-6591-750/linux-4.9.279/net/ipv4/ip_tunnel.c 2023-02-08 11:43:43.000000000 +0000 @@ -745,7 +745,10 @@ df = tnl_params->frag_off; if (skb->protocol == htons(ETH_P_IP) && !tunnel->ignore_df) - df |= (inner_iph->frag_off & htons(IP_DF)); + /* change from '|' to '&' to support GREv4 outer packet ipv4 + fragmentation based on the white paper recommendations + http://www.cisco.com/c/en/us/support/docs/ip/generic-routing-encapsulation-gre/25885-pmtud-ipfrag.html */ + df &= (inner_iph->frag_off & htons(IP_DF)); if (tnl_update_pmtu(dev, skb, rt, df, inner_iph)) { ip_rt_put(rt);