From 1ec014ae9679f225635e740e3c37689c2db1fe17 Mon Sep 17 00:00:00 2001 From: Pravin B Shelar Date: Tue, 24 Sep 2013 18:42:43 -0700 Subject: [PATCH 1/1] datapath: Backport __ip_select_ident() function definition of __ip_select_ident() changed in newer kernel and it is backported to stable kernel, Therefore adding configure check to detect the new function. Signed-off-by: Pravin B Shelar Acked-by: Andy Zhou --- acinclude.m4 | 2 ++ datapath/linux/compat/ip_tunnels_core.c | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index 3d6de2884..fa1de8668 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -249,6 +249,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [vlan_set_encap_proto]) OVS_GREP_IFELSE([$KSRC/include/linux/in.h], [ipv4_is_multicast]) + OVS_GREP_IFELSE([$KSRC/include/net/ip.h], [__ip_select_ident.*dst_entry], + [OVS_DEFINE([HAVE_IP_SELECT_IDENT_USING_DST_ENTRY])]) OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_disable_lro]) OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_get_stats]) diff --git a/datapath/linux/compat/ip_tunnels_core.c b/datapath/linux/compat/ip_tunnels_core.c index d650be290..a70aefc6a 100644 --- a/datapath/linux/compat/ip_tunnels_core.c +++ b/datapath/linux/compat/ip_tunnels_core.c @@ -70,7 +70,12 @@ int iptunnel_xmit(struct rtable *rt, iph->daddr = dst; iph->saddr = src; iph->ttl = ttl; + +#ifdef HAVE_IP_SELECT_IDENT_USING_DST_ENTRY __ip_select_ident(iph, &rt_dst(rt), (skb_shinfo(skb)->gso_segs ?: 1) - 1); +#else + __ip_select_ident(iph, skb_shinfo(skb)->gso_segs ?: 1); +#endif err = ip_local_out(skb); if (unlikely(net_xmit_eval(err))) -- 2.20.1