libertas: correct card cleanup order in SPI driver
authorAndrey Yurovsky <andrey@cozybit.com>
Thu, 18 Jun 2009 16:51:57 +0000 (09:51 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 10 Jul 2009 19:01:55 +0000 (15:01 -0400)
commitefcfd1f28f6a5c377a0e630ca2c96c54eb3f1e8f
treed929bed1f9756dbe811b2f065951eebdbab25cf1
parentce8d096dac70e92a506d2f686ae4f724f42052cf
libertas: correct card cleanup order in SPI driver

The SPI driver does a couple of card cleanup steps in the wrong order on
module removal.  If IEEE PS is enabled, this results in the card being
left in IEEE PS mode and subsequent failures to reload the module.  The
problem is that the surpriseremoved flag is set before calling
lbs_remove_card, but that function needs to issue a command to exit IEEE
PS mode (the flag blocks the command path).  In addition, lbs_stop_card
should be called first because it clears out any pending commands.

Tested on a GSPI device with V9 firmware by confirming that we can
reload the module with or without IEEE PS enabled.

Also fix a warning from the wrong uint format in a printk.

V2: use z modifier, thanks Sebastian.

Signed-off-by: Andrey Yurovsky <andrey@cozybit.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/libertas/if_spi.c