OSDN Git Service

vxlan: Set inner protocol before transmit
authorTom Herbert <therbert@google.com>
Tue, 30 Sep 2014 03:22:33 +0000 (20:22 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 Oct 2014 01:35:52 +0000 (21:35 -0400)
Call skb_set_inner_protocol to set inner Ethernet protocol to
ETH_P_TEB before transmit. This is needed for GSO with UDP tunnels.

Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxlan.c

index 34e102e..2af795d 100644 (file)
@@ -1610,6 +1610,8 @@ static int vxlan6_xmit_skb(struct vxlan_sock *vs,
        vxh->vx_flags = htonl(VXLAN_FLAGS);
        vxh->vx_vni = vni;
 
+       skb_set_inner_protocol(skb, htons(ETH_P_TEB));
+
        udp_tunnel6_xmit_skb(vs->sock, dst, skb, dev, saddr, daddr, prio,
                             ttl, src_port, dst_port);
        return 0;
@@ -1652,6 +1654,8 @@ int vxlan_xmit_skb(struct vxlan_sock *vs,
        vxh->vx_flags = htonl(VXLAN_FLAGS);
        vxh->vx_vni = vni;
 
+       skb_set_inner_protocol(skb, htons(ETH_P_TEB));
+
        return udp_tunnel_xmit_skb(vs->sock, rt, skb, src, dst, tos,
                                   ttl, df, src_port, dst_port, xnet);
 }