diff mbox series

[ovs-dev,v3] porting: Add fixes to support kernel 4.15.x

Message ID 1534438375-20204-1-git-send-email-pkusunyifeng@gmail.com
State Accepted
Headers show
Series [ovs-dev,v3] porting: Add fixes to support kernel 4.15.x | expand

Commit Message

Yifeng Sun Aug. 16, 2018, 4:52 p.m. UTC
This patch enables OVS kernel module to run on kernel 4.15.x.
Two conntrack-related tests failed:
 - conntrack - multiple zones, local
 - conntrack - multi-stage pipeline, local
This might be due to conntrack policy changes for packets coming
from local ports on kernel 4.15. More survey will be done later.

Signed-off-by: Greg Rose <gvrose8192@gmail.com>
Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com>
Co-authored-by: Greg Rose <gvrose8192@gmail.com>
Co-authored-by: Yifeng Sun <pkusunyifeng@gmail.com>
---
v1->v2: Add travis and documentation from Greg.
v2->v3: Fix co-authored-by, thanks Ben.

 .travis.yml                    | 10 +++++-----
 Documentation/faq/releases.rst |  2 +-
 acinclude.m4                   |  6 ++++--
 datapath/linux/compat/vxlan.c  | 10 ++++++++++
 4 files changed, 20 insertions(+), 8 deletions(-)

Comments

Gregory Rose Aug. 16, 2018, 11:14 p.m. UTC | #1
On 8/16/2018 9:52 AM, Yifeng Sun wrote:
> This patch enables OVS kernel module to run on kernel 4.15.x.
> Two conntrack-related tests failed:
>   - conntrack - multiple zones, local
>   - conntrack - multi-stage pipeline, local
> This might be due to conntrack policy changes for packets coming
> from local ports on kernel 4.15. More survey will be done later.
>
> Signed-off-by: Greg Rose <gvrose8192@gmail.com>
> Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com>
> Co-authored-by: Greg Rose <gvrose8192@gmail.com>
> Co-authored-by: Yifeng Sun <pkusunyifeng@gmail.com>

You can also go ahead and add my tested by and reviewed by tags.

Thanks!

- Greg

> ---
> v1->v2: Add travis and documentation from Greg.
> v2->v3: Fix co-authored-by, thanks Ben.
>
>   .travis.yml                    | 10 +++++-----
>   Documentation/faq/releases.rst |  2 +-
>   acinclude.m4                   |  6 ++++--
>   datapath/linux/compat/vxlan.c  | 10 ++++++++++
>   4 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/.travis.yml b/.travis.yml
> index 4d7bbd8..998b33d 100644
> --- a/.travis.yml
> +++ b/.travis.yml
> @@ -35,11 +35,11 @@ env:
>     - BUILD_ENV="-m32" OPTS="--disable-ssl"
>     - KERNEL=3.16.54 DPDK=1
>     - KERNEL=3.16.54 DPDK=1 OPTS="--enable-shared"
> -  - KERNEL=4.14.47
> -  - KERNEL=4.9.105
> -  - KERNEL=4.4.135
> -  - KERNEL=4.1.52
> -  - KERNEL=3.16.56
> +  - KERNEL=4.15.18
> +  - KERNEL=4.14.63
> +  - KERNEL=4.9.120
> +  - KERNEL=4.4.148
> +  - KERNEL=3.16.57
>     - TESTSUITE=1 LIBS=-ljemalloc
>   
>   matrix:
> diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst
> index 50ca5f6..54c4b54 100644
> --- a/Documentation/faq/releases.rst
> +++ b/Documentation/faq/releases.rst
> @@ -67,7 +67,7 @@ Q: What Linux kernel versions does each Open vSwitch release work with?
>       2.7.x        3.10 to 4.9
>       2.8.x        3.10 to 4.12
>       2.9.x        3.10 to 4.13
> -    2.10.x       3.10 to 4.14
> +    2.10.x       3.10 to 4.15
>       ============ ==============
>   
>       Open vSwitch userspace should also work with the Linux kernel module built
> diff --git a/acinclude.m4 b/acinclude.m4
> index 6e7ea4c..9fffe9c 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -151,10 +151,10 @@ AC_DEFUN([OVS_CHECK_LINUX], [
>       AC_MSG_RESULT([$kversion])
>   
>       if test "$version" -ge 4; then
> -       if test "$version" = 4 && test "$patchlevel" -le 14; then
> +       if test "$version" = 4 && test "$patchlevel" -le 15; then
>             : # Linux 4.x
>          else
> -          AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 4.14.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.15.x is not supported (please refer to the FAQ for advice)])
>          fi
>       elif test "$version" = 3 && test "$patchlevel" -ge 10; then
>          : # Linux 3.x
> @@ -883,6 +883,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
>     OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h],
>                     [void.*ndo_get_stats64],
>                     [OVS_DEFINE([HAVE_VOID_NDO_GET_STATS64])])
> +  OVS_GREP_IFELSE([$KSRC/include/linux/timer.h], [init_timer_deferrable],
> +                  [OVS_DEFINE([HAVE_INIT_TIMER_DEFERRABLE])])
>   
>     if cmp -s datapath/linux/kcompat.h.new \
>               datapath/linux/kcompat.h >/dev/null 2>&1; then
> diff --git a/datapath/linux/compat/vxlan.c b/datapath/linux/compat/vxlan.c
> index 8f5a921..b38a7be 100644
> --- a/datapath/linux/compat/vxlan.c
> +++ b/datapath/linux/compat/vxlan.c
> @@ -1275,9 +1275,15 @@ netdev_tx_t rpl_vxlan_xmit(struct sk_buff *skb)
>   EXPORT_SYMBOL_GPL(rpl_vxlan_xmit);
>   
>   /* Walk the forwarding table and purge stale entries */
> +#ifdef HAVE_INIT_TIMER_DEFERRABLE
>   static void vxlan_cleanup(unsigned long arg)
>   {
>   	struct vxlan_dev *vxlan = (struct vxlan_dev *) arg;
> +#else
> +static void vxlan_cleanup(struct timer_list *t)
> +{
> +       struct vxlan_dev *vxlan = from_timer(vxlan, t, age_timer);
> +#endif
>   	unsigned long next_timer = jiffies + FDB_AGE_INTERVAL;
>   	unsigned int h;
>   
> @@ -1638,9 +1644,13 @@ static void vxlan_setup(struct net_device *dev)
>   	INIT_LIST_HEAD(&vxlan->next);
>   	spin_lock_init(&vxlan->hash_lock);
>   
> +#ifdef HAVE_INIT_TIMER_DEFERRABLE
>   	init_timer_deferrable(&vxlan->age_timer);
>   	vxlan->age_timer.function = vxlan_cleanup;
>   	vxlan->age_timer.data = (unsigned long) vxlan;
> +#else
> +	timer_setup(&vxlan->age_timer, vxlan_cleanup, TIMER_DEFERRABLE);
> +#endif
>   
>   	vxlan->cfg.dst_port = htons(vxlan_port);
>
Ben Pfaff Aug. 16, 2018, 11:26 p.m. UTC | #2
On Thu, Aug 16, 2018 at 04:14:27PM -0700, Gregory Rose wrote:
> On 8/16/2018 9:52 AM, Yifeng Sun wrote:
> >This patch enables OVS kernel module to run on kernel 4.15.x.
> >Two conntrack-related tests failed:
> >  - conntrack - multiple zones, local
> >  - conntrack - multi-stage pipeline, local
> >This might be due to conntrack policy changes for packets coming
> >from local ports on kernel 4.15. More survey will be done later.
> >
> >Signed-off-by: Greg Rose <gvrose8192@gmail.com>
> >Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com>
> >Co-authored-by: Greg Rose <gvrose8192@gmail.com>
> >Co-authored-by: Yifeng Sun <pkusunyifeng@gmail.com>
> 
> You can also go ahead and add my tested by and reviewed by tags.

Thanks, Yifeng and Greg.  Applied to master.  Let me know if it should
be backported.
Gregory Rose Aug. 17, 2018, 5:44 a.m. UTC | #3
On 8/16/2018 4:26 PM, Ben Pfaff wrote:
> On Thu, Aug 16, 2018 at 04:14:27PM -0700, Gregory Rose wrote:
>> On 8/16/2018 9:52 AM, Yifeng Sun wrote:
>>> This patch enables OVS kernel module to run on kernel 4.15.x.
>>> Two conntrack-related tests failed:
>>>   - conntrack - multiple zones, local
>>>   - conntrack - multi-stage pipeline, local
>>> This might be due to conntrack policy changes for packets coming
>> >from local ports on kernel 4.15. More survey will be done later.
>>> Signed-off-by: Greg Rose <gvrose8192@gmail.com>
>>> Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com>
>>> Co-authored-by: Greg Rose <gvrose8192@gmail.com>
>>> Co-authored-by: Yifeng Sun <pkusunyifeng@gmail.com>
>> You can also go ahead and add my tested by and reviewed by tags.
> Thanks, Yifeng and Greg.  Applied to master.  Let me know if it should
> be backported.
Back to 2.10 please.

Thanks Ben!

- Greg
Ben Pfaff Aug. 17, 2018, 5:25 p.m. UTC | #4
On Thu, Aug 16, 2018 at 10:44:46PM -0700, Gregory Rose wrote:
> On 8/16/2018 4:26 PM, Ben Pfaff wrote:
> >On Thu, Aug 16, 2018 at 04:14:27PM -0700, Gregory Rose wrote:
> >>On 8/16/2018 9:52 AM, Yifeng Sun wrote:
> >>>This patch enables OVS kernel module to run on kernel 4.15.x.
> >>>Two conntrack-related tests failed:
> >>>  - conntrack - multiple zones, local
> >>>  - conntrack - multi-stage pipeline, local
> >>>This might be due to conntrack policy changes for packets coming
> >>>from local ports on kernel 4.15. More survey will be done later.
> >>>Signed-off-by: Greg Rose <gvrose8192@gmail.com>
> >>>Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com>
> >>>Co-authored-by: Greg Rose <gvrose8192@gmail.com>
> >>>Co-authored-by: Yifeng Sun <pkusunyifeng@gmail.com>
> >>You can also go ahead and add my tested by and reviewed by tags.
> >Thanks, Yifeng and Greg.  Applied to master.  Let me know if it should
> >be backported.
> Back to 2.10 please.
> 
> Thanks Ben!

Done.
diff mbox series

Patch

diff --git a/.travis.yml b/.travis.yml
index 4d7bbd8..998b33d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -35,11 +35,11 @@  env:
   - BUILD_ENV="-m32" OPTS="--disable-ssl"
   - KERNEL=3.16.54 DPDK=1
   - KERNEL=3.16.54 DPDK=1 OPTS="--enable-shared"
-  - KERNEL=4.14.47
-  - KERNEL=4.9.105
-  - KERNEL=4.4.135
-  - KERNEL=4.1.52
-  - KERNEL=3.16.56
+  - KERNEL=4.15.18
+  - KERNEL=4.14.63
+  - KERNEL=4.9.120
+  - KERNEL=4.4.148
+  - KERNEL=3.16.57
   - TESTSUITE=1 LIBS=-ljemalloc
 
 matrix:
diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst
index 50ca5f6..54c4b54 100644
--- a/Documentation/faq/releases.rst
+++ b/Documentation/faq/releases.rst
@@ -67,7 +67,7 @@  Q: What Linux kernel versions does each Open vSwitch release work with?
     2.7.x        3.10 to 4.9
     2.8.x        3.10 to 4.12
     2.9.x        3.10 to 4.13
-    2.10.x       3.10 to 4.14
+    2.10.x       3.10 to 4.15
     ============ ==============
 
     Open vSwitch userspace should also work with the Linux kernel module built
diff --git a/acinclude.m4 b/acinclude.m4
index 6e7ea4c..9fffe9c 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -151,10 +151,10 @@  AC_DEFUN([OVS_CHECK_LINUX], [
     AC_MSG_RESULT([$kversion])
 
     if test "$version" -ge 4; then
-       if test "$version" = 4 && test "$patchlevel" -le 14; then
+       if test "$version" = 4 && test "$patchlevel" -le 15; then
           : # Linux 4.x
        else
-          AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 4.14.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.15.x is not supported (please refer to the FAQ for advice)])
        fi
     elif test "$version" = 3 && test "$patchlevel" -ge 10; then
        : # Linux 3.x
@@ -883,6 +883,8 @@  AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
   OVS_GREP_IFELSE([$KSRC/include/linux/netdevice.h],
                   [void.*ndo_get_stats64],
                   [OVS_DEFINE([HAVE_VOID_NDO_GET_STATS64])])
+  OVS_GREP_IFELSE([$KSRC/include/linux/timer.h], [init_timer_deferrable],
+                  [OVS_DEFINE([HAVE_INIT_TIMER_DEFERRABLE])])
 
   if cmp -s datapath/linux/kcompat.h.new \
             datapath/linux/kcompat.h >/dev/null 2>&1; then
diff --git a/datapath/linux/compat/vxlan.c b/datapath/linux/compat/vxlan.c
index 8f5a921..b38a7be 100644
--- a/datapath/linux/compat/vxlan.c
+++ b/datapath/linux/compat/vxlan.c
@@ -1275,9 +1275,15 @@  netdev_tx_t rpl_vxlan_xmit(struct sk_buff *skb)
 EXPORT_SYMBOL_GPL(rpl_vxlan_xmit);
 
 /* Walk the forwarding table and purge stale entries */
+#ifdef HAVE_INIT_TIMER_DEFERRABLE
 static void vxlan_cleanup(unsigned long arg)
 {
 	struct vxlan_dev *vxlan = (struct vxlan_dev *) arg;
+#else
+static void vxlan_cleanup(struct timer_list *t)
+{
+       struct vxlan_dev *vxlan = from_timer(vxlan, t, age_timer);
+#endif
 	unsigned long next_timer = jiffies + FDB_AGE_INTERVAL;
 	unsigned int h;
 
@@ -1638,9 +1644,13 @@  static void vxlan_setup(struct net_device *dev)
 	INIT_LIST_HEAD(&vxlan->next);
 	spin_lock_init(&vxlan->hash_lock);
 
+#ifdef HAVE_INIT_TIMER_DEFERRABLE
 	init_timer_deferrable(&vxlan->age_timer);
 	vxlan->age_timer.function = vxlan_cleanup;
 	vxlan->age_timer.data = (unsigned long) vxlan;
+#else
+	timer_setup(&vxlan->age_timer, vxlan_cleanup, TIMER_DEFERRABLE);
+#endif
 
 	vxlan->cfg.dst_port = htons(vxlan_port);