aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2011-07-23 13:24:50 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-08-08 16:04:07 -0400
commitae7f9a740b4ac5a64306abc47a440b794c5b827a (patch)
tree417960419c67cb1badfe1df96b0efec90a8a5619 /drivers/net/wireless
parente7515ba154b63c87d987fb2a30bcbe8814c3f317 (diff)
iwlagn: support v2 of enhanced sensitivity table
Add support for v2 of enhanced sensitivity table for 2000 series products Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-2000.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-calib.c69
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h34
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h2
4 files changed, 74 insertions, 33 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-2000.c b/drivers/net/wireless/iwlwifi/iwl-2000.c
index 8a2cfde46d5a..54d931d614fb 100644
--- a/drivers/net/wireless/iwlwifi/iwl-2000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-2000.c
@@ -221,6 +221,7 @@ static struct iwl_base_params iwl2000_base_params = {
221 .wd_timeout = IWL_DEF_WD_TIMEOUT, 221 .wd_timeout = IWL_DEF_WD_TIMEOUT,
222 .max_event_log_size = 512, 222 .max_event_log_size = 512,
223 .shadow_reg_enable = true, 223 .shadow_reg_enable = true,
224 .hd_v2 = true,
224}; 225};
225 226
226 227
@@ -240,6 +241,7 @@ static struct iwl_base_params iwl2030_base_params = {
240 .wd_timeout = IWL_LONG_WD_TIMEOUT, 241 .wd_timeout = IWL_LONG_WD_TIMEOUT,
241 .max_event_log_size = 512, 242 .max_event_log_size = 512,
242 .shadow_reg_enable = true, 243 .shadow_reg_enable = true,
244 .hd_v2 = true,
243}; 245};
244 246
245static struct iwl_ht_params iwl2000_ht_params = { 247static struct iwl_ht_params iwl2000_ht_params = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-calib.c b/drivers/net/wireless/iwlwifi/iwl-agn-calib.c
index 72d6297602b8..1789e3af8101 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-calib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-calib.c
@@ -505,28 +505,53 @@ static int iwl_enhance_sensitivity_write(struct iwl_priv *priv)
505 505
506 iwl_prepare_legacy_sensitivity_tbl(priv, data, &cmd.enhance_table[0]); 506 iwl_prepare_legacy_sensitivity_tbl(priv, data, &cmd.enhance_table[0]);
507 507
508 cmd.enhance_table[HD_INA_NON_SQUARE_DET_OFDM_INDEX] = 508 if (priv->cfg->base_params->hd_v2) {
509 HD_INA_NON_SQUARE_DET_OFDM_DATA; 509 cmd.enhance_table[HD_INA_NON_SQUARE_DET_OFDM_INDEX] =
510 cmd.enhance_table[HD_INA_NON_SQUARE_DET_CCK_INDEX] = 510 HD_INA_NON_SQUARE_DET_OFDM_DATA_V2;
511 HD_INA_NON_SQUARE_DET_CCK_DATA; 511 cmd.enhance_table[HD_INA_NON_SQUARE_DET_CCK_INDEX] =
512 cmd.enhance_table[HD_CORR_11_INSTEAD_OF_CORR_9_EN_INDEX] = 512 HD_INA_NON_SQUARE_DET_CCK_DATA_V2;
513 HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA; 513 cmd.enhance_table[HD_CORR_11_INSTEAD_OF_CORR_9_EN_INDEX] =
514 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_INDEX] = 514 HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA_V2;
515 HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA; 515 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_INDEX] =
516 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] = 516 HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA_V2;
517 HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA; 517 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] =
518 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_INDEX] = 518 HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V2;
519 HD_OFDM_NON_SQUARE_DET_SLOPE_DATA; 519 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_INDEX] =
520 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_INDEX] = 520 HD_OFDM_NON_SQUARE_DET_SLOPE_DATA_V2;
521 HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA; 521 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_INDEX] =
522 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_MRC_INDEX] = 522 HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA_V2;
523 HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA; 523 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_MRC_INDEX] =
524 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] = 524 HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA_V2;
525 HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA; 525 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] =
526 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_INDEX] = 526 HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V2;
527 HD_CCK_NON_SQUARE_DET_SLOPE_DATA; 527 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_INDEX] =
528 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_INDEX] = 528 HD_CCK_NON_SQUARE_DET_SLOPE_DATA_V2;
529 HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA; 529 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_INDEX] =
530 HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA_V2;
531 } else {
532 cmd.enhance_table[HD_INA_NON_SQUARE_DET_OFDM_INDEX] =
533 HD_INA_NON_SQUARE_DET_OFDM_DATA_V1;
534 cmd.enhance_table[HD_INA_NON_SQUARE_DET_CCK_INDEX] =
535 HD_INA_NON_SQUARE_DET_CCK_DATA_V1;
536 cmd.enhance_table[HD_CORR_11_INSTEAD_OF_CORR_9_EN_INDEX] =
537 HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA_V1;
538 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_INDEX] =
539 HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA_V1;
540 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] =
541 HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V1;
542 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_SLOPE_INDEX] =
543 HD_OFDM_NON_SQUARE_DET_SLOPE_DATA_V1;
544 cmd.enhance_table[HD_OFDM_NON_SQUARE_DET_INTERCEPT_INDEX] =
545 HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA_V1;
546 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_MRC_INDEX] =
547 HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA_V1;
548 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_INDEX] =
549 HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V1;
550 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_SLOPE_INDEX] =
551 HD_CCK_NON_SQUARE_DET_SLOPE_DATA_V1;
552 cmd.enhance_table[HD_CCK_NON_SQUARE_DET_INTERCEPT_INDEX] =
553 HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA_V1;
554 }
530 555
531 /* Update uCode's "work" table, and copy it to DSP */ 556 /* Update uCode's "work" table, and copy it to DSP */
532 cmd.control = SENSITIVITY_CMD_CONTROL_WORK_TABLE; 557 cmd.control = SENSITIVITY_CMD_CONTROL_WORK_TABLE;
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index e9e9d1d1778d..0016c61b3000 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -3067,17 +3067,29 @@ struct iwl_missed_beacon_notif {
3067/* number of additional entries for enhanced tbl */ 3067/* number of additional entries for enhanced tbl */
3068#define ENHANCE_HD_TABLE_ENTRIES (ENHANCE_HD_TABLE_SIZE - HD_TABLE_SIZE) 3068#define ENHANCE_HD_TABLE_ENTRIES (ENHANCE_HD_TABLE_SIZE - HD_TABLE_SIZE)
3069 3069
3070#define HD_INA_NON_SQUARE_DET_OFDM_DATA cpu_to_le16(0) 3070#define HD_INA_NON_SQUARE_DET_OFDM_DATA_V1 cpu_to_le16(0)
3071#define HD_INA_NON_SQUARE_DET_CCK_DATA cpu_to_le16(0) 3071#define HD_INA_NON_SQUARE_DET_CCK_DATA_V1 cpu_to_le16(0)
3072#define HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA cpu_to_le16(0) 3072#define HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA_V1 cpu_to_le16(0)
3073#define HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA cpu_to_le16(668) 3073#define HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA_V1 cpu_to_le16(668)
3074#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA cpu_to_le16(4) 3074#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V1 cpu_to_le16(4)
3075#define HD_OFDM_NON_SQUARE_DET_SLOPE_DATA cpu_to_le16(486) 3075#define HD_OFDM_NON_SQUARE_DET_SLOPE_DATA_V1 cpu_to_le16(486)
3076#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA cpu_to_le16(37) 3076#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA_V1 cpu_to_le16(37)
3077#define HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA cpu_to_le16(853) 3077#define HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA_V1 cpu_to_le16(853)
3078#define HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA cpu_to_le16(4) 3078#define HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V1 cpu_to_le16(4)
3079#define HD_CCK_NON_SQUARE_DET_SLOPE_DATA cpu_to_le16(476) 3079#define HD_CCK_NON_SQUARE_DET_SLOPE_DATA_V1 cpu_to_le16(476)
3080#define HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA cpu_to_le16(99) 3080#define HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA_V1 cpu_to_le16(99)
3081
3082#define HD_INA_NON_SQUARE_DET_OFDM_DATA_V2 cpu_to_le16(1)
3083#define HD_INA_NON_SQUARE_DET_CCK_DATA_V2 cpu_to_le16(1)
3084#define HD_CORR_11_INSTEAD_OF_CORR_9_EN_DATA_V2 cpu_to_le16(1)
3085#define HD_OFDM_NON_SQUARE_DET_SLOPE_MRC_DATA_V2 cpu_to_le16(600)
3086#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V2 cpu_to_le16(40)
3087#define HD_OFDM_NON_SQUARE_DET_SLOPE_DATA_V2 cpu_to_le16(486)
3088#define HD_OFDM_NON_SQUARE_DET_INTERCEPT_DATA_V2 cpu_to_le16(45)
3089#define HD_CCK_NON_SQUARE_DET_SLOPE_MRC_DATA_V2 cpu_to_le16(853)
3090#define HD_CCK_NON_SQUARE_DET_INTERCEPT_MRC_DATA_V2 cpu_to_le16(60)
3091#define HD_CCK_NON_SQUARE_DET_SLOPE_DATA_V2 cpu_to_le16(476)
3092#define HD_CCK_NON_SQUARE_DET_INTERCEPT_DATA_V2 cpu_to_le16(99)
3081 3093
3082 3094
3083/* Control field in struct iwl_sensitivity_cmd */ 3095/* Control field in struct iwl_sensitivity_cmd */
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 0e5be5abb005..42bcb469d32c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -136,6 +136,7 @@ struct iwl_mod_params {
136 * @max_event_log_size: size of event log buffer size for ucode event logging 136 * @max_event_log_size: size of event log buffer size for ucode event logging
137 * @shadow_reg_enable: HW shadhow register bit 137 * @shadow_reg_enable: HW shadhow register bit
138 * @no_idle_support: do not support idle mode 138 * @no_idle_support: do not support idle mode
139 * @hd_v2: v2 of enhanced sensitivity value, used for 2000 series and up
139 */ 140 */
140struct iwl_base_params { 141struct iwl_base_params {
141 int eeprom_size; 142 int eeprom_size;
@@ -158,6 +159,7 @@ struct iwl_base_params {
158 u32 max_event_log_size; 159 u32 max_event_log_size;
159 const bool shadow_reg_enable; 160 const bool shadow_reg_enable;
160 const bool no_idle_support; 161 const bool no_idle_support;
162 const bool hd_v2;
161}; 163};
162/* 164/*
163 * @advanced_bt_coexist: support advanced bt coexist 165 * @advanced_bt_coexist: support advanced bt coexist