Commit 75d80cad authored by Stanislaw Gruszka's avatar Stanislaw Gruszka Committed by John W. Linville

iwlagn: fix tx power initialization

Since

commit f844a709
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: default avatarStanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 44368796
...@@ -3444,12 +3444,6 @@ static int iwl_init_drv(struct iwl_priv *priv) ...@@ -3444,12 +3444,6 @@ static int iwl_init_drv(struct iwl_priv *priv)
priv->dynamic_frag_thresh = BT_FRAG_THRESHOLD_DEF; priv->dynamic_frag_thresh = BT_FRAG_THRESHOLD_DEF;
} }
/* Set the tx_power_user_lmt to the lowest power level
* this value will get overwritten by channel max power avg
* from eeprom */
priv->tx_power_user_lmt = IWLAGN_TX_POWER_TARGET_POWER_MIN;
priv->tx_power_next = IWLAGN_TX_POWER_TARGET_POWER_MIN;
ret = iwl_init_channel_map(priv); ret = iwl_init_channel_map(priv);
if (ret) { if (ret) {
IWL_ERR(priv, "initializing regulatory failed: %d\n", ret); IWL_ERR(priv, "initializing regulatory failed: %d\n", ret);
......
...@@ -135,6 +135,7 @@ int iwlcore_init_geos(struct iwl_priv *priv) ...@@ -135,6 +135,7 @@ int iwlcore_init_geos(struct iwl_priv *priv)
struct ieee80211_channel *geo_ch; struct ieee80211_channel *geo_ch;
struct ieee80211_rate *rates; struct ieee80211_rate *rates;
int i = 0; int i = 0;
s8 max_tx_power = IWLAGN_TX_POWER_TARGET_POWER_MIN;
if (priv->bands[IEEE80211_BAND_2GHZ].n_bitrates || if (priv->bands[IEEE80211_BAND_2GHZ].n_bitrates ||
priv->bands[IEEE80211_BAND_5GHZ].n_bitrates) { priv->bands[IEEE80211_BAND_5GHZ].n_bitrates) {
...@@ -208,8 +209,8 @@ int iwlcore_init_geos(struct iwl_priv *priv) ...@@ -208,8 +209,8 @@ int iwlcore_init_geos(struct iwl_priv *priv)
geo_ch->flags |= ch->ht40_extension_channel; geo_ch->flags |= ch->ht40_extension_channel;
if (ch->max_power_avg > priv->tx_power_device_lmt) if (ch->max_power_avg > max_tx_power)
priv->tx_power_device_lmt = ch->max_power_avg; max_tx_power = ch->max_power_avg;
} else { } else {
geo_ch->flags |= IEEE80211_CHAN_DISABLED; geo_ch->flags |= IEEE80211_CHAN_DISABLED;
} }
...@@ -222,6 +223,10 @@ int iwlcore_init_geos(struct iwl_priv *priv) ...@@ -222,6 +223,10 @@ int iwlcore_init_geos(struct iwl_priv *priv)
geo_ch->flags); geo_ch->flags);
} }
priv->tx_power_device_lmt = max_tx_power;
priv->tx_power_user_lmt = max_tx_power;
priv->tx_power_next = max_tx_power;
if ((priv->bands[IEEE80211_BAND_5GHZ].n_channels == 0) && if ((priv->bands[IEEE80211_BAND_5GHZ].n_channels == 0) &&
priv->cfg->sku & IWL_SKU_A) { priv->cfg->sku & IWL_SKU_A) {
IWL_INFO(priv, "Incorrectly detected BG card as ABG. " IWL_INFO(priv, "Incorrectly detected BG card as ABG. "
......
...@@ -711,13 +711,6 @@ int iwl_init_channel_map(struct iwl_priv *priv) ...@@ -711,13 +711,6 @@ int iwl_init_channel_map(struct iwl_priv *priv)
flags & EEPROM_CHANNEL_RADAR)) flags & EEPROM_CHANNEL_RADAR))
? "" : "not "); ? "" : "not ");
/* Set the tx_power_user_lmt to the highest power
* supported by any channel */
if (eeprom_ch_info[ch].max_power_avg >
priv->tx_power_user_lmt)
priv->tx_power_user_lmt =
eeprom_ch_info[ch].max_power_avg;
ch_info++; ch_info++;
} }
} }
......
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