diff options
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 df37d28996c9..aa2d9930c436 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, | |||
111 | unsigned long flags; | 111 | unsigned long flags; |
112 | u8 channel; | 112 | u8 channel; |
113 | int freq; | 113 | int freq; |
114 | int err = 0; | 114 | int err = -EINVAL; |
115 | 115 | ||
116 | spin_lock_irqsave(&bcm->lock, flags); | ||
116 | if ((data->freq.m >= 0) && (data->freq.m <= 1000)) { | 117 | if ((data->freq.m >= 0) && (data->freq.m <= 1000)) { |
117 | channel = data->freq.m; | 118 | channel = data->freq.m; |
118 | freq = bcm43xx_channel_to_freq(bcm, channel); | 119 | freq = bcm43xx_channel_to_freq(bcm, channel); |
@@ -121,16 +122,17 @@ static int bcm43xx_wx_set_channelfreq(struct net_device *net_dev, | |||
121 | freq = data->freq.m; | 122 | freq = data->freq.m; |
122 | } | 123 | } |
123 | if (!bcm43xx_is_valid_channel(bcm, channel)) | 124 | if (!bcm43xx_is_valid_channel(bcm, channel)) |
124 | return -EINVAL; | 125 | goto out_unlock; |
125 | |||
126 | spin_lock_irqsave(&bcm->lock, flags); | ||
127 | if (bcm->initialized) { | 126 | if (bcm->initialized) { |
128 | //ieee80211softmac_disassoc(softmac, $REASON); | 127 | //ieee80211softmac_disassoc(softmac, $REASON); |
129 | bcm43xx_mac_suspend(bcm); | 128 | bcm43xx_mac_suspend(bcm); |
130 | err = bcm43xx_radio_selectchannel(bcm, channel, 0); | 129 | err = bcm43xx_radio_selectchannel(bcm, channel, 0); |
131 | bcm43xx_mac_enable(bcm); | 130 | bcm43xx_mac_enable(bcm); |
132 | } else | 131 | } else { |
133 | bcm->current_core->radio->initial_channel = channel; | 132 | bcm->current_core->radio->initial_channel = channel; |
133 | err = 0; | ||
134 | } | ||
135 | out_unlock: | ||
134 | spin_unlock_irqrestore(&bcm->lock, flags); | 136 | spin_unlock_irqrestore(&bcm->lock, flags); |
135 | 137 | ||
136 | return err; | 138 | return err; |