Signed-off-by: Pravin B Shelar <pshe...@ovn.org> --- 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 dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev