Search Linux Wireless

[PATCH 0/2] ath5k: fixing broken power gain calibration at 5GHz and txpower handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch series fix a wrong power gain calibration in ath5k for
entire 5GHz band and enables consistent usage of tx_power specified by
the user.

(1)
Function ath5k_eeprom_read_target_rate_pwr_info() read 10 lines of
rate_pcal_info[i].target_power which worngly produces e.g. from 
Winstron CM9:
[   38.988000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[0].freq = 4920, rate_pcal_info[0].target_power_6to24 = 36, rate_pcal_info[0].target_power_54 = 24
[   39.004000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[1].freq = 5040, rate_pcal_info[1].target_power_6to24 = 36, rate_pcal_info[1].target_power_54 = 24
[   39.020000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[2].freq = 5170, rate_pcal_info[2].target_power_6to24 = 36, rate_pcal_info[2].target_power_54 = 26
[   39.040000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[3].freq = 5240, rate_pcal_info[3].target_power_6to24 = 38, rate_pcal_info[3].target_power_54 = 26
[   39.056000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[4].freq = 5320, rate_pcal_info[4].target_power_6to24 = 38, rate_pcal_info[4].target_power_54 = 26
[   39.076000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[5].freq = 5500, rate_pcal_info[5].target_power_6to24 = 38, rate_pcal_info[5].target_power_54 = 26
[   39.092000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[6].freq = 5700, rate_pcal_info[6].target_power_6to24 = 36, rate_pcal_info[6].target_power_54 = 26
[   39.112000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[7].freq = 5825, rate_pcal_info[7].target_power_6to24 = 34, rate_pcal_info[7].target_power_54 = 24
[   39.128000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[8].freq = 5360, rate_pcal_info[8].target_power_6to24 = 39, rate_pcal_info[8].target_power_54 = 39
[   39.144000] [ath5k_eeprom_read_target_rate_pwr_info] rate_pcal_info[9].freq = 5720, rate_pcal_info[9].target_power_6to24 = 38, rate_pcal_info[9].target_power_54 = 38

Beside that both last 2 lines hold invalid power gain values the last
line is responsible that subsequent interpolation functions apply
full power gain to all rates at all frequencies greater
rate_pcal_info[max].freq, i.e. > 5720 MHz. This leads to spectral
distortion when then global tx_power is higher than the expected
rate_pcal_info[xy].target_power_54 and therfore gives rates above
24MBit a very poor performance in therms of throughput. The first
patch reduces the eeprom calibration reads to 8. A validation
against madwifi showed 8x eeprom reads at 5GHz as well.

(2)
Furthermore the tx_power specified by the user is not respected in
cases where function phy_init() got called: tx_power is always
set to ah->ah_txpower.txp_cur_pwr which is never updated with the
txpower value specified by the user instead it equales max chan power
and is even incremented. So this wrong behavior amplifies the
occurrence of the performance problems coming from the wrong
calibration in cases the user set a low power. The second patch
fixes this by properly introduce and respect user tx_power.

Greetings Thomas

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux