[PATCH] bcm43xx: don't set the channel on a device, which is down.

Initial patch by David Woodhouse and Michael Marineau.
Locking fix by me.

Signed-off-by: Michael Buesch <mbuesch@freenet.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
index 2b7ef9b..c37371f 100644
--- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -3530,12 +3530,18 @@
 				       u8 channel)
 {
 	struct bcm43xx_private *bcm = bcm43xx_priv(net_dev);
+	struct bcm43xx_radioinfo *radio;
 	unsigned long flags;
 
 	bcm43xx_lock_mmio(bcm, flags);
-	bcm43xx_mac_suspend(bcm);
-	bcm43xx_radio_selectchannel(bcm, channel, 0);
-	bcm43xx_mac_enable(bcm);
+	if (bcm->initialized) {
+		bcm43xx_mac_suspend(bcm);
+		bcm43xx_radio_selectchannel(bcm, channel, 0);
+		bcm43xx_mac_enable(bcm);
+	} else {
+		radio = bcm43xx_current_radio(bcm);
+		radio->initial_channel = channel;
+	}
 	bcm43xx_unlock_mmio(bcm, flags);
 }