···7474/* RSSI to dBm */7575#define IWL39_RSSI_OFFSET 9576767777-#define IWL_DEFAULT_TX_POWER 0x0F7878-7977/*8078 * EEPROM related constants, enums, and structures.8179 */
-3
drivers/net/wireless/iwlegacy/iwl-4965-hw.h
···804804805805#define IWL4965_DEFAULT_TX_RETRY 15806806807807-/* Limit range of txpower output target to be between these values */808808-#define IWL4965_TX_POWER_TARGET_POWER_MIN (0) /* 0 dBm: 1 milliwatt */809809-810807/* EEPROM */811808#define IWL4965_FIRST_AMPDU_QUEUE 10812809
+11-6
drivers/net/wireless/iwlegacy/iwl-core.c
···160160 struct ieee80211_channel *geo_ch;161161 struct ieee80211_rate *rates;162162 int i = 0;163163+ s8 max_tx_power = 0;163164164165 if (priv->bands[IEEE80211_BAND_2GHZ].n_bitrates ||165166 priv->bands[IEEE80211_BAND_5GHZ].n_bitrates) {···236235237236 geo_ch->flags |= ch->ht40_extension_channel;238237239239- if (ch->max_power_avg > priv->tx_power_device_lmt)240240- priv->tx_power_device_lmt = ch->max_power_avg;238238+ if (ch->max_power_avg > max_tx_power)239239+ max_tx_power = ch->max_power_avg;241240 } else {242241 geo_ch->flags |= IEEE80211_CHAN_DISABLED;243242 }···249248 "restricted" : "valid",250249 geo_ch->flags);251250 }251251+252252+ priv->tx_power_device_lmt = max_tx_power;253253+ priv->tx_power_user_lmt = max_tx_power;254254+ priv->tx_power_next = max_tx_power;252255253256 if ((priv->bands[IEEE80211_BAND_5GHZ].n_channels == 0) &&254257 priv->cfg->sku & IWL_SKU_A) {···11291124 if (!priv->cfg->ops->lib->send_tx_power)11301125 return -EOPNOTSUPP;1131112611321132- if (tx_power < IWL4965_TX_POWER_TARGET_POWER_MIN) {11271127+ /* 0 dBm mean 1 milliwatt */11281128+ if (tx_power < 0) {11331129 IWL_WARN(priv,11341134- "Requested user TXPOWER %d below lower limit %d.\n",11351135- tx_power,11361136- IWL4965_TX_POWER_TARGET_POWER_MIN);11301130+ "Requested user TXPOWER %d below 1 mW.\n",11311131+ tx_power);11371132 return -EINVAL;11381133 }11391134
-7
drivers/net/wireless/iwlegacy/iwl-eeprom.c
···471471 flags & EEPROM_CHANNEL_RADAR))472472 ? "" : "not ");473473474474- /* Set the tx_power_user_lmt to the highest power475475- * supported by any channel */476476- if (eeprom_ch_info[ch].max_power_avg >477477- priv->tx_power_user_lmt)478478- priv->tx_power_user_lmt =479479- eeprom_ch_info[ch].max_power_avg;480480-481474 ch_info++;482475 }483476 }
···3140314031413141 iwl_legacy_init_scan_params(priv);3142314231433143- /* Set the tx_power_user_lmt to the lowest power level31443144- * this value will get overwritten by channel max power avg31453145- * from eeprom */31463146- priv->tx_power_user_lmt = IWL4965_TX_POWER_TARGET_POWER_MIN;31473147- priv->tx_power_next = IWL4965_TX_POWER_TARGET_POWER_MIN;31483148-31493143 ret = iwl_legacy_init_channel_map(priv);31503144 if (ret) {31513145 IWL_ERR(priv, "initializing regulatory failed: %d\n", ret);