aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-5000.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-5000.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index 6a10526d939..217c6a9596c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -1250,7 +1250,55 @@ static int iwl5000_hw_valid_rtc_data_addr(u32 addr)
1250 (addr < IWL50_RTC_DATA_UPPER_BOUND); 1250 (addr < IWL50_RTC_DATA_UPPER_BOUND);
1251} 1251}
1252 1252
1253static int iwl5000_send_rxon_assoc(struct iwl_priv *priv)
1254{
1255 int ret = 0;
1256 struct iwl5000_rxon_assoc_cmd rxon_assoc;
1257 const struct iwl_rxon_cmd *rxon1 = &priv->staging_rxon;
1258 const struct iwl_rxon_cmd *rxon2 = &priv->active_rxon;
1259
1260 if ((rxon1->flags == rxon2->flags) &&
1261 (rxon1->filter_flags == rxon2->filter_flags) &&
1262 (rxon1->cck_basic_rates == rxon2->cck_basic_rates) &&
1263 (rxon1->ofdm_ht_single_stream_basic_rates ==
1264 rxon2->ofdm_ht_single_stream_basic_rates) &&
1265 (rxon1->ofdm_ht_dual_stream_basic_rates ==
1266 rxon2->ofdm_ht_dual_stream_basic_rates) &&
1267 (rxon1->ofdm_ht_triple_stream_basic_rates ==
1268 rxon2->ofdm_ht_triple_stream_basic_rates) &&
1269 (rxon1->acquisition_data == rxon2->acquisition_data) &&
1270 (rxon1->rx_chain == rxon2->rx_chain) &&
1271 (rxon1->ofdm_basic_rates == rxon2->ofdm_basic_rates)) {
1272 IWL_DEBUG_INFO("Using current RXON_ASSOC. Not resending.\n");
1273 return 0;
1274 }
1275
1276 rxon_assoc.flags = priv->staging_rxon.flags;
1277 rxon_assoc.filter_flags = priv->staging_rxon.filter_flags;
1278 rxon_assoc.ofdm_basic_rates = priv->staging_rxon.ofdm_basic_rates;
1279 rxon_assoc.cck_basic_rates = priv->staging_rxon.cck_basic_rates;
1280 rxon_assoc.reserved1 = 0;
1281 rxon_assoc.reserved2 = 0;
1282 rxon_assoc.reserved3 = 0;
1283 rxon_assoc.ofdm_ht_single_stream_basic_rates =
1284 priv->staging_rxon.ofdm_ht_single_stream_basic_rates;
1285 rxon_assoc.ofdm_ht_dual_stream_basic_rates =
1286 priv->staging_rxon.ofdm_ht_dual_stream_basic_rates;
1287 rxon_assoc.rx_chain_select_flags = priv->staging_rxon.rx_chain;
1288 rxon_assoc.ofdm_ht_triple_stream_basic_rates =
1289 priv->staging_rxon.ofdm_ht_triple_stream_basic_rates;
1290 rxon_assoc.acquisition_data = priv->staging_rxon.acquisition_data;
1291
1292 ret = iwl_send_cmd_pdu_async(priv, REPLY_RXON_ASSOC,
1293 sizeof(rxon_assoc), &rxon_assoc, NULL);
1294 if (ret)
1295 return ret;
1296
1297 return ret;
1298}
1299
1253static struct iwl_hcmd_ops iwl5000_hcmd = { 1300static struct iwl_hcmd_ops iwl5000_hcmd = {
1301 .rxon_assoc = iwl5000_send_rxon_assoc,
1254}; 1302};
1255 1303
1256static struct iwl_hcmd_utils_ops iwl5000_hcmd_utils = { 1304static struct iwl_hcmd_utils_ops iwl5000_hcmd_utils = {