On Fri, Oct 10, 2014 at 3:29 PM, Andy Zhou <az...@nicira.com> wrote: > Would it be better to use kernel's CONFIG_VXLAN setting to determine > if vxlan compat code should > be used? > tunnel compat code do not check for CONFIG option. User is expected to have these module options turned on to use OVS tunneling to get optimal performance.
> On Fri, Oct 10, 2014 at 8:21 AM, Pravin B Shelar <pshe...@nicira.com> wrote: >> 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 <dben...@verdantnetworks.com> >> Signed-off-by: Pravin B Shelar <pshe...@nicira.com> >> --- >> 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 9a7f809..9a7ea84 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 de3d6eb..c7f2551 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 f091b32..b4bf2f1 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 9afab8c..d03be75 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 1b801dd..099d824 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 007cd17..6cf38d0 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 7f5918b..f13cc89 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 d79e27b..7c08577 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" >> -- >> 1.7.1 >> >> _______________________________________________ >> dev mailing list >> dev@openvswitch.org >> http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev