--- a/src/wl/sys/wl_linux.c     2018-01-31 11:33:26.000000000 +0100 
+++ b/src/wl/sys/wl_linux.c     2018-01-31 15:27:18.000000000 +0100 
@@ -93,7 +93,11 @@ 
  
 #include <wlc_wowl.h> 
  
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) 
 static void wl_timer(ulong data); 
+#else 
+static void wl_timer(struct timer_list *tl); 
+#endif 
 static void _wl_timer(wl_timer_t *t); 
 static struct net_device *wl_alloc_linux_if(wl_if_t *wlif); 
  
@@ -2301,9 +2305,17 @@ 
 } 
  
 static void 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) 
 wl_timer(ulong data) 
+#else 
+wl_timer(struct timer_list *tl) 
+#endif 
 { 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) 
        wl_timer_t *t = (wl_timer_t *)data; 
+#else 
+    wl_timer_t *t = from_timer(t, tl, timer); 
+#endif 
  
        if (!WL_ALL_PASSIVE_ENAB(t->wl)) 
                _wl_timer(t); 
@@ -2355,7 +2367,11 @@ 
  
        bzero(t, sizeof(wl_timer_t)); 
  
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) 
        init_timer(&t->timer); 
        t->timer.data = (ulong) t; 
        t->timer.function = wl_timer; 
+#else 
+    timer_setup(&t->timer, wl_timer, 0); 
+#endif 
        t->wl = wl;
