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