| Index: chromeos/compat-wireless/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
|
| diff --git a/chromeos/compat-wireless/drivers/net/wireless/ath/ath9k/ar9003_paprd.c b/chromeos/compat-wireless/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
|
| index 7c38229ba670a28a624ab521a02820eae581c10a..716db414c258f254263a47238f45aa9fd6c2d813 100644
|
| --- a/chromeos/compat-wireless/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
|
| +++ b/chromeos/compat-wireless/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
|
| @@ -347,6 +347,10 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
|
| (((Y[6] - Y[3]) * 1 << scale_factor) +
|
| (x_est[6] - x_est[3])) / (x_est[6] - x_est[3]);
|
|
|
| + /* prevent division by zero */
|
| + if (G_fxp == 0)
|
| + return false;
|
| +
|
| Y_intercept =
|
| (G_fxp * (x_est[0] - x_est[3]) +
|
| (1 << scale_factor)) / (1 << scale_factor) + Y[3];
|
| @@ -356,14 +360,12 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
|
|
|
| for (i = 0; i <= 3; i++) {
|
| y_est[i] = i * 32;
|
| -
|
| - /* prevent division by zero */
|
| - if (G_fxp == 0)
|
| - return false;
|
| -
|
| x_est[i] = ((y_est[i] * 1 << scale_factor) + G_fxp) / G_fxp;
|
| }
|
|
|
| + if (y_est[max_index] == 0)
|
| + return false;
|
| +
|
| x_est_fxp1_nonlin =
|
| x_est[max_index] - ((1 << scale_factor) * y_est[max_index] +
|
| G_fxp) / G_fxp;
|
| @@ -457,6 +459,8 @@ static bool create_pa_curve(u32 *data_L, u32 *data_U, u32 *pa_table, u16 *gain)
|
|
|
| Q_scale_B = find_proper_scale(find_expn(abs(scale_B)), 10);
|
| scale_B = scale_B / (1 << Q_scale_B);
|
| + if (scale_B == 0)
|
| + return false;
|
| Q_beta = find_proper_scale(find_expn(abs(beta_raw)), 10);
|
| Q_alpha = find_proper_scale(find_expn(abs(alpha_raw)), 10);
|
| beta_raw = beta_raw / (1 << Q_beta);
|
|
|