SOURCES: madwifi-ng-2.6.20.patch (NEW) - fixes problems with workq...

mguevara mguevara at pld-linux.org
Wed Jan 10 02:33:00 CET 2007


Author: mguevara                     Date: Wed Jan 10 01:33:00 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- fixes problems with workqueue interface change in 2.6.20

---- Files affected:
SOURCES:
   madwifi-ng-2.6.20.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/madwifi-ng-2.6.20.patch
diff -u /dev/null SOURCES/madwifi-ng-2.6.20.patch:1.1
--- /dev/null	Wed Jan 10 02:33:00 2007
+++ SOURCES/madwifi-ng-2.6.20.patch	Wed Jan 10 02:32:55 2007
@@ -0,0 +1,69 @@
+The attached patch fix the compilation problem caused by the workqueue
+interface changes in the recent kernels (2.6.20).
+
+Signed-off-by: Shahar Frank <shaharf at qumranet.com>
+
+Index: ath/if_ath.c
+===================================================================
+--- ath/if_ath.c	(revision 1871)
++++ ath/if_ath.c	(working copy)
+@@ -118,7 +118,7 @@
+ static void ath_rxorn_tasklet(TQUEUE_ARG);
+ static void ath_bmiss_tasklet(TQUEUE_ARG);
+ static void ath_bstuck_tasklet(TQUEUE_ARG);
+-static void ath_radar_task(TQUEUE_ARG);
++static void ath_radar_task(ATH_WORK_ARG data);
+ static void ath_dfs_test_return(unsigned long);
+ 
+ static int ath_stop_locked(struct net_device *);
+@@ -1737,9 +1737,10 @@
+ }
+ 
+ static void
+-ath_radar_task(TQUEUE_ARG data)
++ath_radar_task(ATH_WORK_ARG data)
+ {
+-	struct net_device *dev = (struct net_device *)data;
++	struct ATH_WORK_THREAD *t = container_of(data, struct ATH_WORK_THREAD, worker);
++	struct net_device *dev = (struct net_device *)t->data;
+ 	struct ath_softc *sc = dev->priv;
+ 	struct ath_hal *ah = sc->sc_ah;
+ 	struct ieee80211com *ic = &sc->sc_ic;
+Index: ath/if_athvar.h
+===================================================================
+--- ath/if_athvar.h	(revision 1871)
++++ ath/if_athvar.h	(working copy)
+@@ -80,14 +80,31 @@
+ 	(t)->data=(void *) (d); 		\
+ } while (0)
+ #define ATH_FLUSH_TASKS			flush_scheduled_tasks
+-#else
++#define ATH_WORK_ARG			TQUEUE_ARG
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
+ #include <linux/workqueue.h>
+ #define ATH_SCHEDULE_TASK(t)		schedule_work((t))
+ 
+ #define ATH_INIT_SCHED_TASK(_t, _f, _d)	INIT_WORK((_t), (void (*)(void *))(_f), (void *)(_d));
+ 
+ #define ATH_WORK_THREAD			work_struct
+-#define	ATH_FLUSH_TASKS			flush_scheduled_work
++#define ATH_FLUSH_TASKS			flush_scheduled_work
++#define ATH_WORK_ARG			TQUEUE_ARG
++#else
++#include <linux/workqueue.h>
++struct ath_work_struct {
++	struct work_struct worker;
++	void *data;
++}; 
++#define ATH_WORK_THREAD			ath_work_struct
++#define ATH_WORK_ARG			struct work_struct *
++#define ATH_INIT_SCHED_TASK(_t, _f, _d)	do {\
++		INIT_WORK(&(_t)->worker, (void (*)(ATH_WORK_ARG))(_f));\
++		(_t)->data = dev;\
++	} while (0);\
++		
++#define ATH_FLUSH_TASKS			flush_scheduled_work
++#define ATH_SCHEDULE_TASK(t)		schedule_work(&(t)->worker)
+ #endif /* KERNEL_VERSION < 2.5.41 */
+ 
+ /*
================================================================


More information about the pld-cvs-commit mailing list