2009/3/31 Fabio Rossi <ross...@inwind.it>:
> When the EEPROM contains weird values for the power levels we have to
> fix the interpolation process.
>
> Signed-off-by: Fabio Rossi <ross...@inwind.it>
> ---
> 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 <mickfl...@gmail.com>

-- 
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to