aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorZhu Yi <yi.zhu@intel.com>2009-08-13 16:30:53 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-20 11:33:10 -0400
commit3b24716fc978db9c27c4a069e5201460479340a4 (patch)
treee7a8111573b3b5e3efd19b49ca5cc85d1dca3c53 /drivers/net/wireless/iwlwifi
parent7869b0eaed0447a989d8672eed27a358aa5dde0c (diff)
iwlwifi: cleanup HT40 extension channels setup
The patch cleans up the HT40 extension channels setup for EEPROM band 6 and 7 to make it more readable. Signed-off-by: Zhu Yi <yi.zhu@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom.c37
1 files changed, 12 insertions, 25 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.c b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
index 78c4a324a3b5..ded63320a463 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.c
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
@@ -484,14 +484,14 @@ static void iwl_init_band_reference(const struct iwl_priv *priv,
484 ? # x " " : "") 484 ? # x " " : "")
485 485
486/** 486/**
487 * iwl_set_ht40_chan_info - Copy ht40 channel info into driver's priv. 487 * iwl_mod_ht40_chan_info - Copy ht40 channel info into driver's priv.
488 * 488 *
489 * Does not set up a command, or touch hardware. 489 * Does not set up a command, or touch hardware.
490 */ 490 */
491static int iwl_set_ht40_chan_info(struct iwl_priv *priv, 491static int iwl_mod_ht40_chan_info(struct iwl_priv *priv,
492 enum ieee80211_band band, u16 channel, 492 enum ieee80211_band band, u16 channel,
493 const struct iwl_eeprom_channel *eeprom_ch, 493 const struct iwl_eeprom_channel *eeprom_ch,
494 u8 ht40_extension_channel) 494 u8 clear_ht40_extension_channel)
495{ 495{
496 struct iwl_channel_info *ch_info; 496 struct iwl_channel_info *ch_info;
497 497
@@ -523,7 +523,7 @@ static int iwl_set_ht40_chan_info(struct iwl_priv *priv,
523 ch_info->ht40_min_power = 0; 523 ch_info->ht40_min_power = 0;
524 ch_info->ht40_scan_power = eeprom_ch->max_power_avg; 524 ch_info->ht40_scan_power = eeprom_ch->max_power_avg;
525 ch_info->ht40_flags = eeprom_ch->flags; 525 ch_info->ht40_flags = eeprom_ch->flags;
526 ch_info->ht40_extension_channel = ht40_extension_channel; 526 ch_info->ht40_extension_channel &= ~clear_ht40_extension_channel;
527 527
528 return 0; 528 return 0;
529} 529}
@@ -592,8 +592,7 @@ int iwl_init_channel_map(struct iwl_priv *priv)
592 /* First write that ht40 is not enabled, and then enable 592 /* First write that ht40 is not enabled, and then enable
593 * one by one */ 593 * one by one */
594 ch_info->ht40_extension_channel = 594 ch_info->ht40_extension_channel =
595 (IEEE80211_CHAN_NO_HT40PLUS | 595 IEEE80211_CHAN_NO_HT40;
596 IEEE80211_CHAN_NO_HT40MINUS);
597 596
598 if (!(is_channel_valid(ch_info))) { 597 if (!(is_channel_valid(ch_info))) {
599 IWL_DEBUG_INFO(priv, "Ch. %d Flags %x [%sGHz] - " 598 IWL_DEBUG_INFO(priv, "Ch. %d Flags %x [%sGHz] - "
@@ -652,7 +651,6 @@ int iwl_init_channel_map(struct iwl_priv *priv)
652 /* Two additional EEPROM bands for 2.4 and 5 GHz HT40 channels */ 651 /* Two additional EEPROM bands for 2.4 and 5 GHz HT40 channels */
653 for (band = 6; band <= 7; band++) { 652 for (band = 6; band <= 7; band++) {
654 enum ieee80211_band ieeeband; 653 enum ieee80211_band ieeeband;
655 u8 ht40_extension_chan;
656 654
657 iwl_init_band_reference(priv, band, &eeprom_ch_count, 655 iwl_init_band_reference(priv, band, &eeprom_ch_count,
658 &eeprom_ch_info, &eeprom_ch_index); 656 &eeprom_ch_info, &eeprom_ch_index);
@@ -663,28 +661,17 @@ int iwl_init_channel_map(struct iwl_priv *priv)
663 661
664 /* Loop through each band adding each of the channels */ 662 /* Loop through each band adding each of the channels */
665 for (ch = 0; ch < eeprom_ch_count; ch++) { 663 for (ch = 0; ch < eeprom_ch_count; ch++) {
666
667 if ((band == 6) &&
668 ((eeprom_ch_index[ch] == 5) ||
669 (eeprom_ch_index[ch] == 6) ||
670 (eeprom_ch_index[ch] == 7)))
671 /* both are allowed: above and below */
672 ht40_extension_chan = 0;
673 else
674 ht40_extension_chan =
675 IEEE80211_CHAN_NO_HT40MINUS;
676
677 /* Set up driver's info for lower half */ 664 /* Set up driver's info for lower half */
678 iwl_set_ht40_chan_info(priv, ieeeband, 665 iwl_mod_ht40_chan_info(priv, ieeeband,
679 eeprom_ch_index[ch], 666 eeprom_ch_index[ch],
680 &(eeprom_ch_info[ch]), 667 &eeprom_ch_info[ch],
681 ht40_extension_chan); 668 IEEE80211_CHAN_NO_HT40PLUS);
682 669
683 /* Set up driver's info for upper half */ 670 /* Set up driver's info for upper half */
684 iwl_set_ht40_chan_info(priv, ieeeband, 671 iwl_mod_ht40_chan_info(priv, ieeeband,
685 (eeprom_ch_index[ch] + 4), 672 eeprom_ch_index[ch] + 4,
686 &(eeprom_ch_info[ch]), 673 &eeprom_ch_info[ch],
687 IEEE80211_CHAN_NO_HT40PLUS); 674 IEEE80211_CHAN_NO_HT40MINUS);
688 } 675 }
689 } 676 }
690 677