2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 14:25:26 +00:00

datapath: Add support for Linux 3.11

Kernel 3.11 has support for extended GRE API required for
OVS datapath,  But vxlan still needs out of tree tunneling
compatibility.  Therefore to simplify, all tunneling modules
are forced to use compat tunneling.

CC: James Page <james.page@ubuntu.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
This commit is contained in:
Pravin B Shelar
2013-10-14 15:26:40 -07:00
parent 5b5d1836dd
commit 54af97ad7b
6 changed files with 18 additions and 3 deletions

1
FAQ
View File

@@ -149,6 +149,7 @@ A: The following table lists the Linux kernel versions against which the
1.10.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.11.x 2.6.18 to 3.8
2.0.x 2.6.32 to 3.10 2.0.x 2.6.32 to 3.10
2.1.x 2.6.32 to 3.11
Open vSwitch userspace should also work with the Linux kernel module Open vSwitch userspace should also work with the Linux kernel module
built into Linux 3.3 and later. built into Linux 3.3 and later.

1
NEWS
View File

@@ -8,6 +8,7 @@ Post-v2.0.0
* The OpenFlow 1.1+ "Write-Actions" instruction is now supported. * The OpenFlow 1.1+ "Write-Actions" instruction is now supported.
- ovs-vswitchd.conf.db.5 man page will contain graphviz/dot - ovs-vswitchd.conf.db.5 man page will contain graphviz/dot
diagram only if graphviz package was installed at the build time. diagram only if graphviz package was installed at the build time.
- Support for Linux kernels up to 3.11
v2.0.0 - 15 Oct 2013 v2.0.0 - 15 Oct 2013

View File

@@ -134,10 +134,10 @@ AC_DEFUN([OVS_CHECK_LINUX], [
AC_MSG_RESULT([$kversion]) AC_MSG_RESULT([$kversion])
if test "$version" -ge 3; then if test "$version" -ge 3; then
if test "$version" = 3 && test "$patchlevel" -le 10; then if test "$version" = 3 && test "$patchlevel" -le 11; then
: # Linux 3.x : # Linux 3.x
else else
AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 3.10.x is not supported]) AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 3.11.x is not supported])
fi fi
else else
if test "$version" -le 1 || test "$patchlevel" -le 5 || test "$sublevel" -le 31; then if test "$version" -le 1 || test "$patchlevel" -le 5 || test "$sublevel" -le 31; then

View File

@@ -78,7 +78,7 @@ static int dp_device_event(struct notifier_block *unused, unsigned long event,
void *ptr) void *ptr)
{ {
struct ovs_net *ovs_net; struct ovs_net *ovs_net;
struct net_device *dev = ptr; struct net_device *dev = netdev_notifier_info_to_dev(ptr);
struct vport *vport = NULL; struct vport *vport = NULL;
if (!ovs_is_internal_dev(dev)) if (!ovs_is_internal_dev(dev))

View File

@@ -130,4 +130,11 @@ static inline struct net_device *netdev_master_upper_dev_get(struct net_device *
int dev_queue_xmit(struct sk_buff *skb); int dev_queue_xmit(struct sk_buff *skb);
#endif #endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
static inline struct net_device *netdev_notifier_info_to_dev(void *info)
{
return info;
}
#endif
#endif #endif

View File

@@ -74,12 +74,17 @@ static inline __be16 tnl_flags_to_gre_flags(__be16 tflags)
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) */ #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) */
#define MAX_GRE_PROTO_PRIORITY 255 #define MAX_GRE_PROTO_PRIORITY 255
#define gre_cisco_protocol rpl_gre_cisco_protocol
struct gre_cisco_protocol { struct gre_cisco_protocol {
int (*handler)(struct sk_buff *skb, const struct tnl_ptk_info *tpi); int (*handler)(struct sk_buff *skb, const struct tnl_ptk_info *tpi);
u8 priority; u8 priority;
}; };
#define gre_cisco_register rpl_gre_cisco_register
int gre_cisco_register(struct gre_cisco_protocol *proto); int gre_cisco_register(struct gre_cisco_protocol *proto);
#define gre_cisco_unregister rpl_gre_cisco_unregister
int gre_cisco_unregister(struct gre_cisco_protocol *proto); int gre_cisco_unregister(struct gre_cisco_protocol *proto);
#define gre_build_header rpl_gre_build_header #define gre_build_header rpl_gre_build_header
@@ -89,6 +94,7 @@ void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
#define gre_handle_offloads rpl_gre_handle_offloads #define gre_handle_offloads rpl_gre_handle_offloads
struct sk_buff *gre_handle_offloads(struct sk_buff *skb, bool gre_csum); struct sk_buff *gre_handle_offloads(struct sk_buff *skb, bool gre_csum);
#define ip_gre_calc_hlen rpl_ip_gre_calc_hlen
static inline int ip_gre_calc_hlen(__be16 o_flags) static inline int ip_gre_calc_hlen(__be16 o_flags)
{ {
int addend = 4; int addend = 4;