Re: ipw2100: race between isr_indicate_associated and rx path

Helmut Schaa <[email protected]> Thu, 22 Jan 2009 08:16:19 +0100
Newsgroups gmane.linux.drivers.ipw2100.devel
Message-ID <[email protected]>
Am Donnerstag, 22. Januar 2009 schrieb Zhu Yi:
> On Thu, 2009-01-22 at 00:34 +0800, Helmut Schaa wrote:
> > 1) The firmware receives the assoc response and moves internally to
> > associated
> > state, followed by an interrupt which informs the driver about that
> > change.
> > 2) The driver does _not_ update its internal state to ASSOCIATED in
> > the
> > interrupt handler. Instead it queues a work to be executed later.
> > 3) The firmware receives the identity request from the AP and accepts
> > the
> > frame as it is in associated state. Followed by an interrupt to the
> > driver.
> > 4) The driver gets the rx interrupt but drops the frame due to not
> > being in
> > associated state.
> > 5) The queued work is executed and state changes to associated but the
> > AP will
> > not resend the EAP frame as the firmware already acked it.
> > 
> > Afterwards wpa_supplicant times out because it did not receive
> > anything from the AP.
> 
> Good audit. Can you try if scheduling the work immediately (instead of
> delayed HZ/10) will fix the problem?

Hmm, just wondering if this might break other things. The following comment
seems to indicate why the work is delayed.

1921   /*
1922    * TBD: BSSID is usually 00:00:00:00:00:00 here and not
1923    *      an actual MAC of the AP. Seems like FW sets this
1924    *      address too late. Read it later and expose through
1925    *      /proc or schedule a later task to query and update
1926    */

I guess the work is delayed to work around a firmware issue. However, I'll
try if queuing the work undelayed fixes my issue and does not cause a 
regression in regard to BSSID reading.

Helmut

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword