diff options
-rw-r--r-- | drivers/net/wireless/ath9k/ath9k.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/calib.c | 21 | ||||
-rw-r--r-- | drivers/net/wireless/ath9k/main.c | 2 |
3 files changed, 10 insertions, 14 deletions
diff --git a/drivers/net/wireless/ath9k/ath9k.h b/drivers/net/wireless/ath9k/ath9k.h index 0f6a99a3f21a..78fffdf9339f 100644 --- a/drivers/net/wireless/ath9k/ath9k.h +++ b/drivers/net/wireless/ath9k/ath9k.h | |||
@@ -453,6 +453,7 @@ struct ath9k_11n_rate_series { | |||
453 | CHANNEL_HT40MINUS) | 453 | CHANNEL_HT40MINUS) |
454 | 454 | ||
455 | struct ath9k_channel { | 455 | struct ath9k_channel { |
456 | struct ieee80211_channel *chan; | ||
456 | u16 channel; | 457 | u16 channel; |
457 | u32 channelFlags; | 458 | u32 channelFlags; |
458 | u8 privFlags; | 459 | u8 privFlags; |
diff --git a/drivers/net/wireless/ath9k/calib.c b/drivers/net/wireless/ath9k/calib.c index 3c7454fc51bd..2a6b8a4d6e9e 100644 --- a/drivers/net/wireless/ath9k/calib.c +++ b/drivers/net/wireless/ath9k/calib.c | |||
@@ -168,26 +168,18 @@ static void ath9k_hw_do_getnf(struct ath_hal *ah, | |||
168 | } | 168 | } |
169 | 169 | ||
170 | static bool getNoiseFloorThresh(struct ath_hal *ah, | 170 | static bool getNoiseFloorThresh(struct ath_hal *ah, |
171 | const struct ath9k_channel *chan, | 171 | enum ieee80211_band band, |
172 | int16_t *nft) | 172 | int16_t *nft) |
173 | { | 173 | { |
174 | switch (chan->chanmode) { | 174 | switch (band) { |
175 | case CHANNEL_A: | 175 | case IEEE80211_BAND_5GHZ: |
176 | case CHANNEL_A_HT20: | ||
177 | case CHANNEL_A_HT40PLUS: | ||
178 | case CHANNEL_A_HT40MINUS: | ||
179 | *nft = (int8_t)ath9k_hw_get_eeprom(ah, EEP_NFTHRESH_5); | 176 | *nft = (int8_t)ath9k_hw_get_eeprom(ah, EEP_NFTHRESH_5); |
180 | break; | 177 | break; |
181 | case CHANNEL_B: | 178 | case IEEE80211_BAND_2GHZ: |
182 | case CHANNEL_G: | ||
183 | case CHANNEL_G_HT20: | ||
184 | case CHANNEL_G_HT40PLUS: | ||
185 | case CHANNEL_G_HT40MINUS: | ||
186 | *nft = (int8_t)ath9k_hw_get_eeprom(ah, EEP_NFTHRESH_2); | 179 | *nft = (int8_t)ath9k_hw_get_eeprom(ah, EEP_NFTHRESH_2); |
187 | break; | 180 | break; |
188 | default: | 181 | default: |
189 | DPRINTF(ah->ah_sc, ATH_DBG_CHANNEL, | 182 | BUG_ON(1); |
190 | "invalid channel flags 0x%x\n", chan->channelFlags); | ||
191 | return false; | 183 | return false; |
192 | } | 184 | } |
193 | 185 | ||
@@ -692,6 +684,7 @@ int16_t ath9k_hw_getnf(struct ath_hal *ah, | |||
692 | int16_t nf, nfThresh; | 684 | int16_t nf, nfThresh; |
693 | int16_t nfarray[NUM_NF_READINGS] = { 0 }; | 685 | int16_t nfarray[NUM_NF_READINGS] = { 0 }; |
694 | struct ath9k_nfcal_hist *h; | 686 | struct ath9k_nfcal_hist *h; |
687 | struct ieee80211_channel *c = chan->chan; | ||
695 | u8 chainmask; | 688 | u8 chainmask; |
696 | 689 | ||
697 | if (AR_SREV_9280(ah)) | 690 | if (AR_SREV_9280(ah)) |
@@ -709,7 +702,7 @@ int16_t ath9k_hw_getnf(struct ath_hal *ah, | |||
709 | } else { | 702 | } else { |
710 | ath9k_hw_do_getnf(ah, nfarray); | 703 | ath9k_hw_do_getnf(ah, nfarray); |
711 | nf = nfarray[0]; | 704 | nf = nfarray[0]; |
712 | if (getNoiseFloorThresh(ah, chan, &nfThresh) | 705 | if (getNoiseFloorThresh(ah, c->band, &nfThresh) |
713 | && nf > nfThresh) { | 706 | && nf > nfThresh) { |
714 | DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, | 707 | DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, |
715 | "noise floor failed detected; " | 708 | "noise floor failed detected; " |
diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c index c65b27bd9f5f..12c5b9a44904 100644 --- a/drivers/net/wireless/ath9k/main.c +++ b/drivers/net/wireless/ath9k/main.c | |||
@@ -218,6 +218,7 @@ static int ath_setup_channels(struct ath_softc *sc) | |||
218 | chan_2ghz[a].band = IEEE80211_BAND_2GHZ; | 218 | chan_2ghz[a].band = IEEE80211_BAND_2GHZ; |
219 | chan_2ghz[a].center_freq = c->channel; | 219 | chan_2ghz[a].center_freq = c->channel; |
220 | chan_2ghz[a].max_power = c->maxTxPower; | 220 | chan_2ghz[a].max_power = c->maxTxPower; |
221 | c->chan = &chan_2ghz[a]; | ||
221 | 222 | ||
222 | if (c->privFlags & CHANNEL_DISALLOW_ADHOC) | 223 | if (c->privFlags & CHANNEL_DISALLOW_ADHOC) |
223 | chan_2ghz[a].flags |= IEEE80211_CHAN_NO_IBSS; | 224 | chan_2ghz[a].flags |= IEEE80211_CHAN_NO_IBSS; |
@@ -233,6 +234,7 @@ static int ath_setup_channels(struct ath_softc *sc) | |||
233 | chan_5ghz[b].band = IEEE80211_BAND_5GHZ; | 234 | chan_5ghz[b].band = IEEE80211_BAND_5GHZ; |
234 | chan_5ghz[b].center_freq = c->channel; | 235 | chan_5ghz[b].center_freq = c->channel; |
235 | chan_5ghz[b].max_power = c->maxTxPower; | 236 | chan_5ghz[b].max_power = c->maxTxPower; |
237 | c->chan = &chan_5ghz[a]; | ||
236 | 238 | ||
237 | if (c->privFlags & CHANNEL_DISALLOW_ADHOC) | 239 | if (c->privFlags & CHANNEL_DISALLOW_ADHOC) |
238 | chan_5ghz[b].flags |= IEEE80211_CHAN_NO_IBSS; | 240 | chan_5ghz[b].flags |= IEEE80211_CHAN_NO_IBSS; |