diff options
author | Michael Buesch <mbuesch@freenet.de> | 2006-02-19 22:08:48 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2006-03-27 11:18:37 -0500 |
commit | 10d8dd88dcc2c8ebe8ac7dcf75a2da7c9f9ee0f3 (patch) | |
tree | 36a2d439a39f182ee80788fcec58ac3f7b6b7f55 /drivers/net/wireless/bcm43xx/bcm43xx_wx.c | |
parent | ad3f086c49aa682e493c935cda76f3850ee4a80e (diff) | |
download | kernel_samsung_smdk4412-10d8dd88dcc2c8ebe8ac7dcf75a2da7c9f9ee0f3.zip kernel_samsung_smdk4412-10d8dd88dcc2c8ebe8ac7dcf75a2da7c9f9ee0f3.tar.gz kernel_samsung_smdk4412-10d8dd88dcc2c8ebe8ac7dcf75a2da7c9f9ee0f3.tar.bz2 |
[PATCH] bcm43xx: split the channel helper functions, so that they can be used without a valid running core.
Signed-off-by: Michael Buesch <mbuesch@freenet.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/bcm43xx/bcm43xx_wx.c')
-rw-r--r-- | drivers/net/wireless/bcm43xx/bcm43xx_wx.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_wx.c b/drivers/net/wireless/bcm43xx/bcm43xx_wx.c index df37d28..aa2d993 100644 --- a/drivers/net/wireless/bcm43xx/bcm43xx_wx.c +++ b/drivers/net/wireless/bcm43xx/bcm43xx_wx.c @@ -111,8 +111,9 @@ static int bcm43xx_wx_set_channelfreq(struct net_device *net_dev, unsigned long flags; u8 channel; int freq; - int err = 0; + int err = -EINVAL; + spin_lock_irqsave(&bcm->lock, flags); if ((data->freq.m >= 0) && (data->freq.m <= 1000)) { channel = data->freq.m; freq = bcm43xx_channel_to_freq(bcm, channel); @@ -121,16 +122,17 @@ static int bcm43xx_wx_set_channelfreq(struct net_device *net_dev, freq = data->freq.m; } if (!bcm43xx_is_valid_channel(bcm, channel)) - return -EINVAL; - - spin_lock_irqsave(&bcm->lock, flags); + goto out_unlock; if (bcm->initialized) { //ieee80211softmac_disassoc(softmac, $REASON); bcm43xx_mac_suspend(bcm); err = bcm43xx_radio_selectchannel(bcm, channel, 0); bcm43xx_mac_enable(bcm); - } else + } else { bcm->current_core->radio->initial_channel = channel; + err = 0; + } +out_unlock: spin_unlock_irqrestore(&bcm->lock, flags); return err; |