Signed-off-by: Pravin B Shelar <pshe...@nicira.com> --- datapath/datapath.c | 4 ++-- datapath/linux/compat/include/linux/etherdevice.h | 2 +- datapath/linux/compat/include/linux/genetlink.h | 5 ++--- datapath/linux/compat/include/linux/if_vlan.h | 4 ++-- datapath/linux/compat/include/net/dst.h | 9 +++++++++ datapath/tunnel.c | 2 +- 6 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/datapath/datapath.c b/datapath/datapath.c index d64fc32..401e774 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -62,8 +62,8 @@ #include "vport-internal_dev.h" #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) || \ - LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0) -#error Kernels before 2.6.18 or after 3.2 are not supported by this version of Open vSwitch. + LINUX_VERSION_CODE > KERNEL_VERSION(3,3,0) +#error Kernels before 2.6.18 or after 3.3 are not supported by this version of Open vSwitch. #endif #define REHASH_FLOW_INTERVAL (10 * 60 * HZ) diff --git a/datapath/linux/compat/include/linux/etherdevice.h b/datapath/linux/compat/include/linux/etherdevice.h index 7a8178e..5391d13 100644 --- a/datapath/linux/compat/include/linux/etherdevice.h +++ b/datapath/linux/compat/include/linux/etherdevice.h @@ -9,7 +9,7 @@ static inline void eth_hw_addr_random(struct net_device *dev) { random_ether_addr(dev->dev_addr); } -#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) +#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0) static inline void eth_hw_addr_random(struct net_device *dev) { dev_hw_addr_random(dev, dev->dev_addr); diff --git a/datapath/linux/compat/include/linux/genetlink.h b/datapath/linux/compat/include/linux/genetlink.h index f7b96d9..383f606 100644 --- a/datapath/linux/compat/include/linux/genetlink.h +++ b/datapath/linux/compat/include/linux/genetlink.h @@ -4,15 +4,14 @@ #include_next <linux/genetlink.h> #ifdef CONFIG_PROVE_LOCKING -/* No version of the kernel has this function, but our locking scheme depends - * on genl_mutex so for clarity we use it where appropriate. */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) static inline int lockdep_genl_is_held(void) { return 1; } #endif +#endif -/* This is also not upstream yet. */ #ifndef genl_dereference #include <linux/rcupdate.h> diff --git a/datapath/linux/compat/include/linux/if_vlan.h b/datapath/linux/compat/include/linux/if_vlan.h index 326abb2..416ce0e 100644 --- a/datapath/linux/compat/include/linux/if_vlan.h +++ b/datapath/linux/compat/include/linux/if_vlan.h @@ -54,8 +54,7 @@ static inline struct sk_buff *__vlan_put_tag(struct sk_buff *skb, u16 vlan_tci) #define VLAN_TAG_PRESENT VLAN_CFI_MASK #endif -/* This function is not exported from kernel. OVS Upstreaming patch will - * fix that. */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) static inline void vlan_set_encap_proto(struct sk_buff *skb, struct vlan_hdr *vhdr) { __be16 proto; @@ -88,4 +87,5 @@ static inline void vlan_set_encap_proto(struct sk_buff *skb, struct vlan_hdr *vh */ skb->protocol = htons(ETH_P_802_2); } +#endif #endif /* linux/if_vlan.h wrapper */ diff --git a/datapath/linux/compat/include/net/dst.h b/datapath/linux/compat/include/net/dst.h index f481a9d..6b1385d 100644 --- a/datapath/linux/compat/include/net/dst.h +++ b/datapath/linux/compat/include/net/dst.h @@ -3,6 +3,15 @@ #include_next <net/dst.h> +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0) +static inline struct neighbour *dst_get_neighbour_noref(struct dst_entry *dst) +{ + return rcu_dereference(dst->_neighbour); +} +#endif +#endif + #ifndef HAVE_SKB_DST_ACCESSOR_FUNCS static inline void skb_dst_drop(struct sk_buff *skb) diff --git a/datapath/tunnel.c b/datapath/tunnel.c index cdbf94a..ea97e39 100644 --- a/datapath/tunnel.c +++ b/datapath/tunnel.c @@ -111,7 +111,7 @@ static unsigned int multicast_ports __read_mostly; #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) static struct hh_cache *rt_hh(struct rtable *rt) { - struct neighbour *neigh = dst_get_neighbour(&rt->dst); + struct neighbour *neigh = dst_get_neighbour_noref(&rt->dst); if (!neigh || !(neigh->nud_state & NUD_CONNECTED) || !neigh->hh.hh_len) return NULL; -- 1.7.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev