aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPravin B Shelar <pshelar@nicira.com>2014-10-10 08:21:18 -0700
committerPravin B Shelar <pshelar@nicira.com>2014-10-13 11:03:11 -0700
commit06021dcba984a0e229140179d25d060659bb60a8 (patch)
treeec88085772b9050e858377080480b4bcb661de2e
parentff601a08a44c37fa8a6e0e569dc00d6731f55555 (diff)
datapath: compat: Fix compilation 3.11
Kernel 3.11 is only kernel where GRE APIs are available but not vxlan. Add check for vxlan xmit to detect this case. Reported-by: Dave Benson <dbenson@verdantnetworks.com> Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Andy Zhou <azhou@nicira.com>
-rw-r--r--acinclude.m41
-rw-r--r--datapath/linux/compat/gre.c2
-rw-r--r--datapath/linux/compat/include/net/gre.h2
-rw-r--r--datapath/linux/compat/include/net/ip_tunnels.h7
-rw-r--r--datapath/linux/compat/include/net/vxlan.h2
-rw-r--r--datapath/linux/compat/ip_tunnels_core.c2
-rw-r--r--datapath/linux/compat/vxlan.c2
-rw-r--r--datapath/vport-geneve.c1
8 files changed, 10 insertions, 9 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 9a7f80940..9a7ea84fe 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -379,6 +379,7 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
OVS_GREP_IFELSE([$KSRC/include/linux/openvswitch.h], [openvswitch_handle_frame_hook],
[OVS_DEFINE([HAVE_RHEL_OVS_HOOK])])
+ OVS_GREP_IFELSE([$KSRC/include/net/vxlan.h], [vxlan_xmit_skb])
OVS_GREP_IFELSE([$KSRC/include/net/vxlan.h], [bool xnet],
[OVS_DEFINE([HAVE_VXLAN_XMIT_SKB_XNET_ARG])])
OVS_GREP_IFELSE([$KSRC/include/net/udp.h], [udp_flow_src_port],
diff --git a/datapath/linux/compat/gre.c b/datapath/linux/compat/gre.c
index de3d6eb7c..c7f255107 100644
--- a/datapath/linux/compat/gre.c
+++ b/datapath/linux/compat/gre.c
@@ -268,7 +268,7 @@ int gre_cisco_unregister(struct gre_cisco_protocol *proto)
#endif /* !HAVE_GRE_CISCO_REGISTER */
-#ifndef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
+#ifndef USE_KERNEL_TUNNEL_API
/* GRE TX side. */
static void gre_csum_fix(struct sk_buff *skb)
diff --git a/datapath/linux/compat/include/net/gre.h b/datapath/linux/compat/include/net/gre.h
index f091b327a..b4bf2f150 100644
--- a/datapath/linux/compat/include/net/gre.h
+++ b/datapath/linux/compat/include/net/gre.h
@@ -81,7 +81,7 @@ static inline __be16 tnl_flags_to_gre_flags(__be16 tflags)
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) */
#endif /* HAVE_GRE_CISCO_REGISTER */
-#ifndef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
+#ifndef USE_KERNEL_TUNNEL_API
#define gre_build_header rpl_gre_build_header
void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
diff --git a/datapath/linux/compat/include/net/ip_tunnels.h b/datapath/linux/compat/include/net/ip_tunnels.h
index 9afab8cbb..d03be7564 100644
--- a/datapath/linux/compat/include/net/ip_tunnels.h
+++ b/datapath/linux/compat/include/net/ip_tunnels.h
@@ -3,14 +3,15 @@
#include <linux/version.h>
#if defined(HAVE_GRE_HANDLE_OFFLOADS) && \
- LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
+ LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) && \
+ defined(HAVE_VXLAN_XMIT_SKB)
/* RHEL6 and RHEL7 both has backported tunnel API but RHEL6 has
* older version, so avoid using RHEL6 backports.
*/
-#define GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
+#define USE_KERNEL_TUNNEL_API
#endif
-#ifdef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
+#ifdef USE_KERNEL_TUNNEL_API
#include_next <net/ip_tunnels.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0)
diff --git a/datapath/linux/compat/include/net/vxlan.h b/datapath/linux/compat/include/net/vxlan.h
index 1b801dda8..099d8241c 100644
--- a/datapath/linux/compat/include/net/vxlan.h
+++ b/datapath/linux/compat/include/net/vxlan.h
@@ -7,7 +7,7 @@
#include <net/gre.h>
#include <linux/version.h>
-#ifdef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
+#ifdef USE_KERNEL_TUNNEL_API
#include_next <net/vxlan.h>
static inline int rpl_vxlan_xmit_skb(struct vxlan_sock *vs,
diff --git a/datapath/linux/compat/ip_tunnels_core.c b/datapath/linux/compat/ip_tunnels_core.c
index 007cd174e..6cf38d04c 100644
--- a/datapath/linux/compat/ip_tunnels_core.c
+++ b/datapath/linux/compat/ip_tunnels_core.c
@@ -35,7 +35,7 @@
#include "compat.h"
#include "gso.h"
-#ifndef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
+#ifndef USE_KERNEL_TUNNEL_API
int iptunnel_xmit(struct sock *sk, struct rtable *rt,
struct sk_buff *skb,
__be32 src, __be32 dst, __u8 proto,
diff --git a/datapath/linux/compat/vxlan.c b/datapath/linux/compat/vxlan.c
index 7f5918bfe..f13cc8957 100644
--- a/datapath/linux/compat/vxlan.c
+++ b/datapath/linux/compat/vxlan.c
@@ -58,7 +58,7 @@
#include "datapath.h"
#include "gso.h"
#include "vlan.h"
-#ifndef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
+#ifndef USE_KERNEL_TUNNEL_API
#define VXLAN_HLEN (sizeof(struct udphdr) + sizeof(struct vxlanhdr))
diff --git a/datapath/vport-geneve.c b/datapath/vport-geneve.c
index d79e27bd5..7c085779a 100644
--- a/datapath/vport-geneve.c
+++ b/datapath/vport-geneve.c
@@ -31,7 +31,6 @@
#include <net/ip.h>
#include <net/route.h>
#include <net/udp.h>
-#include <net/vxlan.h>
#include <net/xfrm.h>
#include "datapath.h"