|
@@ -179,14 +179,24 @@ static void iwl5000_gain_computation(struct iwl_priv *priv,
|
|
|
data->delta_gain_code[i] = 0;
|
|
|
continue;
|
|
|
}
|
|
|
- delta_g = (1000 * ((s32)average_noise[default_chain] -
|
|
|
+
|
|
|
+ delta_g = (priv->cfg->chain_noise_scale *
|
|
|
+ ((s32)average_noise[default_chain] -
|
|
|
(s32)average_noise[i])) / 1500;
|
|
|
+
|
|
|
/* bound gain by 2 bits value max, 3rd bit is sign */
|
|
|
data->delta_gain_code[i] =
|
|
|
min(abs(delta_g), (long) CHAIN_NOISE_MAX_DELTA_GAIN_CODE);
|
|
|
|
|
|
if (delta_g < 0)
|
|
|
- /* set negative sign */
|
|
|
+ /*
|
|
|
+ * set negative sign ...
|
|
|
+ * note to Intel developers: This is uCode API format,
|
|
|
+ * not the format of any internal device registers.
|
|
|
+ * Do not change this format for e.g. 6050 or similar
|
|
|
+ * devices. Change format only if more resolution
|
|
|
+ * (i.e. more than 2 bits magnitude) is needed.
|
|
|
+ */
|
|
|
data->delta_gain_code[i] |= (1 << 2);
|
|
|
}
|
|
|
|
|
@@ -1587,6 +1597,7 @@ struct iwl_cfg iwl5300_agn_cfg = {
|
|
|
.use_rts_for_ht = true, /* use rts/cts protection */
|
|
|
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
|
|
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
|
|
+ .chain_noise_scale = 1000,
|
|
|
};
|
|
|
|
|
|
struct iwl_cfg iwl5100_bgn_cfg = {
|
|
@@ -1612,6 +1623,7 @@ struct iwl_cfg iwl5100_bgn_cfg = {
|
|
|
.use_rts_for_ht = true, /* use rts/cts protection */
|
|
|
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
|
|
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
|
|
+ .chain_noise_scale = 1000,
|
|
|
};
|
|
|
|
|
|
struct iwl_cfg iwl5100_abg_cfg = {
|
|
@@ -1635,6 +1647,7 @@ struct iwl_cfg iwl5100_abg_cfg = {
|
|
|
.led_compensation = 51,
|
|
|
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
|
|
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
|
|
+ .chain_noise_scale = 1000,
|
|
|
};
|
|
|
|
|
|
struct iwl_cfg iwl5100_agn_cfg = {
|
|
@@ -1660,6 +1673,7 @@ struct iwl_cfg iwl5100_agn_cfg = {
|
|
|
.use_rts_for_ht = true, /* use rts/cts protection */
|
|
|
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
|
|
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
|
|
+ .chain_noise_scale = 1000,
|
|
|
};
|
|
|
|
|
|
struct iwl_cfg iwl5350_agn_cfg = {
|
|
@@ -1685,6 +1699,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
|
|
|
.use_rts_for_ht = true, /* use rts/cts protection */
|
|
|
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
|
|
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
|
|
+ .chain_noise_scale = 1000,
|
|
|
};
|
|
|
|
|
|
struct iwl_cfg iwl5150_agn_cfg = {
|
|
@@ -1710,6 +1725,7 @@ struct iwl_cfg iwl5150_agn_cfg = {
|
|
|
.use_rts_for_ht = true, /* use rts/cts protection */
|
|
|
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
|
|
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
|
|
+ .chain_noise_scale = 1000,
|
|
|
};
|
|
|
|
|
|
struct iwl_cfg iwl5150_abg_cfg = {
|
|
@@ -1733,6 +1749,7 @@ struct iwl_cfg iwl5150_abg_cfg = {
|
|
|
.led_compensation = 51,
|
|
|
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
|
|
|
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
|
|
|
+ .chain_noise_scale = 1000,
|
|
|
};
|
|
|
|
|
|
MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX));
|