diff options
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-1000.c | 72 |
1 files changed, 71 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c index 4281999cfaaa..9d1820676f30 100644 --- a/drivers/net/wireless/iwlwifi/iwl-1000.c +++ b/drivers/net/wireless/iwlwifi/iwl-1000.c | |||
@@ -89,8 +89,78 @@ static void iwl1000_nic_config(struct iwl_priv *priv) | |||
89 | ~APMG_SVR_VOLTAGE_CONFIG_BIT_MSK); | 89 | ~APMG_SVR_VOLTAGE_CONFIG_BIT_MSK); |
90 | } | 90 | } |
91 | 91 | ||
92 | static struct iwl_sensitivity_ranges iwl1000_sensitivity = { | ||
93 | .min_nrg_cck = 95, | ||
94 | .max_nrg_cck = 0, /* not used, set to 0 */ | ||
95 | .auto_corr_min_ofdm = 90, | ||
96 | .auto_corr_min_ofdm_mrc = 170, | ||
97 | .auto_corr_min_ofdm_x1 = 120, | ||
98 | .auto_corr_min_ofdm_mrc_x1 = 240, | ||
99 | |||
100 | .auto_corr_max_ofdm = 120, | ||
101 | .auto_corr_max_ofdm_mrc = 210, | ||
102 | .auto_corr_max_ofdm_x1 = 155, | ||
103 | .auto_corr_max_ofdm_mrc_x1 = 290, | ||
104 | |||
105 | .auto_corr_min_cck = 125, | ||
106 | .auto_corr_max_cck = 200, | ||
107 | .auto_corr_min_cck_mrc = 170, | ||
108 | .auto_corr_max_cck_mrc = 400, | ||
109 | .nrg_th_cck = 95, | ||
110 | .nrg_th_ofdm = 95, | ||
111 | |||
112 | .barker_corr_th_min = 190, | ||
113 | .barker_corr_th_min_mrc = 390, | ||
114 | .nrg_th_cca = 62, | ||
115 | }; | ||
116 | |||
117 | static int iwl1000_hw_set_hw_params(struct iwl_priv *priv) | ||
118 | { | ||
119 | if (priv->cfg->mod_params->num_of_queues >= IWL_MIN_NUM_QUEUES && | ||
120 | priv->cfg->mod_params->num_of_queues <= IWL50_NUM_QUEUES) | ||
121 | priv->cfg->num_of_queues = | ||
122 | priv->cfg->mod_params->num_of_queues; | ||
123 | |||
124 | priv->hw_params.max_txq_num = priv->cfg->num_of_queues; | ||
125 | priv->hw_params.dma_chnl_num = FH50_TCSR_CHNL_NUM; | ||
126 | priv->hw_params.scd_bc_tbls_size = | ||
127 | priv->cfg->num_of_queues * | ||
128 | sizeof(struct iwl5000_scd_bc_tbl); | ||
129 | priv->hw_params.tfd_size = sizeof(struct iwl_tfd); | ||
130 | priv->hw_params.max_stations = IWL5000_STATION_COUNT; | ||
131 | priv->hw_params.bcast_sta_id = IWL5000_BROADCAST_ID; | ||
132 | |||
133 | priv->hw_params.max_data_size = IWL50_RTC_DATA_SIZE; | ||
134 | priv->hw_params.max_inst_size = IWL50_RTC_INST_SIZE; | ||
135 | |||
136 | priv->hw_params.max_bsm_size = 0; | ||
137 | priv->hw_params.ht40_channel = BIT(IEEE80211_BAND_2GHZ) | | ||
138 | BIT(IEEE80211_BAND_5GHZ); | ||
139 | priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR; | ||
140 | |||
141 | priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant); | ||
142 | priv->hw_params.rx_chains_num = num_of_ant(priv->cfg->valid_rx_ant); | ||
143 | priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant; | ||
144 | priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant; | ||
145 | |||
146 | if (priv->cfg->ops->lib->temp_ops.set_ct_kill) | ||
147 | priv->cfg->ops->lib->temp_ops.set_ct_kill(priv); | ||
148 | |||
149 | /* Set initial sensitivity parameters */ | ||
150 | /* Set initial calibration set */ | ||
151 | priv->hw_params.sens = &iwl1000_sensitivity; | ||
152 | priv->hw_params.calib_init_cfg = | ||
153 | BIT(IWL_CALIB_XTAL) | | ||
154 | BIT(IWL_CALIB_LO) | | ||
155 | BIT(IWL_CALIB_TX_IQ) | | ||
156 | BIT(IWL_CALIB_TX_IQ_PERD) | | ||
157 | BIT(IWL_CALIB_BASE_BAND); | ||
158 | |||
159 | return 0; | ||
160 | } | ||
161 | |||
92 | static struct iwl_lib_ops iwl1000_lib = { | 162 | static struct iwl_lib_ops iwl1000_lib = { |
93 | .set_hw_params = iwl5000_hw_set_hw_params, | 163 | .set_hw_params = iwl1000_hw_set_hw_params, |
94 | .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl, | 164 | .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl, |
95 | .txq_inval_byte_cnt_tbl = iwl5000_txq_inval_byte_cnt_tbl, | 165 | .txq_inval_byte_cnt_tbl = iwl5000_txq_inval_byte_cnt_tbl, |
96 | .txq_set_sched = iwl5000_txq_set_sched, | 166 | .txq_set_sched = iwl5000_txq_set_sched, |