aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/main.c')
-rw-r--r--net/mac80211/main.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 6d8710327d14..a0371caf01ce 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -195,37 +195,30 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
195 struct ieee80211_channel *chan; 195 struct ieee80211_channel *chan;
196 int ret = 0; 196 int ret = 0;
197 int power; 197 int power;
198 enum nl80211_sec_chan_offset sec_chan_offset; 198 enum nl80211_channel_type channel_type;
199 199
200 might_sleep(); 200 might_sleep();
201 201
202 if (local->sw_scanning) { 202 if (local->sw_scanning) {
203 chan = local->scan_channel; 203 chan = local->scan_channel;
204 sec_chan_offset = NL80211_SEC_CHAN_NO_HT; 204 channel_type = NL80211_CHAN_NO_HT;
205 } else { 205 } else {
206 chan = local->oper_channel; 206 chan = local->oper_channel;
207 sec_chan_offset = local->oper_sec_chan_offset; 207 channel_type = local->oper_channel_type;
208 } 208 }
209 209
210 if (chan != local->hw.conf.channel || 210 if (chan != local->hw.conf.channel ||
211 sec_chan_offset != local->hw.conf.ht.sec_chan_offset) { 211 channel_type != local->hw.conf.ht.channel_type) {
212 local->hw.conf.channel = chan; 212 local->hw.conf.channel = chan;
213 switch (sec_chan_offset) { 213 local->hw.conf.ht.channel_type = channel_type;
214 case NL80211_SEC_CHAN_NO_HT: 214 switch (channel_type) {
215 case NL80211_CHAN_NO_HT:
215 local->hw.conf.ht.enabled = false; 216 local->hw.conf.ht.enabled = false;
216 local->hw.conf.ht.sec_chan_offset = 0;
217 break; 217 break;
218 case NL80211_SEC_CHAN_DISABLED: 218 case NL80211_CHAN_HT20:
219 case NL80211_CHAN_HT40MINUS:
220 case NL80211_CHAN_HT40PLUS:
219 local->hw.conf.ht.enabled = true; 221 local->hw.conf.ht.enabled = true;
220 local->hw.conf.ht.sec_chan_offset = 0;
221 break;
222 case NL80211_SEC_CHAN_BELOW:
223 local->hw.conf.ht.enabled = true;
224 local->hw.conf.ht.sec_chan_offset = -1;
225 break;
226 case NL80211_SEC_CHAN_ABOVE:
227 local->hw.conf.ht.enabled = true;
228 local->hw.conf.ht.sec_chan_offset = 1;
229 break; 222 break;
230 } 223 }
231 changed |= IEEE80211_CONF_CHANGE_CHANNEL; 224 changed |= IEEE80211_CONF_CHANGE_CHANNEL;