The first 4 hardware key indexes are reserved for WEP, but never programmed. The result was that WEP always used software decryption. Signed-off-by: Bill Jordan <bjordan@xxxxxxxxxx> --- drivers/net/wireless/ath/key.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/key.c b/drivers/net/wireless/ath/key.c index 17b0efd..73177f1 100644 --- a/drivers/net/wireless/ath/key.c +++ b/drivers/net/wireless/ath/key.c @@ -501,7 +501,11 @@ int ath_key_config(struct ath_common *common, if (key->keylen) memcpy(hk.kv_val, key->key, key->keylen); - if (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) { + if (hk.kv_type == ATH_CIPHER_WEP) { + if (key->keyidx >= IEEE80211_WEP_NKID) + return -EOPNOTSUPP; + idx = key->keyidx; + } else if (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) { switch (vif->type) { case NL80211_IFTYPE_AP: memcpy(gmac, vif->addr, ETH_ALEN); @@ -577,8 +581,6 @@ EXPORT_SYMBOL(ath_key_config); void ath_key_delete(struct ath_common *common, struct ieee80211_key_conf *key) { ath_hw_keyreset(common, key->hw_key_idx); - if (key->hw_key_idx < IEEE80211_WEP_NKID) - return; clear_bit(key->hw_key_idx, common->keymap); if (key->cipher != WLAN_CIPHER_SUITE_TKIP) -- 1.7.4.4 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html