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