If the device is taken down during a scan, the bcm43xx driver can lock up the system the next time ->set_channel() is called. This avoids the lockup by checking whether the card is running before poking at it.
Signed-off-by: David Woodhouse <[EMAIL PROTECTED]> --- linux-2.6.16.ppc/drivers/net/wireless/bcm43xx/bcm43xx_main.c~ 2006-03-22 16:52:18.000000000 +0000 +++ linux-2.6.16.ppc/drivers/net/wireless/bcm43xx/bcm43xx_main.c 2006-03-24 10:57:53.000000000 +0000 @@ -3937,9 +3937,13 @@ static void bcm43xx_ieee80211_set_chan(s unsigned long flags; spin_lock_irqsave(&bcm->lock, flags); - bcm43xx_mac_suspend(bcm); - bcm43xx_radio_selectchannel(bcm, channel, 0); - bcm43xx_mac_enable(bcm); + if (likely(bcm->initialized)) { + bcm43xx_mac_suspend(bcm); + bcm43xx_radio_selectchannel(bcm, channel, 0); + bcm43xx_mac_enable(bcm); + } else { + bcm->current_core->radio->initial_channel = channel; + } spin_unlock_irqrestore(&bcm->lock, flags); } -- dwmw2 _______________________________________________ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de http://lists.berlios.de/mailman/listinfo/bcm43xx-dev