]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
[PATCH] bcm43xx: don't set the channel on a device, which is down.
authorMichael Buesch <mbuesch@freenet.de>
Mon, 27 Mar 2006 09:49:51 +0000 (11:49 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 27 Mar 2006 16:19:47 +0000 (11:19 -0500)
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>
drivers/net/wireless/bcm43xx/bcm43xx_main.c

index 2b7ef9b46ccd9cbdd3cff9d7a945a62456c852ac..c37371fc9e01a4c818f2402606d9aa9739c764a7 100644 (file)
@@ -3530,12 +3530,18 @@ static void bcm43xx_ieee80211_set_chan(struct net_device *net_dev,
                                       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);
 }