diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 24c1bef7abc6..40bf8a87b3d9 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -618,10 +618,15 @@ static int vxlan_gro_complete(struct sk_buff *skb, int nhoff) { struct ethhdr *eh; struct packet_offload *ptype; + struct udphdr *uh; __be16 type; int vxlan_len = sizeof(struct vxlanhdr) + sizeof(struct ethhdr); int err = -ENOSYS; + uh = (struct udphdr *)(skb->data + nhoff - sizeof(struct udphdr)); + skb_shinfo(skb)->gso_type |= uh->check ? + SKB_GSO_UDP_TUNNEL_CSUM : SKB_GSO_UDP_TUNNEL; + eh = (struct ethhdr *)(skb->data + nhoff + sizeof(struct vxlanhdr)); type = eh->h_proto;