aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-lib.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c5
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom.c20
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-eeprom.h2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-mac80211.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-shared.h2
7 files changed, 19 insertions, 24 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index 2470ca767589..79ac7cb1701b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -235,7 +235,7 @@ int iwlagn_txfifo_flush(struct iwl_priv *priv, u16 flush_control)
235 IWL_PAN_SCD_BK_MSK | IWL_PAN_SCD_MGMT_MSK | 235 IWL_PAN_SCD_BK_MSK | IWL_PAN_SCD_MGMT_MSK |
236 IWL_PAN_SCD_MULTICAST_MSK; 236 IWL_PAN_SCD_MULTICAST_MSK;
237 237
238 if (cfg(priv)->sku & EEPROM_SKU_CAP_11N_ENABLE) 238 if (hw_params(priv).sku & EEPROM_SKU_CAP_11N_ENABLE)
239 flush_cmd.fifo_control |= IWL_AGG_TX_QUEUE_MSK; 239 flush_cmd.fifo_control |= IWL_AGG_TX_QUEUE_MSK;
240 240
241 IWL_DEBUG_INFO(priv, "fifo queue control: 0X%x\n", 241 IWL_DEBUG_INFO(priv, "fifo queue control: 0X%x\n",
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index c14eda048948..e1bf12578f87 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1124,13 +1124,12 @@ static void iwl_set_hw_params(struct iwl_priv *priv)
1124 get_order(IWL_RX_BUF_SIZE_4K); 1124 get_order(IWL_RX_BUF_SIZE_4K);
1125 1125
1126 if (iwlagn_mod_params.disable_11n & IWL_DISABLE_HT_ALL) 1126 if (iwlagn_mod_params.disable_11n & IWL_DISABLE_HT_ALL)
1127 cfg(priv)->sku &= ~EEPROM_SKU_CAP_11N_ENABLE; 1127 hw_params(priv).sku &= ~EEPROM_SKU_CAP_11N_ENABLE;
1128 1128
1129 hw_params(priv).num_ampdu_queues = 1129 hw_params(priv).num_ampdu_queues =
1130 cfg(priv)->base_params->num_of_ampdu_queues; 1130 cfg(priv)->base_params->num_of_ampdu_queues;
1131 hw_params(priv).shadow_reg_enable = 1131 hw_params(priv).shadow_reg_enable =
1132 cfg(priv)->base_params->shadow_reg_enable; 1132 cfg(priv)->base_params->shadow_reg_enable;
1133 hw_params(priv).sku = cfg(priv)->sku;
1134 hw_params(priv).wd_timeout = cfg(priv)->base_params->wd_timeout; 1133 hw_params(priv).wd_timeout = cfg(priv)->base_params->wd_timeout;
1135 1134
1136 /* Device-specific setup */ 1135 /* Device-specific setup */
@@ -1257,7 +1256,7 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans)
1257 if (err) 1256 if (err)
1258 goto out_free_eeprom; 1257 goto out_free_eeprom;
1259 1258
1260 err = iwl_eeprom_check_sku(priv); 1259 err = iwl_eeprom_init_hw_params(priv);
1261 if (err) 1260 if (err)
1262 goto out_free_eeprom; 1261 goto out_free_eeprom;
1263 1262
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 8d25fd6be645..c5df3e3d975b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -137,7 +137,7 @@ int iwl_init_geos(struct iwl_priv *priv)
137 sband->bitrates = &rates[IWL_FIRST_OFDM_RATE]; 137 sband->bitrates = &rates[IWL_FIRST_OFDM_RATE];
138 sband->n_bitrates = IWL_RATE_COUNT_LEGACY - IWL_FIRST_OFDM_RATE; 138 sband->n_bitrates = IWL_RATE_COUNT_LEGACY - IWL_FIRST_OFDM_RATE;
139 139
140 if (cfg(priv)->sku & EEPROM_SKU_CAP_11N_ENABLE) 140 if (hw_params(priv).sku & EEPROM_SKU_CAP_11N_ENABLE)
141 iwl_init_ht_hw_capab(priv, &sband->ht_cap, 141 iwl_init_ht_hw_capab(priv, &sband->ht_cap,
142 IEEE80211_BAND_5GHZ); 142 IEEE80211_BAND_5GHZ);
143 143
@@ -147,7 +147,7 @@ int iwl_init_geos(struct iwl_priv *priv)
147 sband->bitrates = rates; 147 sband->bitrates = rates;
148 sband->n_bitrates = IWL_RATE_COUNT_LEGACY; 148 sband->n_bitrates = IWL_RATE_COUNT_LEGACY;
149 149
150 if (cfg(priv)->sku & EEPROM_SKU_CAP_11N_ENABLE) 150 if (hw_params(priv).sku & EEPROM_SKU_CAP_11N_ENABLE)
151 iwl_init_ht_hw_capab(priv, &sband->ht_cap, 151 iwl_init_ht_hw_capab(priv, &sband->ht_cap,
152 IEEE80211_BAND_2GHZ); 152 IEEE80211_BAND_2GHZ);
153 153
@@ -202,11 +202,11 @@ int iwl_init_geos(struct iwl_priv *priv)
202 priv->tx_power_next = max_tx_power; 202 priv->tx_power_next = max_tx_power;
203 203
204 if ((priv->bands[IEEE80211_BAND_5GHZ].n_channels == 0) && 204 if ((priv->bands[IEEE80211_BAND_5GHZ].n_channels == 0) &&
205 cfg(priv)->sku & EEPROM_SKU_CAP_BAND_52GHZ) { 205 hw_params(priv).sku & EEPROM_SKU_CAP_BAND_52GHZ) {
206 IWL_INFO(priv, "Incorrectly detected BG card as ABG. " 206 IWL_INFO(priv, "Incorrectly detected BG card as ABG. "
207 "Please send your %s to maintainer.\n", 207 "Please send your %s to maintainer.\n",
208 trans(priv)->hw_id_str); 208 trans(priv)->hw_id_str);
209 cfg(priv)->sku &= ~EEPROM_SKU_CAP_BAND_52GHZ; 209 hw_params(priv).sku &= ~EEPROM_SKU_CAP_BAND_52GHZ;
210 } 210 }
211 211
212 IWL_INFO(priv, "Tunable channels: %d 802.11bg, %d 802.11a channels\n", 212 IWL_INFO(priv, "Tunable channels: %d 802.11bg, %d 802.11a channels\n",
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.c b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
index 07e93787bce8..d8668bccc083 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.c
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
@@ -252,26 +252,24 @@ err:
252 252
253} 253}
254 254
255int iwl_eeprom_check_sku(struct iwl_priv *priv) 255int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
256{ 256{
257 struct iwl_shared *shrd = priv->shrd; 257 struct iwl_shared *shrd = priv->shrd;
258 u16 radio_cfg; 258 u16 radio_cfg;
259 259
260 if (!cfg(priv)->sku) { 260 hw_params(priv).sku = iwl_eeprom_query16(shrd, EEPROM_SKU_CAP);
261 /* not using sku overwrite */ 261 if (hw_params(priv).sku & EEPROM_SKU_CAP_11N_ENABLE &&
262 cfg(priv)->sku = iwl_eeprom_query16(shrd, EEPROM_SKU_CAP); 262 !cfg(priv)->ht_params) {
263 if (cfg(priv)->sku & EEPROM_SKU_CAP_11N_ENABLE && 263 IWL_ERR(priv, "Invalid 11n configuration\n");
264 !cfg(priv)->ht_params) { 264 return -EINVAL;
265 IWL_ERR(priv, "Invalid 11n configuration\n");
266 return -EINVAL;
267 }
268 } 265 }
269 if (!cfg(priv)->sku) { 266
267 if (!hw_params(priv).sku) {
270 IWL_ERR(priv, "Invalid device sku\n"); 268 IWL_ERR(priv, "Invalid device sku\n");
271 return -EINVAL; 269 return -EINVAL;
272 } 270 }
273 271
274 IWL_INFO(priv, "Device SKU: 0x%X\n", cfg(priv)->sku); 272 IWL_INFO(priv, "Device SKU: 0x%X\n", hw_params(priv).sku);
275 273
276 if (!cfg(priv)->valid_tx_ant && !cfg(priv)->valid_rx_ant) { 274 if (!cfg(priv)->valid_tx_ant && !cfg(priv)->valid_rx_ant) {
277 /* not using .cfg overwrite */ 275 /* not using .cfg overwrite */
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.h b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
index cbb86116917b..3b17056d5675 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.h
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.h
@@ -309,7 +309,7 @@ struct iwl_eeprom_ops {
309int iwl_eeprom_init(struct iwl_trans *trans, u32 hw_rev); 309int iwl_eeprom_init(struct iwl_trans *trans, u32 hw_rev);
310void iwl_eeprom_free(struct iwl_shared *shrd); 310void iwl_eeprom_free(struct iwl_shared *shrd);
311int iwl_eeprom_check_version(struct iwl_priv *priv); 311int iwl_eeprom_check_version(struct iwl_priv *priv);
312int iwl_eeprom_check_sku(struct iwl_priv *priv); 312int iwl_eeprom_init_hw_params(struct iwl_priv *priv);
313const u8 *iwl_eeprom_query_addr(const struct iwl_shared *shrd, size_t offset); 313const u8 *iwl_eeprom_query_addr(const struct iwl_shared *shrd, size_t offset);
314u16 iwl_eeprom_query16(const struct iwl_shared *shrd, size_t offset); 314u16 iwl_eeprom_query16(const struct iwl_shared *shrd, size_t offset);
315int iwl_init_channel_map(struct iwl_priv *priv); 315int iwl_init_channel_map(struct iwl_priv *priv);
diff --git a/drivers/net/wireless/iwlwifi/iwl-mac80211.c b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
index 005763fa38ab..8b26f3217823 100644
--- a/drivers/net/wireless/iwlwifi/iwl-mac80211.c
+++ b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
@@ -161,7 +161,7 @@ int iwlagn_mac_setup_register(struct iwl_priv *priv,
161 hw->flags |= IEEE80211_HW_SUPPORTS_PS | 161 hw->flags |= IEEE80211_HW_SUPPORTS_PS |
162 IEEE80211_HW_SUPPORTS_DYNAMIC_PS; 162 IEEE80211_HW_SUPPORTS_DYNAMIC_PS;
163 163
164 if (cfg(priv)->sku & EEPROM_SKU_CAP_11N_ENABLE) 164 if (hw_params(priv).sku & EEPROM_SKU_CAP_11N_ENABLE)
165 hw->flags |= IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS | 165 hw->flags |= IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS |
166 IEEE80211_HW_SUPPORTS_STATIC_SMPS; 166 IEEE80211_HW_SUPPORTS_STATIC_SMPS;
167 167
@@ -633,7 +633,7 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
633 IWL_DEBUG_HT(priv, "A-MPDU action on addr %pM tid %d\n", 633 IWL_DEBUG_HT(priv, "A-MPDU action on addr %pM tid %d\n",
634 sta->addr, tid); 634 sta->addr, tid);
635 635
636 if (!(cfg(priv)->sku & EEPROM_SKU_CAP_11N_ENABLE)) 636 if (!(hw_params(priv).sku & EEPROM_SKU_CAP_11N_ENABLE))
637 return -EACCES; 637 return -EACCES;
638 638
639 IWL_DEBUG_MAC80211(priv, "enter\n"); 639 IWL_DEBUG_MAC80211(priv, "enter\n");
diff --git a/drivers/net/wireless/iwlwifi/iwl-shared.h b/drivers/net/wireless/iwlwifi/iwl-shared.h
index 239dfbc57bee..11184f1c4365 100644
--- a/drivers/net/wireless/iwlwifi/iwl-shared.h
+++ b/drivers/net/wireless/iwlwifi/iwl-shared.h
@@ -282,7 +282,6 @@ enum iwl_led_mode {
282 * @max_data_size: The maximal length of the fw data section 282 * @max_data_size: The maximal length of the fw data section
283 * @valid_tx_ant: valid transmit antenna 283 * @valid_tx_ant: valid transmit antenna
284 * @valid_rx_ant: valid receive antenna 284 * @valid_rx_ant: valid receive antenna
285 * @sku: sku information from EEPROM
286 * @eeprom_ver: EEPROM version 285 * @eeprom_ver: EEPROM version
287 * @eeprom_calib_ver: EEPROM calibration version 286 * @eeprom_calib_ver: EEPROM calibration version
288 * @lib: pointer to the lib ops 287 * @lib: pointer to the lib ops
@@ -321,7 +320,6 @@ struct iwl_cfg {
321 const u32 max_inst_size; 320 const u32 max_inst_size;
322 u8 valid_tx_ant; 321 u8 valid_tx_ant;
323 u8 valid_rx_ant; 322 u8 valid_rx_ant;
324 u16 sku;
325 u16 eeprom_ver; 323 u16 eeprom_ver;
326 u16 eeprom_calib_ver; 324 u16 eeprom_calib_ver;
327 const struct iwl_lib_ops *lib; 325 const struct iwl_lib_ops *lib;