diff options
author | Michael Buesch <mbuesch@freenet.de> | 2006-03-27 11:49:51 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2006-03-27 11:19:47 -0500 |
commit | ec483781fe98bba92e00f4428f8d69dd5e071246 (patch) | |
tree | b5d60f8b3a0f9723170bd3bd02a4a5b3f854016d /drivers/net | |
parent | adc40e9796d03d56e99bdac62492492a1098124b (diff) | |
download | op-kernel-dev-ec483781fe98bba92e00f4428f8d69dd5e071246.zip op-kernel-dev-ec483781fe98bba92e00f4428f8d69dd5e071246.tar.gz |
[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>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/bcm43xx/bcm43xx_main.c | 12 |
1 files changed, 9 insertions, 3 deletions
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 @@ 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); } |