Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: wpi0 going offline frequently



On Mon, Feb 18, 2008 at 06:36:56AM +0000, Steven M. Bellovin wrote:
> On a Thinkpad T61 running amd64-current (right now, 4.99.53, but this
> has been going on for a while), wpi0 will frequently go offline after a
> 
>       wpi0: fatal firmware error
> 
> message.   This almost always happens when I start X, perhaps because
> of interrupts being masked.  It happened just now in this sequence:

It looks to me like you can recover by calling wpi_stop(, 0) and
wpi_init(), since wpi_init() reloads and restarts the firmware.  However,
wpi_init() cannot be called from interrupt context.  I suppose wpi needs
some kernel thread to wake and call wpi_init().  That thread needs to
be synchronized with other threads that may call _stop() or _init(),
and it needs to be synchronized with interrupts.

BTW, wpi misuses the IFF_UP flag in wpi_intr() and elsewhere.  By
convention, the operator "owns" the IFF_UP bit.  wpi should read/write
IFF_RUNNING instead of IFF_UP in a few of the places where it modifies
IFF_UP, now.

Dave

-- 
David Young             OJC Technologies
dyoung%ojctech.com@localhost      Urbana, IL * (217) 278-3933 ext 24


Home | Main Index | Thread Index | Old Index