summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-core.c
diff options
context:
space:
mode:
authorEmmanuel Grumbach2008-05-29 10:35:24 +0200
committerJohn W. Linville2008-06-03 21:00:26 +0200
commit4d38c2e8ea7589f546244a1673b8171455283fcb (patch)
treeb0cdb5f59de8e8d1c85678d6de6e653ee3b304aa /drivers/net/wireless/iwlwifi/iwl-core.c
parentmac80211: allow disable FAT in specific configurations (diff)
downloadkernel-qcow2-linux-4d38c2e8ea7589f546244a1673b8171455283fcb.tar.gz
kernel-qcow2-linux-4d38c2e8ea7589f546244a1673b8171455283fcb.tar.xz
kernel-qcow2-linux-4d38c2e8ea7589f546244a1673b8171455283fcb.zip
iwlwifi: disable FAT channel when not permitted
This patch disables FAT channel when it is not permitted according to the EEPROM. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-core.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 010085aee5d4..c9bbfbb8cfa0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -486,6 +486,25 @@ static int iwlcore_init_geos(struct iwl_priv *priv)
if (ch->flags & EEPROM_CHANNEL_RADAR)
geo_ch->flags |= IEEE80211_CHAN_RADAR;
+ switch (ch->fat_extension_channel) {
+ case HT_IE_EXT_CHANNEL_ABOVE:
+ /* only above is allowed, disable below */
+ geo_ch->flags |= IEEE80211_CHAN_NO_FAT_BELOW;
+ break;
+ case HT_IE_EXT_CHANNEL_BELOW:
+ /* only below is allowed, disable above */
+ geo_ch->flags |= IEEE80211_CHAN_NO_FAT_ABOVE;
+ break;
+ case HT_IE_EXT_CHANNEL_NONE:
+ /* fat not allowed: disable both*/
+ geo_ch->flags |= (IEEE80211_CHAN_NO_FAT_ABOVE |
+ IEEE80211_CHAN_NO_FAT_BELOW);
+ break;
+ case HT_IE_EXT_CHANNEL_MAX:
+ /* both above and below are permitted */
+ break;
+ }
+
if (ch->max_power_avg > priv->max_channel_txpower_limit)
priv->max_channel_txpower_limit =
ch->max_power_avg;