ath5k: Reimplement clock rate to usec conversion
The original code was correct in 802.11a mode only, 802.11b/g uses different clock rates. The new code uses values taken from FreeBSD HAL and should be correct for all modes including turbo modes. The former rate calculation was used by slope coefficient calculation function ath5k_hw_write_ofdm_timings. However, this function requires the 802.11a values even in 802.11g mode. Thus the use of ath5k_hw_htoclock was replaced by hardcoded values. Possibly the slope coefficient calculation is not related to clock rate at all. Signed-off-by: Lukas Turek <8an@praha12.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
e1aa369ec8
commit
3578e6ebb3
@@ -60,12 +60,11 @@ static inline int ath5k_hw_write_ofdm_timings(struct ath5k_hw *ah,
|
||||
!(channel->hw_value & CHANNEL_OFDM));
|
||||
|
||||
/* Get coefficient
|
||||
* ALGO: coef = (5 * clock * carrier_freq) / 2)
|
||||
* ALGO: coef = (5 * clock / carrier_freq) / 2
|
||||
* we scale coef by shifting clock value by 24 for
|
||||
* better precision since we use integers */
|
||||
/* TODO: Half/quarter rate */
|
||||
clock = ath5k_hw_htoclock(1, channel->hw_value & CHANNEL_TURBO);
|
||||
|
||||
clock = (channel->hw_value & CHANNEL_TURBO) ? 80 : 40;
|
||||
coef_scaled = ((5 * (clock << 24)) / 2) / channel->center_freq;
|
||||
|
||||
/* Get exponent
|
||||
|
Reference in New Issue
Block a user