Older kernel skb_scrub_packet() has bug which resets skb mark for
all packet. It is fixed during 3.18 release where it is reset
only for packets crossing namespace. So OVS is forced to use
compat skb_scrub_packet() on older kernel.
This is related to upstream bug fix commit ca7c7b9059e3
("skbuff: Do not scrub skb mark within the same name space").

VMware-BZ: #1710701
Signed-off-by: Pravin B Shelar <pshe...@ovn.org>
---
 acinclude.m4                                 | 2 --
 datapath/linux/compat/include/linux/skbuff.h | 2 +-
 datapath/linux/compat/skbuff-openvswitch.c   | 2 +-
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/acinclude.m4 b/acinclude.m4
index 25295c5..3ffdb9e 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -551,8 +551,6 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
   OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [inner_protocol_type])
   OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_inner_transport_offset])
   OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [kfree_skb_list])
-  OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_scrub_packet.*xnet],
-                 [OVS_DEFINE([HAVE_SKB_SCRUB_PACKET_XNET])])
   OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [rxhash])
   OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [u16.*rxhash],
                   [OVS_DEFINE([HAVE_U16_RXHASH])])
diff --git a/datapath/linux/compat/include/linux/skbuff.h 
b/datapath/linux/compat/include/linux/skbuff.h
index ad5a558..c0ad7b9 100644
--- a/datapath/linux/compat/include/linux/skbuff.h
+++ b/datapath/linux/compat/include/linux/skbuff.h
@@ -310,7 +310,7 @@ static inline unsigned char *skb_pull_rcsum(struct sk_buff 
*skb, unsigned int le
 
 #endif
 
-#ifndef HAVE_SKB_SCRUB_PACKET_XNET
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0)
 #define skb_scrub_packet rpl_skb_scrub_packet
 void rpl_skb_scrub_packet(struct sk_buff *skb, bool xnet);
 #endif
diff --git a/datapath/linux/compat/skbuff-openvswitch.c 
b/datapath/linux/compat/skbuff-openvswitch.c
index 3a76823..34cf1a7 100644
--- a/datapath/linux/compat/skbuff-openvswitch.c
+++ b/datapath/linux/compat/skbuff-openvswitch.c
@@ -278,7 +278,7 @@ void rpl_kfree_skb_list(struct sk_buff *segs)
 EXPORT_SYMBOL(rpl_kfree_skb_list);
 #endif
 
-#ifndef HAVE_SKB_SCRUB_PACKET_XNET
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0)
 
 #define nf_reset_trace rpl_nf_reset_trace
 static void nf_reset_trace(struct sk_buff *skb)
-- 
2.5.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to