From a71d342cb18ad970aa5f810aae966a43b7ef0d5a Mon Sep 17 00:00:00 2001 From: nbd Date: Tue, 26 Jul 2011 20:53:40 +0000 Subject: ath9k: rework tx power handling - display the correct *current* tx power, and also fix tx power limits with ATH_USER_REGD set git-svn-id: svn://svn.openwrt.org/openwrt/trunk@27788 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/592-ath9k_remove_tx_indexoffset.patch | 125 +++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 package/mac80211/patches/592-ath9k_remove_tx_indexoffset.patch (limited to 'package/mac80211/patches/592-ath9k_remove_tx_indexoffset.patch') diff --git a/package/mac80211/patches/592-ath9k_remove_tx_indexoffset.patch b/package/mac80211/patches/592-ath9k_remove_tx_indexoffset.patch new file mode 100644 index 000000000..c8e2640ee --- /dev/null +++ b/package/mac80211/patches/592-ath9k_remove_tx_indexoffset.patch @@ -0,0 +1,125 @@ +--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c +@@ -247,8 +247,7 @@ static u32 ath9k_hw_4k_get_eeprom(struct + } + + static void ath9k_hw_set_4k_power_cal_table(struct ath_hw *ah, +- struct ath9k_channel *chan, +- int16_t *pTxPowerIndexOffset) ++ struct ath9k_channel *chan) + { + struct ath_common *common = ath9k_hw_common(ah); + struct ar5416_eeprom_4k *pEepData = &ah->eeprom.map4k; +@@ -358,8 +357,6 @@ static void ath9k_hw_set_4k_power_cal_ta + REGWRITE_BUFFER_FLUSH(ah); + } + } +- +- *pTxPowerIndexOffset = 0; + } + + static void ath9k_hw_set_4k_power_per_rate_table(struct ath_hw *ah, +@@ -582,7 +579,6 @@ static void ath9k_hw_4k_set_txpower(stru + struct ar5416_eeprom_4k *pEepData = &ah->eeprom.map4k; + struct modal_eep_4k_header *pModal = &pEepData->modalHeader; + int16_t ratesArray[Ar5416RateSize]; +- int16_t txPowerIndexOffset = 0; + u8 ht40PowerIncForPdadc = 2; + int i; + +@@ -599,11 +595,10 @@ static void ath9k_hw_4k_set_txpower(stru + twiceMaxRegulatoryPower, + powerLimit); + +- ath9k_hw_set_4k_power_cal_table(ah, chan, &txPowerIndexOffset); ++ ath9k_hw_set_4k_power_cal_table(ah, chan); + + regulatory->max_power_level = 0; + for (i = 0; i < ARRAY_SIZE(ratesArray); i++) { +- ratesArray[i] = (int16_t)(txPowerIndexOffset + ratesArray[i]); + if (ratesArray[i] > MAX_RATE_POWER) + ratesArray[i] = MAX_RATE_POWER; + +--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c +@@ -306,8 +306,7 @@ static void ar9287_eeprom_olpc_set_pdadc + } + + static void ath9k_hw_set_ar9287_power_cal_table(struct ath_hw *ah, +- struct ath9k_channel *chan, +- int16_t *pTxPowerIndexOffset) ++ struct ath9k_channel *chan) + { + struct cal_data_per_freq_ar9287 *pRawDataset; + struct cal_data_op_loop_ar9287 *pRawDatasetOpenLoop; +@@ -446,8 +445,6 @@ static void ath9k_hw_set_ar9287_power_ca + REGWRITE_BUFFER_FLUSH(ah); + } + } +- +- *pTxPowerIndexOffset = 0; + } + + static void ath9k_hw_set_ar9287_power_per_rate_table(struct ath_hw *ah, +@@ -722,7 +719,6 @@ static void ath9k_hw_ar9287_set_txpower( + struct ar9287_eeprom *pEepData = &ah->eeprom.map9287; + struct modal_eep_ar9287_header *pModal = &pEepData->modalHeader; + int16_t ratesArray[Ar5416RateSize]; +- int16_t txPowerIndexOffset = 0; + u8 ht40PowerIncForPdadc = 2; + int i; + +@@ -738,11 +734,10 @@ static void ath9k_hw_ar9287_set_txpower( + twiceMaxRegulatoryPower, + powerLimit); + +- ath9k_hw_set_ar9287_power_cal_table(ah, chan, &txPowerIndexOffset); ++ ath9k_hw_set_ar9287_power_cal_table(ah, chan); + + regulatory->max_power_level = 0; + for (i = 0; i < ARRAY_SIZE(ratesArray); i++) { +- ratesArray[i] = (int16_t)(txPowerIndexOffset + ratesArray[i]); + if (ratesArray[i] > MAX_RATE_POWER) + ratesArray[i] = MAX_RATE_POWER; + +--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c +@@ -692,8 +692,7 @@ static void ath9k_adjust_pdadc_values(st + } + + static void ath9k_hw_set_def_power_cal_table(struct ath_hw *ah, +- struct ath9k_channel *chan, +- int16_t *pTxPowerIndexOffset) ++ struct ath9k_channel *chan) + { + #define SM_PD_GAIN(x) SM(0x38, AR_PHY_TPCRG5_PD_GAIN_BOUNDARY_##x) + #define SM_PDGAIN_B(x, y) \ +@@ -857,7 +856,6 @@ static void ath9k_hw_set_def_power_cal_t + } + } + +- *pTxPowerIndexOffset = 0; + #undef SM_PD_GAIN + #undef SM_PDGAIN_B + } +@@ -1145,7 +1143,6 @@ static void ath9k_hw_def_set_txpower(str + struct modal_eep_header *pModal = + &(pEepData->modalHeader[IS_CHAN_2GHZ(chan)]); + int16_t ratesArray[Ar5416RateSize]; +- int16_t txPowerIndexOffset = 0; + u8 ht40PowerIncForPdadc = 2; + int i, cck_ofdm_delta = 0; + +@@ -1162,11 +1159,10 @@ static void ath9k_hw_def_set_txpower(str + twiceMaxRegulatoryPower, + powerLimit); + +- ath9k_hw_set_def_power_cal_table(ah, chan, &txPowerIndexOffset); ++ ath9k_hw_set_def_power_cal_table(ah, chan); + + regulatory->max_power_level = 0; + for (i = 0; i < ARRAY_SIZE(ratesArray); i++) { +- ratesArray[i] = (int16_t)(txPowerIndexOffset + ratesArray[i]); + if (ratesArray[i] > MAX_RATE_POWER) + ratesArray[i] = MAX_RATE_POWER; + if (ratesArray[i] > regulatory->max_power_level) -- cgit v1.2.3