Subject: Re: wi driver issues [was Re: driver for Lucent WaveLan/IEEE 802.11 committed]
To: None <current-users@netbsd.org>
From: Jeff Rizzo <riz@boogers.sf.ca.us>
List: current-users
Date: 07/19/1999 19:48:15
On Mon, Jul 19, 1999 at 05:20:34PM -0700, Jeff Rizzo wrote:
> Well, I've now been playing with the driver on my Thinkpad 600 for the
> better part of a day (thanks to Chris Hopps who pointed out that the IO
> space allocated for it was overlapped an unconfigured device), and I've
> noticed three things, the first two of which may or may not be related:
> 
> 1.  The card never comes up correctly the first time it's ifconfig'ed up.
>     No IRQ is assigned for it, and consequently any attempted accesses
>     result in  "wi0: device timeout".  However, if I bring the interface
>     down, then up again, it works fine.  (even in powersaving mode!)
> 
> 2.  Suspend mode on the laptop doesn't seem to work correctly once wi0
>     is probed;  calling apm suspend seems to put it in Standby mode
>     instead.  (Which, incidentally, seems to be broken on this machine;
>     it may or may not be related to PR 6279 ... I've put the patch in, 
>     which seems to clear up the suspend problem, but...)  It's calling
>     apm_suspend, because /etc/apm/suspend gets called, but the mode
>     behaves more like standby...

OK, I've got more info on this.  With a little more checking, it seems that 
as long as the wavelan card is in, and the A/C power is connected, it
goes into standby mode, but if the A/C is disconnected, it will go into
full suspend.  This is indeed weird, but as a BIOS update from IBM seems
to have fixed the standby weirdness, I can live with this particular quirk.

Now to hack my startup scripts to run wiconfig!  :)

Perhaps there should be a kernel option for compiling in BSS mode as the
default, as opposed to ad hoc mode?  Just a thought...

Helpful hint:  To toggle power-save mode (Wavelan card must have firmware
updated to v2.00, and the Wavepoint base firmware must be 2.03), put the
following in /etc/apm/battery:

# look for 'wi' interfaces (WaveLAN IEEE), and put them in power-saving
# mode.  (Only do this for interfaces which are up)
INTERFACES=`/sbin/ifconfig -l -u`

for i in $INTERFACES; do
        case $i in
        wi*) 
                /usr/sbin/wiconfig -i $i -P 1
                ;;
        esac
done



And this in /etc/apm/line:

# look for 'wi' interfaces (WaveLAN IEEE), and take them out of
# power-saving mode.
INTERFACES=`/sbin/ifconfig -l -u`

for i in $INTERFACES; do
        case $i in
        wi*) 
                /usr/sbin/wiconfig -i $i -P 0
                ;;
        esac
done


Hope this helps someone, and I'll be shutting up now.  Thanks to all who
provided assistance.

+j
-- 
Jeff Rizzo                                         http://boogers.sf.ca.us/~riz