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