Disable GRE compat layer for >= 3.11 as datapath is in sync with the kernel in 3.11 so use of compat no longer required.
Use netdev_notifier_info_to_dev in dp_device_event, provide for < 3.11 in compat layer. This fix was based on this commit from the 3.11 kernel: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/net/openvswitch?id=351638e7deeed2ec8ce451b53d33921b3da68f83 Signed-off-by: James Page <james.p...@ubuntu.com> --- FAQ | 2 +- NEWS | 2 +- datapath/datapath.c | 4 ++-- datapath/dp_notify.c | 2 +- datapath/linux/compat/gre.c | 4 ++++ datapath/linux/compat/include/linux/netdevice.h | 11 +++++++++++ datapath/linux/compat/include/net/gre.h | 3 +++ 7 files changed, 23 insertions(+), 5 deletions(-) diff --git a/FAQ b/FAQ index 75d9007..6eb66d4 100644 --- a/FAQ +++ b/FAQ @@ -148,7 +148,7 @@ A: The following table lists the Linux kernel versions against which the 1.9.x 2.6.18 to 3.8 1.10.x 2.6.18 to 3.8 1.11.x 2.6.18 to 3.8 - 1.12.x 2.6.18 to 3.10 + 1.12.x 2.6.18 to 3.11 Open vSwitch userspace should also work with the Linux kernel module built into Linux 3.3 and later. diff --git a/NEWS b/NEWS index 1246383..ac6cc00 100644 --- a/NEWS +++ b/NEWS @@ -22,7 +22,7 @@ v1.12.0 - xx xxx xxxx through database paths (e.g. Private key option with the database name should look like "--private-key=db:Open_vSwitch,SSL,private_key"). - Added ovs-dev.py, a utility script helpful for Open vSwitch developers. - - Support for Linux kernels up to 3.10 + - Support for Linux kernels up to 3.11 - ovs-ofctl: * New "ofp-parse" for printing OpenFlow messages read from a file. diff --git a/datapath/datapath.c b/datapath/datapath.c index 48f17c0..c01a715 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -62,8 +62,8 @@ #include "vport-netdev.h" #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) || \ - LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0) -#error Kernels before 2.6.18 or after 3.9 are not supported by this version of Open vSwitch. + LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0) +#error Kernels before 2.6.18 or after 3.11 are not supported by this version of Open vSwitch. #endif #define REHASH_FLOW_INTERVAL (10 * 60 * HZ) diff --git a/datapath/dp_notify.c b/datapath/dp_notify.c index d530893..db670e1 100644 --- a/datapath/dp_notify.c +++ b/datapath/dp_notify.c @@ -79,7 +79,7 @@ static int dp_device_event(struct notifier_block *unused, unsigned long event, void *ptr) { struct ovs_net *ovs_net; - struct net_device *dev = ptr; + struct net_device *dev = netdev_notifier_info_to_dev(ptr); struct vport *vport = NULL; if (!ovs_is_internal_dev(dev)) diff --git a/datapath/linux/compat/gre.c b/datapath/linux/compat/gre.c index 582bd94..d02537a 100644 --- a/datapath/linux/compat/gre.c +++ b/datapath/linux/compat/gre.c @@ -19,6 +19,8 @@ #include <linux/kconfig.h> #if IS_ENABLED(CONFIG_NET_IPGRE_DEMUX) +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) + #include <linux/module.h> #include <linux/if.h> #include <linux/if_tunnel.h> @@ -354,4 +356,6 @@ int gre_cisco_unregister(struct gre_cisco_protocol *proto) return ret; } +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) */ + #endif /* CONFIG_NET_IPGRE_DEMUX */ diff --git a/datapath/linux/compat/include/linux/netdevice.h b/datapath/linux/compat/include/linux/netdevice.h index 2ceff22..4b2b4e5 100644 --- a/datapath/linux/compat/include/linux/netdevice.h +++ b/datapath/linux/compat/include/linux/netdevice.h @@ -208,4 +208,15 @@ static inline void netdev_upper_dev_unlink(struct net_device *dev, } #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) + +/* Simply pass through the passed parameter for Linux < 3.11.0 */ +static inline struct net_device * +netdev_notifier_info_to_dev(void *info) +{ + return info; +} + +#endif + #endif diff --git a/datapath/linux/compat/include/net/gre.h b/datapath/linux/compat/include/net/gre.h index 5f46aed..a51b0bc 100644 --- a/datapath/linux/compat/include/net/gre.h +++ b/datapath/linux/compat/include/net/gre.h @@ -73,6 +73,8 @@ static inline __be16 tnl_flags_to_gre_flags(__be16 tflags) } #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) + #define MAX_GRE_PROTO_PRIORITY 255 struct gre_cisco_protocol { int (*handler)(struct sk_buff *skb, const struct tnl_ptk_info *tpi); @@ -102,5 +104,6 @@ static inline int ip_gre_calc_hlen(__be16 o_flags) return addend; } +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) */ #endif -- 1.8.3.2 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev