Subject: Re: [PATCH] ieee80211softmac: Fix errors related to the work_struct changes

From: Andrew Morton <[email-masked]>
Date: Sun, 10 Dec 2006 10:40:56 -0800

On Sun, 10 Dec 2006 19:35:36 +0100
Ulrich Kunitz <[email-masked]> wrote:

> The problem is that you there are now different work structures:
> struct work_struct and struct delayed_work. The quick fix seems to
> have been to change all old work_structs as associnfo's work to
> delayed_work. The way the structures are designed calling
> schedule_work or schedule_delayed_work doesn't matter, but you
> will get a gcc warning, because the pointer types are not
> identical. This change works around the warning in the same way as
> the other schedule_work calls for associnfo's work.

David proposed the below.  Does it fix things for you?

--- a/net/ieee80211/softmac/ieee80211softmac_assoc.c~workstruct-fix-ieee80211-softmac-compile-problem
+++ a/net/ieee80211/softmac/ieee80211softmac_assoc.c
@@ -438,7 +438,7 @@ ieee80211softmac_try_reassoc(struct ieee
 
 	spin_lock_irqsave(&mac->lock, flags);
 	mac->associnfo.associating = 1;
-	schedule_work(&mac->associnfo.work);
+	schedule_delayed_work(&mac->associnfo.work, 0);
 	spin_unlock_irqrestore(&mac->lock, flags);
 }
 
_

> I'm not sure, whether the breaking of the workqueue API is really
> worth it. What I see is that the change introduced choices and
> choices make things more complex.

It is kinda sucky.  But it saves a bit of space in kernel data structures.