VXLAN: Use tunnel_ip_select_ident() for tunnel IP-Identification.
authorPravin B Shelar <pshelar@nicira.com>
Fri, 22 Feb 2013 07:30:40 +0000 (07:30 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Feb 2013 20:47:41 +0000 (15:47 -0500)
tunnel_ip_select_ident() is more efficient when generating ip-header
id given inner packet is of ipv4 type.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxlan.c

index 9d70421cf3a04e5eace7f079e38ad75c36709713..f736823f843732d85a30f090e05e5cfd2b14d9ab 100644 (file)
@@ -33,6 +33,7 @@
 #include <net/arp.h>
 #include <net/ndisc.h>
 #include <net/ip.h>
+#include <net/ipip.h>
 #include <net/icmp.h>
 #include <net/udp.h>
 #include <net/rtnetlink.h>
@@ -962,13 +963,13 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct net_device *dev)
        iph->daddr      = dst;
        iph->saddr      = fl4.saddr;
        iph->ttl        = ttl ? : ip4_dst_hoplimit(&rt->dst);
+       tunnel_ip_select_ident(skb, old_iph, &rt->dst);
 
        vxlan_set_owner(dev, skb);
 
        /* See iptunnel_xmit() */
        if (skb->ip_summed != CHECKSUM_PARTIAL)
                skb->ip_summed = CHECKSUM_NONE;
-       ip_select_ident(iph, &rt->dst, NULL);
 
        err = ip_local_out(skb);
        if (likely(net_xmit_eval(err) == 0)) {