aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorStanislaw Gruszka <sgruszka@redhat.com>2011-04-28 05:12:10 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-04-29 15:36:13 -0400
commit75d80cadf4ceb238e55487ff6d3f9a0706e1028d (patch)
tree0f29cf8217df99e4dd4ca44a1f7c4615f862de88 /drivers
parent44368796b87d321e6ea84295a23b2e8eb415d300 (diff)
iwlagn: fix tx power initialization
Since commit f844a709a7d8f8be61a571afc31dfaca9e779621 Author: Stanislaw Gruszka <sgruszka@redhat.com> Date: Fri Jan 28 16:47:44 2011 +0100 iwlwifi: do not set tx power when channel is changing we set device tx power during initialization to priv->tx_power_next, which itself is initialized to minimum power. That changed default behaviour of driver. Previously we initialized device to transmit at maximum available power by default. Patch change again to previous behaviour and cleanup tx power initialization. Fortunately this is not critical fix, as mac80211 layer setup tx power lately to 14dB, hence device does not operate at minimal transmit power all the time. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c9
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom.c7
3 files changed, 7 insertions, 15 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index a4f1009cb137..a4ec524f4655 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -3444,12 +3444,6 @@ static int iwl_init_drv(struct iwl_priv *priv)
3444 priv->dynamic_frag_thresh = BT_FRAG_THRESHOLD_DEF; 3444 priv->dynamic_frag_thresh = BT_FRAG_THRESHOLD_DEF;
3445 } 3445 }
3446 3446
3447 /* Set the tx_power_user_lmt to the lowest power level
3448 * this value will get overwritten by channel max power avg
3449 * from eeprom */
3450 priv->tx_power_user_lmt = IWLAGN_TX_POWER_TARGET_POWER_MIN;
3451 priv->tx_power_next = IWLAGN_TX_POWER_TARGET_POWER_MIN;
3452
3453 ret = iwl_init_channel_map(priv); 3447 ret = iwl_init_channel_map(priv);
3454 if (ret) { 3448 if (ret) {
3455 IWL_ERR(priv, "initializing regulatory failed: %d\n", ret); 3449 IWL_ERR(priv, "initializing regulatory failed: %d\n", ret);
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 46d69657407c..af72fd51ea74 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -135,6 +135,7 @@ int iwlcore_init_geos(struct iwl_priv *priv)
135 struct ieee80211_channel *geo_ch; 135 struct ieee80211_channel *geo_ch;
136 struct ieee80211_rate *rates; 136 struct ieee80211_rate *rates;
137 int i = 0; 137 int i = 0;
138 s8 max_tx_power = IWLAGN_TX_POWER_TARGET_POWER_MIN;
138 139
139 if (priv->bands[IEEE80211_BAND_2GHZ].n_bitrates || 140 if (priv->bands[IEEE80211_BAND_2GHZ].n_bitrates ||
140 priv->bands[IEEE80211_BAND_5GHZ].n_bitrates) { 141 priv->bands[IEEE80211_BAND_5GHZ].n_bitrates) {
@@ -208,8 +209,8 @@ int iwlcore_init_geos(struct iwl_priv *priv)
208 209
209 geo_ch->flags |= ch->ht40_extension_channel; 210 geo_ch->flags |= ch->ht40_extension_channel;
210 211
211 if (ch->max_power_avg > priv->tx_power_device_lmt) 212 if (ch->max_power_avg > max_tx_power)
212 priv->tx_power_device_lmt = ch->max_power_avg; 213 max_tx_power = ch->max_power_avg;
213 } else { 214 } else {
214 geo_ch->flags |= IEEE80211_CHAN_DISABLED; 215 geo_ch->flags |= IEEE80211_CHAN_DISABLED;
215 } 216 }
@@ -222,6 +223,10 @@ int iwlcore_init_geos(struct iwl_priv *priv)
222 geo_ch->flags); 223 geo_ch->flags);
223 } 224 }
224 225
226 priv->tx_power_device_lmt = max_tx_power;
227 priv->tx_power_user_lmt = max_tx_power;
228 priv->tx_power_next = max_tx_power;
229
225 if ((priv->bands[IEEE80211_BAND_5GHZ].n_channels == 0) && 230 if ((priv->bands[IEEE80211_BAND_5GHZ].n_channels == 0) &&
226 priv->cfg->sku & IWL_SKU_A) { 231 priv->cfg->sku & IWL_SKU_A) {
227 IWL_INFO(priv, "Incorrectly detected BG card as ABG. " 232 IWL_INFO(priv, "Incorrectly detected BG card as ABG. "
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.c b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
index 402733638f50..1e1a2d8df1da 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.c
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
@@ -711,13 +711,6 @@ int iwl_init_channel_map(struct iwl_priv *priv)
711 flags & EEPROM_CHANNEL_RADAR)) 711 flags & EEPROM_CHANNEL_RADAR))
712 ? "" : "not "); 712 ? "" : "not ");
713 713
714 /* Set the tx_power_user_lmt to the highest power
715 * supported by any channel */
716 if (eeprom_ch_info[ch].max_power_avg >
717 priv->tx_power_user_lmt)
718 priv->tx_power_user_lmt =
719 eeprom_ch_info[ch].max_power_avg;
720
721 ch_info++; 714 ch_info++;
722 } 715 }
723 } 716 }