On 8/16/2018 5:06 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: Yifeng Sun <[email protected]>
---
  acinclude.m4                  |  6 ++++--
  datapath/linux/compat/vxlan.c | 10 ++++++++++
  2 files changed, 14 insertions(+), 2 deletions(-)

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);

Hi Yifeng,

thanks for the patch!  It works fine for enabling the 4.15 kernel. However, we usually also update the Travis configuration file as at this time and then update the faq in Documentation/faq/releases.rst.

How about the following incremental?

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 w
     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

Thanks,

- Greg
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to