ath5k: Fix I/Q calibration
authorLukáš Turek <8an@praha12.net>
Thu, 19 Nov 2009 22:02:02 +0000 (23:02 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 23 Nov 2009 22:05:29 +0000 (17:05 -0500)
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: Lukas Turek <8an@praha12.net>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath5k/phy.c

index 721ec5ee381dbc79b9d969539ed6aa91406d23ad..bbfdcd5e7cb1c452fcdfebb875dd0c5de5578267 100644 (file)
@@ -1399,7 +1399,7 @@ static int ath5k_hw_rf511x_calibrate(struct ath5k_hw *ah,
        if (i_coffd == 0 || q_coffd == 0)
                goto done;
 
-       i_coff = ((-iq_corr) / i_coffd) & 0x3f;
+       i_coff = ((-iq_corr) / i_coffd);
 
        /* Boundary check */
        if (i_coff > 31)
@@ -1407,7 +1407,7 @@ static int ath5k_hw_rf511x_calibrate(struct ath5k_hw *ah,
        if (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 */
        if (q_coff > 15)