aboutsummaryrefslogtreecommitdiff
blob: 91c4d89519c1e75e63fe93df0d46bdd451468f6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
diff --git a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
index 489c9f5..f8278ad 100644
--- a/src/wl/sys/wl_linux.c
+++ b/src/wl/sys/wl_linux.c
@@ -93,7 +93,11 @@
 
 #include <wlc_wowl.h>
 
+#ifdef HAVE_TIMER_SETUP
+static void wl_timer(struct timer_list *list);
+#else
 static void wl_timer(ulong data);
+#endif
 static void _wl_timer(wl_timer_t *t);
 static struct net_device *wl_alloc_linux_if(wl_if_t *wlif);
 
@@ -2296,12 +2300,17 @@
 
 	atomic_dec(&t->wl->callbacks);
 }
-
+#ifdef HAVE_TIMER_SETUP
+static void
+wl_timer(struct timer_list *list)
+{
+	wl_timer_t *t = from_timer(t,list,timer);
+#else
 static void
 wl_timer(ulong data)
 {
 	wl_timer_t *t = (wl_timer_t *)data;
-
+#endif
 	if (!WL_ALL_PASSIVE_ENAB(t->wl))
 		_wl_timer(t);
 	else
@@ -2351,10 +2360,13 @@
 	}
 
 	bzero(t, sizeof(wl_timer_t));
-
+#ifdef HAVE_TIMER_SETUP
+	timer_setup(&t->timer, wl_timer,0);
+#else
 	init_timer(&t->timer);
 	t->timer.data = (ulong) t;
 	t->timer.function = wl_timer;
+#endif
 	t->wl = wl;
 	t->fn = fn;
 	t->arg = arg;
diff --git a/src/wl/sys/wl_linux.h b/src/wl/sys/wl_linux.h
index 489c9f5..f8278ad 100644
--- a/src/wl/sys/wl_linux.h
+++ b/src/wl/sys/wl_linux.h
@@ -190,3 +190,7 @@
 extern struct net_device * wl_netdev_get(wl_info_t *wl);
 
 #endif 
+
+#if defined(timer_setup) && defined(from_timer)
+#define HAVE_TIMER_SETUP
+#endif