[ovs-dev] [PATCH 1.9 2/2] datapath: Account for RHEL6.4 backports in compat layer
Thomas Graf
tgraf at redhat.com
Fri Apr 26 10:03:11 UTC 2013
Explicitly check the availability of several kernel API functions
instead of relying on the kernel version to account for Red Hat
Enterprise Linux backports.
Signed-off-by: Thomas Graf <tgraf at redhat.com>
Signed-off-by: Jesse Gross <jesse at nicira.com>
(cherry picked from commit 42d5dd9595cce35a8825a20be7d71a3a8f6f5640)
Conflicts:
datapath/linux/compat/include/asm/percpu.h
datapath/linux/compat/include/linux/netdevice.h
---
acinclude.m4 | 4 ++++
datapath/linux/compat/include/net/netlink.h | 8 +++++++-
datapath/linux/compat/netdevice.c | 2 ++
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/acinclude.m4 b/acinclude.m4
index ec0ac7e..7c5f53d 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -224,6 +224,7 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_disable_lro])
OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_get_stats])
OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [dev_get_by_index_rcu])
+ OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [can_checksum_protocol])
OVS_GREP_IFELSE([$KSRC/include/linux/rcupdate.h], [rcu_read_lock_held], [],
[OVS_GREP_IFELSE([$KSRC/include/linux/rtnetlink.h],
@@ -268,6 +269,9 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [NLA_NUL_STRING])
OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_get_be16])
+ OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_be16])
+ OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_be32])
+ OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_be64])
OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_find_nested])
OVS_GREP_IFELSE([$KSRC/include/linux/if_vlan.h], [ADD_ALL_VLANS_CMD],
diff --git a/datapath/linux/compat/include/net/netlink.h b/datapath/linux/compat/include/net/netlink.h
index 9616ea9..308cd69 100644
--- a/datapath/linux/compat/include/net/netlink.h
+++ b/datapath/linux/compat/include/net/netlink.h
@@ -85,15 +85,21 @@ static inline __be64 nla_get_be64(const struct nlattr *nla)
}
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
+#ifndef HAVE_NLA_PUT_BE16
static inline int nla_put_be16(struct sk_buff *skb, int attrtype, __be16 value)
{
return nla_put(skb, attrtype, sizeof(__be16), &value);
}
+#endif
+
+#ifndef HAVE_NLA_PUT_BE32
static inline int nla_put_be32(struct sk_buff *skb, int attrtype, __be32 value)
{
return nla_put(skb, attrtype, sizeof(__be32), &value);
}
+#endif
+
+#ifndef HAVE_NLA_PUT_BE64
static inline int nla_put_be64(struct sk_buff *skb, int attrtype, __be64 value)
{
return nla_put(skb, attrtype, sizeof(__be64), &value);
diff --git a/datapath/linux/compat/netdevice.c b/datapath/linux/compat/netdevice.c
index 9e92eeb..d26fb5e 100644
--- a/datapath/linux/compat/netdevice.c
+++ b/datapath/linux/compat/netdevice.c
@@ -2,6 +2,7 @@
#include <linux/if_vlan.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)
+#ifndef HAVE_CAN_CHECKSUM_PROTOCOL
static bool can_checksum_protocol(unsigned long features, __be16 protocol)
{
return ((features & NETIF_F_GEN_CSUM) ||
@@ -12,6 +13,7 @@ static bool can_checksum_protocol(unsigned long features, __be16 protocol)
((features & NETIF_F_FCOE_CRC) &&
protocol == htons(ETH_P_FCOE)));
}
+#endif
static inline int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
{
--
1.7.11.7
More information about the dev
mailing list