lkml.org 
[lkml]   [2012]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 60/61] iwlwifi: fix TX power antenna access
    3.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Johannes Berg <johannes.berg@intel.com>

    commit a5fdde28b4f5fb756032e7ad2c6fcdcffde20958 upstream.

    Since my commit
    iwlwifi: use valid TX/RX antenna from hw_params
    the config values are pure overrides, not the
    real values for all hardware. Therefore, the
    EEPROM TX power reading code checks the wrong
    values, it should check the hw_params values.

    Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


    ---
    drivers/net/wireless/iwlwifi/iwl-eeprom.c | 18 +++++++++---------
    1 file changed, 9 insertions(+), 9 deletions(-)

    --- a/drivers/net/wireless/iwlwifi/iwl-eeprom.c
    +++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
    @@ -513,28 +513,28 @@ static int iwl_find_otp_image(struct iwl
    * iwl_get_max_txpower_avg - get the highest tx power from all chains.
    * find the highest tx power from all chains for the channel
    */
    -static s8 iwl_get_max_txpower_avg(const struct iwl_cfg *cfg,
    +static s8 iwl_get_max_txpower_avg(struct iwl_priv *priv,
    struct iwl_eeprom_enhanced_txpwr *enhanced_txpower,
    int element, s8 *max_txpower_in_half_dbm)
    {
    s8 max_txpower_avg = 0; /* (dBm) */

    /* Take the highest tx power from any valid chains */
    - if ((cfg->valid_tx_ant & ANT_A) &&
    + if ((hw_params(priv).valid_tx_ant & ANT_A) &&
    (enhanced_txpower[element].chain_a_max > max_txpower_avg))
    max_txpower_avg = enhanced_txpower[element].chain_a_max;
    - if ((cfg->valid_tx_ant & ANT_B) &&
    + if ((hw_params(priv).valid_tx_ant & ANT_B) &&
    (enhanced_txpower[element].chain_b_max > max_txpower_avg))
    max_txpower_avg = enhanced_txpower[element].chain_b_max;
    - if ((cfg->valid_tx_ant & ANT_C) &&
    + if ((hw_params(priv).valid_tx_ant & ANT_C) &&
    (enhanced_txpower[element].chain_c_max > max_txpower_avg))
    max_txpower_avg = enhanced_txpower[element].chain_c_max;
    - if (((cfg->valid_tx_ant == ANT_AB) |
    - (cfg->valid_tx_ant == ANT_BC) |
    - (cfg->valid_tx_ant == ANT_AC)) &&
    + if (((hw_params(priv).valid_tx_ant == ANT_AB) |
    + (hw_params(priv).valid_tx_ant == ANT_BC) |
    + (hw_params(priv).valid_tx_ant == ANT_AC)) &&
    (enhanced_txpower[element].mimo2_max > max_txpower_avg))
    max_txpower_avg = enhanced_txpower[element].mimo2_max;
    - if ((cfg->valid_tx_ant == ANT_ABC) &&
    + if ((hw_params(priv).valid_tx_ant == ANT_ABC) &&
    (enhanced_txpower[element].mimo3_max > max_txpower_avg))
    max_txpower_avg = enhanced_txpower[element].mimo3_max;

    @@ -637,7 +637,7 @@ static void iwl_eeprom_enhanced_txpower(
    ((txp->delta_20_in_40 & 0xf0) >> 4),
    (txp->delta_20_in_40 & 0x0f));

    - max_txp_avg = iwl_get_max_txpower_avg(cfg(priv), txp_array, idx,
    + max_txp_avg = iwl_get_max_txpower_avg(priv, txp_array, idx,
    &max_txp_avg_halfdbm);

    /*



    \
     
     \ /
      Last update: 2012-06-20 21:21    [W:0.024 / U:59.224 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site