Search Linux Wireless

Re: [PATCH] ath5k: fix interpolation with equal power levels

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

 



2009/3/31 Fabio Rossi <rossi.f@xxxxxxxxx>:> When the EEPROM contains weird values for the power levels we have to> fix the interpolation process.>> Signed-off-by: Fabio Rossi <rossi.f@xxxxxxxxx>> ---> diff --git a/drivers/net/wireless/ath5k/phy.c b/drivers/net/wireless/ath5k/phy.c> index 9e2faae..0e3e0e0 100644> --- a/drivers/net/wireless/ath5k/phy.c> +++ b/drivers/net/wireless/ath5k/phy.c> @@ -1487,28 +1487,35 @@ ath5k_get_linear_pcdac_min(const u8 *stepL, const u8 *stepR,>  {>        s8 tmp;>        s16 min_pwrL, min_pwrR;> -       s16 pwr_i = pwrL[0];> -> -       do {> -               pwr_i--;> -               tmp = (s8) ath5k_get_interpolated_value(pwr_i,> -                                               pwrL[0], pwrL[1],> -                                               stepL[0], stepL[1]);> -> -       } while (tmp > 1);> -> -       min_pwrL = pwr_i;> -> -       pwr_i = pwrR[0];> -       do {> -               pwr_i--;> -               tmp = (s8) ath5k_get_interpolated_value(pwr_i,> -                                               pwrR[0], pwrR[1],> -                                               stepR[0], stepR[1]);> -> -       } while (tmp > 1);> +       s16 pwr_i;> +> +       if (pwrL[0] == pwrL[1])> +               min_pwrL = pwrL[0];> +       else {> +               pwr_i = pwrL[0];> +               do {> +                       pwr_i--;> +                       tmp = (s8) ath5k_get_interpolated_value(pwr_i,> +                                                       pwrL[0], pwrL[1],> +                                                       stepL[0], stepL[1]);> +               } while (tmp > 1);> +> +               min_pwrL = pwr_i;> +       }>> -       min_pwrR = pwr_i;> +       if (pwrR[0] == pwrR[1])> +               min_pwrR = pwrR[0];> +       else {> +               pwr_i = pwrR[0];> +               do {> +                       pwr_i--;> +                       tmp = (s8) ath5k_get_interpolated_value(pwr_i,> +                                                       pwrR[0], pwrR[1],> +                                                       stepR[0], stepR[1]);> +               } while (tmp > 1);> +> +               min_pwrR = pwr_i;> +       }>>        /* Keep the right boundary so that it works for both curves */>        return max(min_pwrL, min_pwrR);>

Acked-by: Nick Kossifidis <mickflemm@xxxxxxxxx>
-- GPG ID: 0xD21DB2DBAs you read this post global entropy rises. Have Fun ;-)Nick��.n��������+%������w��{.n�����{���zW����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux