Signed-off-by: Pravin B Shelar <[email protected]>
---
acinclude.m4 | 8 ++++++--
datapath/linux/compat/include/linux/netdevice.h | 17 +++++++++++++++--
datapath/vport-netdev.c | 2 +-
3 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/acinclude.m4 b/acinclude.m4
index 6b608ef..6b8d30f 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -134,10 +134,10 @@ AC_DEFUN([OVS_CHECK_LINUX], [
AC_MSG_RESULT([$kversion])
if test "$version" -ge 4; then
- if test "$version" = 4 && test "$patchlevel" -le 4; then
+ if test "$version" = 4 && test "$patchlevel" -le 5; then
: # Linux 4.x
else
- AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version
newer than 4.4.x is not supported (please refer to the FAQ for advice)])
+ AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version
newer than 4.5.x is not supported (please refer to the FAQ for advice)])
fi
elif test "$version" = 3 && test "$patchlevel" -ge 10; then
: # Linux 3.x
@@ -475,6 +475,10 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
[OVS_DEFINE([HAVE_UDP_OFFLOAD_ARG_UOFF])])
OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [gro_remcsum])
OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h], [IFF_PHONY_HEADROOM])
+ OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h],
[netdev_master_upper_dev_link])
+ OVS_FIND_PARAM_IFELSE([$KSRC/include/linux/netdevice.h],
+ [netdev_master_upper_dev_link], [upper_priv],
+ [OVS_DEFINE([HAVE_NETDEV_MASTER_UPPER_DEV_LINK_PRIV])])
OVS_GREP_IFELSE([$KSRC/include/linux/netfilter.h], [nf_hook_state])
OVS_GREP_IFELSE([$KSRC/include/linux/netfilter.h], [nf_register_net_hook])
diff --git a/datapath/linux/compat/include/linux/netdevice.h
b/datapath/linux/compat/include/linux/netdevice.h
index 00eaa21..6b9ab1f 100644
--- a/datapath/linux/compat/include/linux/netdevice.h
+++ b/datapath/linux/compat/include/linux/netdevice.h
@@ -105,7 +105,9 @@ static inline bool netif_needs_gso(struct sk_buff *skb,
}
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
+#ifndef HAVE_NETDEV_MASTER_UPPER_DEV_LINK_PRIV
+
+#ifndef HAVE_NETDEV_MASTER_UPPER_DEV_LINK
/* XEN dom0 networking assumes dev->master is bond device
* and it tries to access bond private structure from dev->master
@@ -113,7 +115,8 @@ static inline bool netif_needs_gso(struct sk_buff *skb,
* not to backport this API.
**/
static inline int netdev_master_upper_dev_link(struct net_device *dev,
- struct net_device *upper_dev)
+ struct net_device *upper_dev,
+ void *upper_priv, void
*upper_info)
{
return 0;
}
@@ -127,6 +130,16 @@ static inline struct net_device
*netdev_master_upper_dev_get(struct net_device *
{
return NULL;
}
+#else
+static inline int rpl_netdev_master_upper_dev_link(struct net_device *dev,
+ struct net_device *upper_dev,
+ void *upper_priv, void
*upper_info)
+{
+ return netdev_master_upper_dev_link(dev, upper_dev);
+}
+#define netdev_master_upper_dev_link rpl_netdev_master_upper_dev_link
+
+#endif
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,16,0)
diff --git a/datapath/vport-netdev.c b/datapath/vport-netdev.c
index 905b125..970f7d3 100644
--- a/datapath/vport-netdev.c
+++ b/datapath/vport-netdev.c
@@ -110,7 +110,7 @@ struct vport *ovs_netdev_link(struct vport *vport, const
char *name)
rtnl_lock();
err = netdev_master_upper_dev_link(vport->dev,
- get_dpdev(vport->dp));
+ get_dpdev(vport->dp), NULL, NULL);
if (err)
goto error_unlock;
--
1.8.3.1
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev