aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl4965-base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl4965-base.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl4965-base.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index 37ab1c565ce1..da01896bd406 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -1140,8 +1140,8 @@ static int iwl4965_set_ccmp_dynamic_key_info(struct iwl_priv *priv,
1140 memcpy(priv->stations[sta_id].sta.key.key, keyconf->key, 1140 memcpy(priv->stations[sta_id].sta.key.key, keyconf->key,
1141 keyconf->keylen); 1141 keyconf->keylen);
1142 1142
1143 priv->stations[sta_id].sta.key.key_offset 1143 priv->stations[sta_id].sta.key.key_offset =
1144 = (sta_id % STA_KEY_MAX_NUM);/*FIXME*/ 1144 iwl_get_free_ucode_key_index(priv);
1145 priv->stations[sta_id].sta.key.key_flags = key_flags; 1145 priv->stations[sta_id].sta.key.key_flags = key_flags;
1146 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK; 1146 priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK;
1147 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK; 1147 priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
@@ -1187,6 +1187,10 @@ static int iwl4965_clear_sta_key_info(struct iwl_priv *priv, u8 sta_id)
1187 priv->key_mapping_key = 0; 1187 priv->key_mapping_key = 0;
1188 1188
1189 spin_lock_irqsave(&priv->sta_lock, flags); 1189 spin_lock_irqsave(&priv->sta_lock, flags);
1190 if (!test_and_clear_bit(priv->stations[sta_id].sta.key.key_offset,
1191 &priv->ucode_key_table))
1192 IWL_ERROR("index %d not used in uCode key table.\n",
1193 priv->stations[sta_id].sta.key.key_offset);
1190 memset(&priv->stations[sta_id].keyinfo, 0, sizeof(struct iwl4965_hw_key)); 1194 memset(&priv->stations[sta_id].keyinfo, 0, sizeof(struct iwl4965_hw_key));
1191 memset(&priv->stations[sta_id].sta.key, 0, sizeof(struct iwl4965_keyinfo)); 1195 memset(&priv->stations[sta_id].sta.key, 0, sizeof(struct iwl4965_keyinfo));
1192 priv->stations[sta_id].sta.key.key_flags = STA_KEY_FLG_NO_ENC; 1196 priv->stations[sta_id].sta.key.key_flags = STA_KEY_FLG_NO_ENC;
@@ -6971,7 +6975,7 @@ static void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw,
6971 spin_lock_irqsave(&priv->sta_lock, flags); 6975 spin_lock_irqsave(&priv->sta_lock, flags);
6972 6976
6973 priv->stations[sta_id].sta.key.key_offset = 6977 priv->stations[sta_id].sta.key.key_offset =
6974 (sta_id % STA_KEY_MAX_NUM);/* FIXME */ 6978 iwl_get_free_ucode_key_index(priv);
6975 priv->stations[sta_id].sta.key.key_flags = key_flags; 6979 priv->stations[sta_id].sta.key.key_flags = key_flags;
6976 priv->stations[sta_id].sta.key.tkip_rx_tsc_byte2 = (u8) iv32; 6980 priv->stations[sta_id].sta.key.tkip_rx_tsc_byte2 = (u8) iv32;
6977 6981