You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-wireless/broadcom-sta/files/broadcom-sta-6.30.223.271-r...

64 lines
1.3 KiB

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