From 06021dcba984a0e229140179d25d060659bb60a8 Mon Sep 17 00:00:00 2001 From: Pravin B Shelar Date: Fri, 10 Oct 2014 08:21:18 -0700 Subject: [PATCH] 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 Signed-off-by: Pravin B Shelar Acked-by: Andy Zhou --- acinclude.m4 | 1 + datapath/linux/compat/gre.c | 2 +- datapath/linux/compat/include/net/gre.h | 2 +- datapath/linux/compat/include/net/ip_tunnels.h | 7 ++++--- datapath/linux/compat/include/net/vxlan.h | 2 +- datapath/linux/compat/ip_tunnels_core.c | 2 +- datapath/linux/compat/vxlan.c | 2 +- datapath/vport-geneve.c | 1 - 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 #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 #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 #include -#ifdef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS +#ifdef USE_KERNEL_TUNNEL_API #include_next 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 #include #include -#include #include #include "datapath.h" -- 2.20.1