Commit f1cf2dbd authored by Lukáš Turek's avatar Lukáš Turek Committed by John W. Linville

ath5k: Fix I/Q calibration

The sign of correction coefficients was lost in the calculations, which
caused high packetloss in 802.11a mode after the results were applied.
Fixed by removing unneccesary and broken AND with a bit mask.
Signed-off-by: default avatarLukas Turek <8an@praha12.net>
Acked-by: default avatarNick Kossifidis <mickflemm@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 98e3ac99
...@@ -1399,7 +1399,7 @@ static int ath5k_hw_rf511x_calibrate(struct ath5k_hw *ah, ...@@ -1399,7 +1399,7 @@ static int ath5k_hw_rf511x_calibrate(struct ath5k_hw *ah,
if (i_coffd == 0 || q_coffd == 0) if (i_coffd == 0 || q_coffd == 0)
goto done; goto done;
i_coff = ((-iq_corr) / i_coffd) & 0x3f; i_coff = ((-iq_corr) / i_coffd);
/* Boundary check */ /* Boundary check */
if (i_coff > 31) if (i_coff > 31)
...@@ -1407,7 +1407,7 @@ static int ath5k_hw_rf511x_calibrate(struct ath5k_hw *ah, ...@@ -1407,7 +1407,7 @@ static int ath5k_hw_rf511x_calibrate(struct ath5k_hw *ah,
if (i_coff < -32) if (i_coff < -32)
i_coff = -32; i_coff = -32;
q_coff = (((s32)i_pwr / q_coffd) - 128) & 0x1f; q_coff = (((s32)i_pwr / q_coffd) - 128);
/* Boundary check */ /* Boundary check */
if (q_coff > 15) if (q_coff > 15)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment