aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2009-10-09 16:20:24 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-10-27 16:47:58 -0400
commit55036d6602679fb88dd7b1c19bb7203a0213b684 (patch)
tree76c20e42bf6c31cd7fee1cd8b748d2b63c2d6a3c
parentbd35f150823c21000f4c0f029abb258bc1ae3b5f (diff)
iwlwifi: additional items in sensitivity range table
Add more items to sensitivity range table to avoid using hardcoded values. Initialize the table per device since unique per device information is required to perform sensitivity calibration. additional items in sensitivity range table: .barker_corr_th_min: Barker correlation threshold minimum .barker_corr_th_min_mrc: Barker correlation threshold minimum for MRC .nrg_th_cca: Energy threshold for Clear Channel Assessment Barker codes are a technique used in WLAN encoding for transmission. MRC is "Maximal Ratio Combining", a technique for optimally combining the signals from 2 or more receivers to achieve a better signal. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-calib.c9
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h8
6 files changed, 30 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 782a36198f38..966858587e25 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -678,6 +678,10 @@ static struct iwl_sensitivity_ranges iwl4965_sensitivity = {
678 678
679 .nrg_th_cck = 100, 679 .nrg_th_cck = 100,
680 .nrg_th_ofdm = 100, 680 .nrg_th_ofdm = 100,
681
682 .barker_corr_th_min = 190,
683 .barker_corr_th_min_mrc = 390,
684 .nrg_th_cca = 62,
681}; 685};
682 686
683static void iwl4965_set_ct_threshold(struct iwl_priv *priv) 687static void iwl4965_set_ct_threshold(struct iwl_priv *priv)
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 33b38aa0d8c3..a9d1aa3ad57b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -329,6 +329,10 @@ static struct iwl_sensitivity_ranges iwl5000_sensitivity = {
329 .auto_corr_max_cck_mrc = 400, 329 .auto_corr_max_cck_mrc = 400,
330 .nrg_th_cck = 95, 330 .nrg_th_cck = 95,
331 .nrg_th_ofdm = 95, 331 .nrg_th_ofdm = 95,
332
333 .barker_corr_th_min = 190,
334 .barker_corr_th_min_mrc = 390,
335 .nrg_th_cca = 62,
332}; 336};
333 337
334static struct iwl_sensitivity_ranges iwl5150_sensitivity = { 338static struct iwl_sensitivity_ranges iwl5150_sensitivity = {
@@ -351,6 +355,10 @@ static struct iwl_sensitivity_ranges iwl5150_sensitivity = {
351 .auto_corr_max_cck_mrc = 400, 355 .auto_corr_max_cck_mrc = 400,
352 .nrg_th_cck = 95, 356 .nrg_th_cck = 95,
353 .nrg_th_ofdm = 95, 357 .nrg_th_ofdm = 95,
358
359 .barker_corr_th_min = 190,
360 .barker_corr_th_min_mrc = 390,
361 .nrg_th_cca = 62,
354}; 362};
355 363
356const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv, 364const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv,
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 46af74b86a83..dda1dd6ed40a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -121,6 +121,10 @@ static struct iwl_sensitivity_ranges iwl6000_sensitivity = {
121 .auto_corr_max_cck_mrc = 310, 121 .auto_corr_max_cck_mrc = 310,
122 .nrg_th_cck = 97, 122 .nrg_th_cck = 97,
123 .nrg_th_ofdm = 100, 123 .nrg_th_ofdm = 100,
124
125 .barker_corr_th_min = 190,
126 .barker_corr_th_min_mrc = 390,
127 .nrg_th_cca = 62,
124}; 128};
125 129
126static int iwl6000_hw_set_hw_params(struct iwl_priv *priv) 130static int iwl6000_hw_set_hw_params(struct iwl_priv *priv)
diff --git a/drivers/net/wireless/iwlwifi/iwl-calib.c b/drivers/net/wireless/iwlwifi/iwl-calib.c
index 69a80d7c2e44..1f801eb9fbff 100644
--- a/drivers/net/wireless/iwlwifi/iwl-calib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-calib.c
@@ -447,11 +447,11 @@ static int iwl_sensitivity_write(struct iwl_priv *priv)
447 cpu_to_le16((u16)data->nrg_th_ofdm); 447 cpu_to_le16((u16)data->nrg_th_ofdm);
448 448
449 cmd.table[HD_BARKER_CORR_TH_ADD_MIN_INDEX] = 449 cmd.table[HD_BARKER_CORR_TH_ADD_MIN_INDEX] =
450 cpu_to_le16(190); 450 cpu_to_le16(data->barker_corr_th_min);
451 cmd.table[HD_BARKER_CORR_TH_ADD_MIN_MRC_INDEX] = 451 cmd.table[HD_BARKER_CORR_TH_ADD_MIN_MRC_INDEX] =
452 cpu_to_le16(390); 452 cpu_to_le16(data->barker_corr_th_min_mrc);
453 cmd.table[HD_OFDM_ENERGY_TH_IN_INDEX] = 453 cmd.table[HD_OFDM_ENERGY_TH_IN_INDEX] =
454 cpu_to_le16(62); 454 cpu_to_le16(data->nrg_th_cca);
455 455
456 IWL_DEBUG_CALIB(priv, "ofdm: ac %u mrc %u x1 %u mrc_x1 %u thresh %u\n", 456 IWL_DEBUG_CALIB(priv, "ofdm: ac %u mrc %u x1 %u mrc_x1 %u thresh %u\n",
457 data->auto_corr_ofdm, data->auto_corr_ofdm_mrc, 457 data->auto_corr_ofdm, data->auto_corr_ofdm_mrc,
@@ -524,6 +524,9 @@ void iwl_init_sensitivity(struct iwl_priv *priv)
524 data->auto_corr_cck_mrc = ranges->auto_corr_min_cck_mrc; 524 data->auto_corr_cck_mrc = ranges->auto_corr_min_cck_mrc;
525 data->nrg_th_cck = ranges->nrg_th_cck; 525 data->nrg_th_cck = ranges->nrg_th_cck;
526 data->nrg_th_ofdm = ranges->nrg_th_ofdm; 526 data->nrg_th_ofdm = ranges->nrg_th_ofdm;
527 data->barker_corr_th_min = ranges->barker_corr_th_min;
528 data->barker_corr_th_min_mrc = ranges->barker_corr_th_min_mrc;
529 data->nrg_th_cca = ranges->nrg_th_cca;
527 530
528 data->last_bad_plcp_cnt_ofdm = 0; 531 data->last_bad_plcp_cnt_ofdm = 0;
529 data->last_fa_cnt_ofdm = 0; 532 data->last_fa_cnt_ofdm = 0;
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index ba3e4c837d87..2e8a55ed7de5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -3247,12 +3247,6 @@ struct iwl_missed_beacon_notif {
3247 * Lower values mean higher energy; this means making sure that the value 3247 * Lower values mean higher energy; this means making sure that the value
3248 * in HD_MIN_ENERGY_CCK_DET_INDEX is at or *above* "Max cck energy". 3248 * in HD_MIN_ENERGY_CCK_DET_INDEX is at or *above* "Max cck energy".
3249 * 3249 *
3250 * Driver should set the following entries to fixed values:
3251 *
3252 * HD_MIN_ENERGY_OFDM_DET_INDEX 100
3253 * HD_BARKER_CORR_TH_ADD_MIN_INDEX 190
3254 * HD_BARKER_CORR_TH_ADD_MIN_MRC_INDEX 390
3255 * HD_OFDM_ENERGY_TH_IN_INDEX 62
3256 */ 3250 */
3257 3251
3258/* 3252/*
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 394402afaa57..c1b07e2045e6 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -629,6 +629,10 @@ struct iwl_sensitivity_ranges {
629 u16 auto_corr_max_cck_mrc; 629 u16 auto_corr_max_cck_mrc;
630 u16 auto_corr_min_cck; 630 u16 auto_corr_min_cck;
631 u16 auto_corr_min_cck_mrc; 631 u16 auto_corr_min_cck_mrc;
632
633 u16 barker_corr_th_min;
634 u16 barker_corr_th_min_mrc;
635 u16 nrg_th_cca;
632}; 636};
633 637
634 638
@@ -850,6 +854,10 @@ struct iwl_sensitivity_data {
850 s32 nrg_auto_corr_silence_diff; 854 s32 nrg_auto_corr_silence_diff;
851 u32 num_in_cck_no_fa; 855 u32 num_in_cck_no_fa;
852 u32 nrg_th_ofdm; 856 u32 nrg_th_ofdm;
857
858 u16 barker_corr_th_min;
859 u16 barker_corr_th_min_mrc;
860 u16 nrg_th_cca;
853}; 861};
854 862
855/* Chain noise (differential Rx gain) calib data */ 863/* Chain noise (differential Rx gain) calib data */