Commit 963f5517 authored by Emmanuel Grumbach's avatar Emmanuel Grumbach Committed by John W. Linville

iwlwifi: remove redundant flags regarding to FAT channel

This patch removes redundant flags regarding to FAT channel. Use
mac80211's flag instead.
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarZhu Yi <yi.zhu@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 838f8a74
...@@ -478,24 +478,7 @@ static int iwlcore_init_geos(struct iwl_priv *priv) ...@@ -478,24 +478,7 @@ static int iwlcore_init_geos(struct iwl_priv *priv)
if (ch->flags & EEPROM_CHANNEL_RADAR) if (ch->flags & EEPROM_CHANNEL_RADAR)
geo_ch->flags |= IEEE80211_CHAN_RADAR; geo_ch->flags |= IEEE80211_CHAN_RADAR;
switch (ch->fat_extension_channel) { geo_ch->flags |= 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) if (ch->max_power_avg > priv->max_channel_txpower_limit)
priv->max_channel_txpower_limit = priv->max_channel_txpower_limit =
...@@ -507,7 +490,7 @@ static int iwlcore_init_geos(struct iwl_priv *priv) ...@@ -507,7 +490,7 @@ static int iwlcore_init_geos(struct iwl_priv *priv)
/* Save flags for reg domain usage */ /* Save flags for reg domain usage */
geo_ch->orig_flags = geo_ch->flags; geo_ch->orig_flags = geo_ch->flags;
IWL_DEBUG_INFO("Channel %d Freq=%d[%sGHz] %s flag=0%X\n", IWL_DEBUG_INFO("Channel %d Freq=%d[%sGHz] %s flag=0x%X\n",
ch->channel, geo_ch->center_freq, ch->channel, geo_ch->center_freq,
is_channel_a_band(ch) ? "5.2" : "2.4", is_channel_a_band(ch) ? "5.2" : "2.4",
geo_ch->flags & IEEE80211_CHAN_DISABLED ? geo_ch->flags & IEEE80211_CHAN_DISABLED ?
...@@ -552,6 +535,7 @@ static u8 is_single_rx_stream(struct iwl_priv *priv) ...@@ -552,6 +535,7 @@ static u8 is_single_rx_stream(struct iwl_priv *priv)
(priv->current_ht_config.supp_mcs_set[2] == 0)) || (priv->current_ht_config.supp_mcs_set[2] == 0)) ||
priv->ps_mode == IWL_MIMO_PS_STATIC; priv->ps_mode == IWL_MIMO_PS_STATIC;
} }
static u8 iwl_is_channel_extension(struct iwl_priv *priv, static u8 iwl_is_channel_extension(struct iwl_priv *priv,
enum ieee80211_band band, enum ieee80211_band band,
u16 channel, u8 extension_chan_offset) u16 channel, u8 extension_chan_offset)
...@@ -562,12 +546,12 @@ static u8 iwl_is_channel_extension(struct iwl_priv *priv, ...@@ -562,12 +546,12 @@ static u8 iwl_is_channel_extension(struct iwl_priv *priv,
if (!is_channel_valid(ch_info)) if (!is_channel_valid(ch_info))
return 0; return 0;
if (extension_chan_offset == IWL_EXT_CHANNEL_OFFSET_NONE) if (extension_chan_offset == IEEE80211_HT_IE_CHA_SEC_ABOVE)
return 0; return !(ch_info->fat_extension_channel &
IEEE80211_CHAN_NO_FAT_ABOVE);
if ((ch_info->fat_extension_channel == extension_chan_offset) || else if (extension_chan_offset == IEEE80211_HT_IE_CHA_SEC_BELOW)
(ch_info->fat_extension_channel == HT_IE_EXT_CHANNEL_MAX)) return !(ch_info->fat_extension_channel &
return 1; IEEE80211_CHAN_NO_FAT_BELOW);
return 0; return 0;
} }
...@@ -579,7 +563,7 @@ u8 iwl_is_fat_tx_allowed(struct iwl_priv *priv, ...@@ -579,7 +563,7 @@ u8 iwl_is_fat_tx_allowed(struct iwl_priv *priv,
if ((!iwl_ht_conf->is_ht) || if ((!iwl_ht_conf->is_ht) ||
(iwl_ht_conf->supported_chan_width != IWL_CHANNEL_WIDTH_40MHZ) || (iwl_ht_conf->supported_chan_width != IWL_CHANNEL_WIDTH_40MHZ) ||
(iwl_ht_conf->extension_chan_offset == IWL_EXT_CHANNEL_OFFSET_NONE)) (iwl_ht_conf->extension_chan_offset == IEEE80211_HT_IE_CHA_SEC_NONE))
return 0; return 0;
if (sta_ht_inf) { if (sta_ht_inf) {
...@@ -619,13 +603,13 @@ void iwl_set_rxon_ht(struct iwl_priv *priv, struct iwl_ht_info *ht_info) ...@@ -619,13 +603,13 @@ void iwl_set_rxon_ht(struct iwl_priv *priv, struct iwl_ht_info *ht_info)
/* Note: control channel is opposite of extension channel */ /* Note: control channel is opposite of extension channel */
switch (ht_info->extension_chan_offset) { switch (ht_info->extension_chan_offset) {
case IWL_EXT_CHANNEL_OFFSET_ABOVE: case IEEE80211_HT_IE_CHA_SEC_ABOVE:
rxon->flags &= ~(RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK); rxon->flags &= ~(RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK);
break; break;
case IWL_EXT_CHANNEL_OFFSET_BELOW: case IEEE80211_HT_IE_CHA_SEC_BELOW:
rxon->flags |= RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK; rxon->flags |= RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK;
break; break;
case IWL_EXT_CHANNEL_OFFSET_NONE: case IEEE80211_HT_IE_CHA_SEC_NONE:
default: default:
rxon->flags &= ~RXON_FLG_CHANNEL_MODE_MIXED_MSK; rxon->flags &= ~RXON_FLG_CHANNEL_MODE_MIXED_MSK;
break; break;
......
...@@ -179,15 +179,6 @@ struct iwl4965_scan_power_info { ...@@ -179,15 +179,6 @@ struct iwl4965_scan_power_info {
s8 requested_power; /* scan pwr (dBm) requested for chnl/rate */ s8 requested_power; /* scan pwr (dBm) requested for chnl/rate */
}; };
/* For fat_extension_channel */
enum {
HT_IE_EXT_CHANNEL_NONE = 0,
HT_IE_EXT_CHANNEL_ABOVE,
HT_IE_EXT_CHANNEL_INVALID,
HT_IE_EXT_CHANNEL_BELOW,
HT_IE_EXT_CHANNEL_MAX
};
/* /*
* One for each channel, holds all channel setup data * One for each channel, holds all channel setup data
* Some of the fields (e.g. eeprom and flags/max_power_avg) are redundant * Some of the fields (e.g. eeprom and flags/max_power_avg) are redundant
...@@ -782,11 +773,6 @@ struct iwl_kw { ...@@ -782,11 +773,6 @@ struct iwl_kw {
#define IWL_OPERATION_MODE_MIXED 2 #define IWL_OPERATION_MODE_MIXED 2
#define IWL_OPERATION_MODE_20MHZ 3 #define IWL_OPERATION_MODE_20MHZ 3
#define IWL_EXT_CHANNEL_OFFSET_NONE 0
#define IWL_EXT_CHANNEL_OFFSET_ABOVE 1
#define IWL_EXT_CHANNEL_OFFSET_RESERVE1 2
#define IWL_EXT_CHANNEL_OFFSET_BELOW 3
#define IWL_TX_CRC_SIZE 4 #define IWL_TX_CRC_SIZE 4
#define IWL_TX_DELIMITER_SIZE 4 #define IWL_TX_DELIMITER_SIZE 4
......
...@@ -470,6 +470,11 @@ int iwl_init_channel_map(struct iwl_priv *priv) ...@@ -470,6 +470,11 @@ int iwl_init_channel_map(struct iwl_priv *priv)
/* Copy the run-time flags so they are there even on /* Copy the run-time flags so they are there even on
* invalid channels */ * invalid channels */
ch_info->flags = eeprom_ch_info[ch].flags; ch_info->flags = eeprom_ch_info[ch].flags;
/* First write that fat is not enabled, and then enable
* one by one */
ch_info->fat_extension_channel =
(IEEE80211_CHAN_NO_FAT_ABOVE |
IEEE80211_CHAN_NO_FAT_BELOW);
if (!(is_channel_valid(ch_info))) { if (!(is_channel_valid(ch_info))) {
IWL_DEBUG_INFO("Ch. %d Flags %x [%sGHz] - " IWL_DEBUG_INFO("Ch. %d Flags %x [%sGHz] - "
...@@ -534,12 +539,14 @@ int iwl_init_channel_map(struct iwl_priv *priv) ...@@ -534,12 +539,14 @@ int iwl_init_channel_map(struct iwl_priv *priv)
for (ch = 0; ch < eeprom_ch_count; ch++) { for (ch = 0; ch < eeprom_ch_count; ch++) {
if ((band == 6) && if ((band == 6) &&
((eeprom_ch_index[ch] == 5) || ((eeprom_ch_index[ch] == 5) ||
(eeprom_ch_index[ch] == 6) || (eeprom_ch_index[ch] == 6) ||
(eeprom_ch_index[ch] == 7))) (eeprom_ch_index[ch] == 7)))
fat_extension_chan = HT_IE_EXT_CHANNEL_MAX; /* both are allowed: above and below */
fat_extension_chan = 0;
else else
fat_extension_chan = HT_IE_EXT_CHANNEL_ABOVE; fat_extension_chan =
IEEE80211_CHAN_NO_FAT_BELOW;
/* Set up driver's info for lower half */ /* Set up driver's info for lower half */
iwl_set_fat_chan_info(priv, ieeeband, iwl_set_fat_chan_info(priv, ieeeband,
...@@ -551,7 +558,7 @@ int iwl_init_channel_map(struct iwl_priv *priv) ...@@ -551,7 +558,7 @@ int iwl_init_channel_map(struct iwl_priv *priv)
iwl_set_fat_chan_info(priv, ieeeband, iwl_set_fat_chan_info(priv, ieeeband,
(eeprom_ch_index[ch] + 4), (eeprom_ch_index[ch] + 4),
&(eeprom_ch_info[ch]), &(eeprom_ch_info[ch]),
HT_IE_EXT_CHANNEL_BELOW); IEEE80211_CHAN_NO_FAT_ABOVE);
} }
} }
......
...@@ -664,9 +664,11 @@ static void iwl4965_ht_conf(struct iwl_priv *priv, ...@@ -664,9 +664,11 @@ static void iwl4965_ht_conf(struct iwl_priv *priv,
iwl_conf->extension_chan_offset = iwl_conf->extension_chan_offset =
ht_bss_conf->bss_cap & IEEE80211_HT_IE_CHA_SEC_OFFSET; ht_bss_conf->bss_cap & IEEE80211_HT_IE_CHA_SEC_OFFSET;
/* If no above or below channel supplied disable FAT channel */ /* If no above or below channel supplied disable FAT channel */
if (iwl_conf->extension_chan_offset != IWL_EXT_CHANNEL_OFFSET_ABOVE && if (iwl_conf->extension_chan_offset != IEEE80211_HT_IE_CHA_SEC_ABOVE &&
iwl_conf->extension_chan_offset != IWL_EXT_CHANNEL_OFFSET_BELOW) iwl_conf->extension_chan_offset != IEEE80211_HT_IE_CHA_SEC_BELOW) {
iwl_conf->extension_chan_offset = IEEE80211_HT_IE_CHA_SEC_NONE;
iwl_conf->supported_chan_width = 0; iwl_conf->supported_chan_width = 0;
}
iwl_conf->tx_mimo_ps_mode = iwl_conf->tx_mimo_ps_mode =
(u8)((ht_conf->cap & IEEE80211_HT_CAP_MIMO_PS) >> 2); (u8)((ht_conf->cap & IEEE80211_HT_CAP_MIMO_PS) >> 2);
......
...@@ -320,6 +320,7 @@ struct ieee80211_ht_addt_info { ...@@ -320,6 +320,7 @@ struct ieee80211_ht_addt_info {
#define IEEE80211_HT_CAP_MCS_TX_UEQM 0x10 #define IEEE80211_HT_CAP_MCS_TX_UEQM 0x10
/* 802.11n HT IE masks */ /* 802.11n HT IE masks */
#define IEEE80211_HT_IE_CHA_SEC_OFFSET 0x03 #define IEEE80211_HT_IE_CHA_SEC_OFFSET 0x03
#define IEEE80211_HT_IE_CHA_SEC_NONE 0x00
#define IEEE80211_HT_IE_CHA_SEC_ABOVE 0x01 #define IEEE80211_HT_IE_CHA_SEC_ABOVE 0x01
#define IEEE80211_HT_IE_CHA_SEC_BELOW 0x03 #define IEEE80211_HT_IE_CHA_SEC_BELOW 0x03
#define IEEE80211_HT_IE_CHA_WIDTH 0x04 #define IEEE80211_HT_IE_CHA_WIDTH 0x04
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment