aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-calib.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-calib.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-calib.c74
1 files changed, 37 insertions, 37 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-calib.c b/drivers/net/wireless/iwlwifi/iwl-calib.c
index 8e5e6663be35..d06c57764e11 100644
--- a/drivers/net/wireless/iwlwifi/iwl-calib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-calib.c
@@ -202,7 +202,7 @@ static int iwl_sens_energy_cck(struct iwl_priv *priv,
202 val = data->nrg_silence_rssi[i]; 202 val = data->nrg_silence_rssi[i];
203 silence_ref = max(silence_ref, val); 203 silence_ref = max(silence_ref, val);
204 } 204 }
205 IWL_DEBUG_CALIB("silence a %u, b %u, c %u, 20-bcn max %u\n", 205 IWL_DEBUG_CALIB(priv, "silence a %u, b %u, c %u, 20-bcn max %u\n",
206 silence_rssi_a, silence_rssi_b, silence_rssi_c, 206 silence_rssi_a, silence_rssi_b, silence_rssi_c,
207 silence_ref); 207 silence_ref);
208 208
@@ -226,7 +226,7 @@ static int iwl_sens_energy_cck(struct iwl_priv *priv,
226 max_nrg_cck = (u32) max(max_nrg_cck, (data->nrg_value[i])); 226 max_nrg_cck = (u32) max(max_nrg_cck, (data->nrg_value[i]));
227 max_nrg_cck += 6; 227 max_nrg_cck += 6;
228 228
229 IWL_DEBUG_CALIB("rx energy a %u, b %u, c %u, 10-bcn max/min %u\n", 229 IWL_DEBUG_CALIB(priv, "rx energy a %u, b %u, c %u, 10-bcn max/min %u\n",
230 rx_info->beacon_energy_a, rx_info->beacon_energy_b, 230 rx_info->beacon_energy_a, rx_info->beacon_energy_b,
231 rx_info->beacon_energy_c, max_nrg_cck - 6); 231 rx_info->beacon_energy_c, max_nrg_cck - 6);
232 232
@@ -236,15 +236,15 @@ static int iwl_sens_energy_cck(struct iwl_priv *priv,
236 data->num_in_cck_no_fa++; 236 data->num_in_cck_no_fa++;
237 else 237 else
238 data->num_in_cck_no_fa = 0; 238 data->num_in_cck_no_fa = 0;
239 IWL_DEBUG_CALIB("consecutive bcns with few false alarms = %u\n", 239 IWL_DEBUG_CALIB(priv, "consecutive bcns with few false alarms = %u\n",
240 data->num_in_cck_no_fa); 240 data->num_in_cck_no_fa);
241 241
242 /* If we got too many false alarms this time, reduce sensitivity */ 242 /* If we got too many false alarms this time, reduce sensitivity */
243 if ((false_alarms > max_false_alarms) && 243 if ((false_alarms > max_false_alarms) &&
244 (data->auto_corr_cck > AUTO_CORR_MAX_TH_CCK)) { 244 (data->auto_corr_cck > AUTO_CORR_MAX_TH_CCK)) {
245 IWL_DEBUG_CALIB("norm FA %u > max FA %u\n", 245 IWL_DEBUG_CALIB(priv, "norm FA %u > max FA %u\n",
246 false_alarms, max_false_alarms); 246 false_alarms, max_false_alarms);
247 IWL_DEBUG_CALIB("... reducing sensitivity\n"); 247 IWL_DEBUG_CALIB(priv, "... reducing sensitivity\n");
248 data->nrg_curr_state = IWL_FA_TOO_MANY; 248 data->nrg_curr_state = IWL_FA_TOO_MANY;
249 /* Store for "fewer than desired" on later beacon */ 249 /* Store for "fewer than desired" on later beacon */
250 data->nrg_silence_ref = silence_ref; 250 data->nrg_silence_ref = silence_ref;
@@ -266,7 +266,7 @@ static int iwl_sens_energy_cck(struct iwl_priv *priv,
266 data->nrg_auto_corr_silence_diff = (s32)data->nrg_silence_ref - 266 data->nrg_auto_corr_silence_diff = (s32)data->nrg_silence_ref -
267 (s32)silence_ref; 267 (s32)silence_ref;
268 268
269 IWL_DEBUG_CALIB("norm FA %u < min FA %u, silence diff %d\n", 269 IWL_DEBUG_CALIB(priv, "norm FA %u < min FA %u, silence diff %d\n",
270 false_alarms, min_false_alarms, 270 false_alarms, min_false_alarms,
271 data->nrg_auto_corr_silence_diff); 271 data->nrg_auto_corr_silence_diff);
272 272
@@ -280,17 +280,17 @@ static int iwl_sens_energy_cck(struct iwl_priv *priv,
280 ((data->nrg_auto_corr_silence_diff > NRG_DIFF) || 280 ((data->nrg_auto_corr_silence_diff > NRG_DIFF) ||
281 (data->num_in_cck_no_fa > MAX_NUMBER_CCK_NO_FA))) { 281 (data->num_in_cck_no_fa > MAX_NUMBER_CCK_NO_FA))) {
282 282
283 IWL_DEBUG_CALIB("... increasing sensitivity\n"); 283 IWL_DEBUG_CALIB(priv, "... increasing sensitivity\n");
284 /* Increase nrg value to increase sensitivity */ 284 /* Increase nrg value to increase sensitivity */
285 val = data->nrg_th_cck + NRG_STEP_CCK; 285 val = data->nrg_th_cck + NRG_STEP_CCK;
286 data->nrg_th_cck = min((u32)ranges->min_nrg_cck, val); 286 data->nrg_th_cck = min((u32)ranges->min_nrg_cck, val);
287 } else { 287 } else {
288 IWL_DEBUG_CALIB("... but not changing sensitivity\n"); 288 IWL_DEBUG_CALIB(priv, "... but not changing sensitivity\n");
289 } 289 }
290 290
291 /* Else we got a healthy number of false alarms, keep status quo */ 291 /* Else we got a healthy number of false alarms, keep status quo */
292 } else { 292 } else {
293 IWL_DEBUG_CALIB(" FA in safe zone\n"); 293 IWL_DEBUG_CALIB(priv, " FA in safe zone\n");
294 data->nrg_curr_state = IWL_FA_GOOD_RANGE; 294 data->nrg_curr_state = IWL_FA_GOOD_RANGE;
295 295
296 /* Store for use in "fewer than desired" with later beacon */ 296 /* Store for use in "fewer than desired" with later beacon */
@@ -300,7 +300,7 @@ static int iwl_sens_energy_cck(struct iwl_priv *priv,
300 * give it some extra margin by reducing sensitivity again 300 * give it some extra margin by reducing sensitivity again
301 * (but don't go below measured energy of desired Rx) */ 301 * (but don't go below measured energy of desired Rx) */
302 if (IWL_FA_TOO_MANY == data->nrg_prev_state) { 302 if (IWL_FA_TOO_MANY == data->nrg_prev_state) {
303 IWL_DEBUG_CALIB("... increasing margin\n"); 303 IWL_DEBUG_CALIB(priv, "... increasing margin\n");
304 if (data->nrg_th_cck > (max_nrg_cck + NRG_MARGIN)) 304 if (data->nrg_th_cck > (max_nrg_cck + NRG_MARGIN))
305 data->nrg_th_cck -= NRG_MARGIN; 305 data->nrg_th_cck -= NRG_MARGIN;
306 else 306 else
@@ -314,7 +314,7 @@ static int iwl_sens_energy_cck(struct iwl_priv *priv,
314 * Lower value is higher energy, so we use max()! 314 * Lower value is higher energy, so we use max()!
315 */ 315 */
316 data->nrg_th_cck = max(max_nrg_cck, data->nrg_th_cck); 316 data->nrg_th_cck = max(max_nrg_cck, data->nrg_th_cck);
317 IWL_DEBUG_CALIB("new nrg_th_cck %u\n", data->nrg_th_cck); 317 IWL_DEBUG_CALIB(priv, "new nrg_th_cck %u\n", data->nrg_th_cck);
318 318
319 data->nrg_prev_state = data->nrg_curr_state; 319 data->nrg_prev_state = data->nrg_curr_state;
320 320
@@ -367,7 +367,7 @@ static int iwl_sens_auto_corr_ofdm(struct iwl_priv *priv,
367 /* If we got too many false alarms this time, reduce sensitivity */ 367 /* If we got too many false alarms this time, reduce sensitivity */
368 if (false_alarms > max_false_alarms) { 368 if (false_alarms > max_false_alarms) {
369 369
370 IWL_DEBUG_CALIB("norm FA %u > max FA %u)\n", 370 IWL_DEBUG_CALIB(priv, "norm FA %u > max FA %u)\n",
371 false_alarms, max_false_alarms); 371 false_alarms, max_false_alarms);
372 372
373 val = data->auto_corr_ofdm + AUTO_CORR_STEP_OFDM; 373 val = data->auto_corr_ofdm + AUTO_CORR_STEP_OFDM;
@@ -390,7 +390,7 @@ static int iwl_sens_auto_corr_ofdm(struct iwl_priv *priv,
390 /* Else if we got fewer than desired, increase sensitivity */ 390 /* Else if we got fewer than desired, increase sensitivity */
391 else if (false_alarms < min_false_alarms) { 391 else if (false_alarms < min_false_alarms) {
392 392
393 IWL_DEBUG_CALIB("norm FA %u < min FA %u\n", 393 IWL_DEBUG_CALIB(priv, "norm FA %u < min FA %u\n",
394 false_alarms, min_false_alarms); 394 false_alarms, min_false_alarms);
395 395
396 val = data->auto_corr_ofdm - AUTO_CORR_STEP_OFDM; 396 val = data->auto_corr_ofdm - AUTO_CORR_STEP_OFDM;
@@ -409,7 +409,7 @@ static int iwl_sens_auto_corr_ofdm(struct iwl_priv *priv,
409 data->auto_corr_ofdm_mrc_x1 = 409 data->auto_corr_ofdm_mrc_x1 =
410 max((u32)ranges->auto_corr_min_ofdm_mrc_x1, val); 410 max((u32)ranges->auto_corr_min_ofdm_mrc_x1, val);
411 } else { 411 } else {
412 IWL_DEBUG_CALIB("min FA %u < norm FA %u < max FA %u OK\n", 412 IWL_DEBUG_CALIB(priv, "min FA %u < norm FA %u < max FA %u OK\n",
413 min_false_alarms, false_alarms, max_false_alarms); 413 min_false_alarms, false_alarms, max_false_alarms);
414 } 414 }
415 return 0; 415 return 0;
@@ -458,12 +458,12 @@ static int iwl_sensitivity_write(struct iwl_priv *priv)
458 cmd.table[HD_OFDM_ENERGY_TH_IN_INDEX] = 458 cmd.table[HD_OFDM_ENERGY_TH_IN_INDEX] =
459 __constant_cpu_to_le16(62); 459 __constant_cpu_to_le16(62);
460 460
461 IWL_DEBUG_CALIB("ofdm: ac %u mrc %u x1 %u mrc_x1 %u thresh %u\n", 461 IWL_DEBUG_CALIB(priv, "ofdm: ac %u mrc %u x1 %u mrc_x1 %u thresh %u\n",
462 data->auto_corr_ofdm, data->auto_corr_ofdm_mrc, 462 data->auto_corr_ofdm, data->auto_corr_ofdm_mrc,
463 data->auto_corr_ofdm_x1, data->auto_corr_ofdm_mrc_x1, 463 data->auto_corr_ofdm_x1, data->auto_corr_ofdm_mrc_x1,
464 data->nrg_th_ofdm); 464 data->nrg_th_ofdm);
465 465
466 IWL_DEBUG_CALIB("cck: ac %u mrc %u thresh %u\n", 466 IWL_DEBUG_CALIB(priv, "cck: ac %u mrc %u thresh %u\n",
467 data->auto_corr_cck, data->auto_corr_cck_mrc, 467 data->auto_corr_cck, data->auto_corr_cck_mrc,
468 data->nrg_th_cck); 468 data->nrg_th_cck);
469 469
@@ -473,7 +473,7 @@ static int iwl_sensitivity_write(struct iwl_priv *priv)
473 /* Don't send command to uCode if nothing has changed */ 473 /* Don't send command to uCode if nothing has changed */
474 if (!memcmp(&cmd.table[0], &(priv->sensitivity_tbl[0]), 474 if (!memcmp(&cmd.table[0], &(priv->sensitivity_tbl[0]),
475 sizeof(u16)*HD_TABLE_SIZE)) { 475 sizeof(u16)*HD_TABLE_SIZE)) {
476 IWL_DEBUG_CALIB("No change in SENSITIVITY_CMD\n"); 476 IWL_DEBUG_CALIB(priv, "No change in SENSITIVITY_CMD\n");
477 return 0; 477 return 0;
478 } 478 }
479 479
@@ -498,7 +498,7 @@ void iwl_init_sensitivity(struct iwl_priv *priv)
498 if (priv->disable_sens_cal) 498 if (priv->disable_sens_cal)
499 return; 499 return;
500 500
501 IWL_DEBUG_CALIB("Start iwl_init_sensitivity\n"); 501 IWL_DEBUG_CALIB(priv, "Start iwl_init_sensitivity\n");
502 502
503 /* Clear driver's sensitivity algo data */ 503 /* Clear driver's sensitivity algo data */
504 data = &(priv->sensitivity_data); 504 data = &(priv->sensitivity_data);
@@ -536,7 +536,7 @@ void iwl_init_sensitivity(struct iwl_priv *priv)
536 data->last_fa_cnt_cck = 0; 536 data->last_fa_cnt_cck = 0;
537 537
538 ret |= iwl_sensitivity_write(priv); 538 ret |= iwl_sensitivity_write(priv);
539 IWL_DEBUG_CALIB("<<return 0x%X\n", ret); 539 IWL_DEBUG_CALIB(priv, "<<return 0x%X\n", ret);
540} 540}
541EXPORT_SYMBOL(iwl_init_sensitivity); 541EXPORT_SYMBOL(iwl_init_sensitivity);
542 542
@@ -562,13 +562,13 @@ void iwl_sensitivity_calibration(struct iwl_priv *priv,
562 data = &(priv->sensitivity_data); 562 data = &(priv->sensitivity_data);
563 563
564 if (!iwl_is_associated(priv)) { 564 if (!iwl_is_associated(priv)) {
565 IWL_DEBUG_CALIB("<< - not associated\n"); 565 IWL_DEBUG_CALIB(priv, "<< - not associated\n");
566 return; 566 return;
567 } 567 }
568 568
569 spin_lock_irqsave(&priv->lock, flags); 569 spin_lock_irqsave(&priv->lock, flags);
570 if (rx_info->interference_data_flag != INTERFERENCE_DATA_AVAILABLE) { 570 if (rx_info->interference_data_flag != INTERFERENCE_DATA_AVAILABLE) {
571 IWL_DEBUG_CALIB("<< invalid data.\n"); 571 IWL_DEBUG_CALIB(priv, "<< invalid data.\n");
572 spin_unlock_irqrestore(&priv->lock, flags); 572 spin_unlock_irqrestore(&priv->lock, flags);
573 return; 573 return;
574 } 574 }
@@ -595,10 +595,10 @@ void iwl_sensitivity_calibration(struct iwl_priv *priv,
595 595
596 spin_unlock_irqrestore(&priv->lock, flags); 596 spin_unlock_irqrestore(&priv->lock, flags);
597 597
598 IWL_DEBUG_CALIB("rx_enable_time = %u usecs\n", rx_enable_time); 598 IWL_DEBUG_CALIB(priv, "rx_enable_time = %u usecs\n", rx_enable_time);
599 599
600 if (!rx_enable_time) { 600 if (!rx_enable_time) {
601 IWL_DEBUG_CALIB("<< RX Enable Time == 0! \n"); 601 IWL_DEBUG_CALIB(priv, "<< RX Enable Time == 0! \n");
602 return; 602 return;
603 } 603 }
604 604
@@ -637,7 +637,7 @@ void iwl_sensitivity_calibration(struct iwl_priv *priv,
637 norm_fa_ofdm = fa_ofdm + bad_plcp_ofdm; 637 norm_fa_ofdm = fa_ofdm + bad_plcp_ofdm;
638 norm_fa_cck = fa_cck + bad_plcp_cck; 638 norm_fa_cck = fa_cck + bad_plcp_cck;
639 639
640 IWL_DEBUG_CALIB("cck: fa %u badp %u ofdm: fa %u badp %u\n", fa_cck, 640 IWL_DEBUG_CALIB(priv, "cck: fa %u badp %u ofdm: fa %u badp %u\n", fa_cck,
641 bad_plcp_cck, fa_ofdm, bad_plcp_ofdm); 641 bad_plcp_cck, fa_ofdm, bad_plcp_ofdm);
642 642
643 iwl_sens_auto_corr_ofdm(priv, norm_fa_ofdm, rx_enable_time); 643 iwl_sens_auto_corr_ofdm(priv, norm_fa_ofdm, rx_enable_time);
@@ -690,13 +690,13 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
690 * then we're done forever. */ 690 * then we're done forever. */
691 if (data->state != IWL_CHAIN_NOISE_ACCUMULATE) { 691 if (data->state != IWL_CHAIN_NOISE_ACCUMULATE) {
692 if (data->state == IWL_CHAIN_NOISE_ALIVE) 692 if (data->state == IWL_CHAIN_NOISE_ALIVE)
693 IWL_DEBUG_CALIB("Wait for noise calib reset\n"); 693 IWL_DEBUG_CALIB(priv, "Wait for noise calib reset\n");
694 return; 694 return;
695 } 695 }
696 696
697 spin_lock_irqsave(&priv->lock, flags); 697 spin_lock_irqsave(&priv->lock, flags);
698 if (rx_info->interference_data_flag != INTERFERENCE_DATA_AVAILABLE) { 698 if (rx_info->interference_data_flag != INTERFERENCE_DATA_AVAILABLE) {
699 IWL_DEBUG_CALIB(" << Interference data unavailable\n"); 699 IWL_DEBUG_CALIB(priv, " << Interference data unavailable\n");
700 spin_unlock_irqrestore(&priv->lock, flags); 700 spin_unlock_irqrestore(&priv->lock, flags);
701 return; 701 return;
702 } 702 }
@@ -709,7 +709,7 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
709 /* Make sure we accumulate data for just the associated channel 709 /* Make sure we accumulate data for just the associated channel
710 * (even if scanning). */ 710 * (even if scanning). */
711 if ((rxon_chnum != stat_chnum) || (rxon_band24 != stat_band24)) { 711 if ((rxon_chnum != stat_chnum) || (rxon_band24 != stat_band24)) {
712 IWL_DEBUG_CALIB("Stats not from chan=%d, band24=%d\n", 712 IWL_DEBUG_CALIB(priv, "Stats not from chan=%d, band24=%d\n",
713 rxon_chnum, rxon_band24); 713 rxon_chnum, rxon_band24);
714 spin_unlock_irqrestore(&priv->lock, flags); 714 spin_unlock_irqrestore(&priv->lock, flags);
715 return; 715 return;
@@ -739,11 +739,11 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
739 data->chain_signal_b = (chain_sig_b + data->chain_signal_b); 739 data->chain_signal_b = (chain_sig_b + data->chain_signal_b);
740 data->chain_signal_c = (chain_sig_c + data->chain_signal_c); 740 data->chain_signal_c = (chain_sig_c + data->chain_signal_c);
741 741
742 IWL_DEBUG_CALIB("chan=%d, band24=%d, beacon=%d\n", 742 IWL_DEBUG_CALIB(priv, "chan=%d, band24=%d, beacon=%d\n",
743 rxon_chnum, rxon_band24, data->beacon_count); 743 rxon_chnum, rxon_band24, data->beacon_count);
744 IWL_DEBUG_CALIB("chain_sig: a %d b %d c %d\n", 744 IWL_DEBUG_CALIB(priv, "chain_sig: a %d b %d c %d\n",
745 chain_sig_a, chain_sig_b, chain_sig_c); 745 chain_sig_a, chain_sig_b, chain_sig_c);
746 IWL_DEBUG_CALIB("chain_noise: a %d b %d c %d\n", 746 IWL_DEBUG_CALIB(priv, "chain_noise: a %d b %d c %d\n",
747 chain_noise_a, chain_noise_b, chain_noise_c); 747 chain_noise_a, chain_noise_b, chain_noise_c);
748 748
749 /* If this is the 20th beacon, determine: 749 /* If this is the 20th beacon, determine:
@@ -773,9 +773,9 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
773 active_chains = (1 << max_average_sig_antenna_i); 773 active_chains = (1 << max_average_sig_antenna_i);
774 } 774 }
775 775
776 IWL_DEBUG_CALIB("average_sig: a %d b %d c %d\n", 776 IWL_DEBUG_CALIB(priv, "average_sig: a %d b %d c %d\n",
777 average_sig[0], average_sig[1], average_sig[2]); 777 average_sig[0], average_sig[1], average_sig[2]);
778 IWL_DEBUG_CALIB("max_average_sig = %d, antenna %d\n", 778 IWL_DEBUG_CALIB(priv, "max_average_sig = %d, antenna %d\n",
779 max_average_sig, max_average_sig_antenna_i); 779 max_average_sig, max_average_sig_antenna_i);
780 780
781 /* Compare signal strengths for all 3 receivers. */ 781 /* Compare signal strengths for all 3 receivers. */
@@ -789,7 +789,7 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
789 data->disconn_array[i] = 1; 789 data->disconn_array[i] = 1;
790 else 790 else
791 active_chains |= (1 << i); 791 active_chains |= (1 << i);
792 IWL_DEBUG_CALIB("i = %d rssiDelta = %d " 792 IWL_DEBUG_CALIB(priv, "i = %d rssiDelta = %d "
793 "disconn_array[i] = %d\n", 793 "disconn_array[i] = %d\n",
794 i, rssi_delta, data->disconn_array[i]); 794 i, rssi_delta, data->disconn_array[i]);
795 } 795 }
@@ -813,7 +813,7 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
813 * disconnected connect it anyway */ 813 * disconnected connect it anyway */
814 data->disconn_array[i] = 0; 814 data->disconn_array[i] = 0;
815 active_chains |= ant_msk; 815 active_chains |= ant_msk;
816 IWL_DEBUG_CALIB("All Tx chains are disconnected W/A - " 816 IWL_DEBUG_CALIB(priv, "All Tx chains are disconnected W/A - "
817 "declare %d as connected\n", i); 817 "declare %d as connected\n", i);
818 break; 818 break;
819 } 819 }
@@ -821,7 +821,7 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
821 821
822 /* Save for use within RXON, TX, SCAN commands, etc. */ 822 /* Save for use within RXON, TX, SCAN commands, etc. */
823 priv->chain_noise_data.active_chains = active_chains; 823 priv->chain_noise_data.active_chains = active_chains;
824 IWL_DEBUG_CALIB("active_chains (bitwise) = 0x%x\n", 824 IWL_DEBUG_CALIB(priv, "active_chains (bitwise) = 0x%x\n",
825 active_chains); 825 active_chains);
826 826
827 /* Analyze noise for rx balance */ 827 /* Analyze noise for rx balance */
@@ -839,11 +839,11 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
839 } 839 }
840 } 840 }
841 841
842 IWL_DEBUG_CALIB("average_noise: a %d b %d c %d\n", 842 IWL_DEBUG_CALIB(priv, "average_noise: a %d b %d c %d\n",
843 average_noise[0], average_noise[1], 843 average_noise[0], average_noise[1],
844 average_noise[2]); 844 average_noise[2]);
845 845
846 IWL_DEBUG_CALIB("min_average_noise = %d, antenna %d\n", 846 IWL_DEBUG_CALIB(priv, "min_average_noise = %d, antenna %d\n",
847 min_average_noise, min_average_noise_antenna_i); 847 min_average_noise, min_average_noise_antenna_i);
848 848
849 priv->cfg->ops->utils->gain_computation(priv, average_noise, 849 priv->cfg->ops->utils->gain_computation(priv, average_noise,