iwlwifi: disable FAT channel when not permitted
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 29 May 2008 08:35:24 +0000 (16:35 +0800)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 3 Jun 2008 19:00:26 +0000 (15:00 -0400)
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>
drivers/net/wireless/iwlwifi/iwl-core.c

index 010085aee5d416afa19ca534e0c7e474f9905a3a..c9bbfbb8cfa0bf395a401ef4fd5eb952182ee672 100644 (file)
@@ -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;