int i;
 
-       at76_dbg(DBG_MAC80211, "%s(): cmd %d key->alg %d key->keyidx %d "
+       at76_dbg(DBG_MAC80211, "%s(): cmd %d key->cipher %d key->keyidx %d "
                 "key->keylen %d",
-                __func__, cmd, key->alg, key->keyidx, key->keylen);
+                __func__, cmd, key->cipher, key->keyidx, key->keylen);
 
-       if (key->alg != ALG_WEP)
+       if ((key->cipher != WLAN_CIPHER_SUITE_WEP40) &&
+           (key->cipher != WLAN_CIPHER_SUITE_WEP104))
                return -EOPNOTSUPP;
 
        key->hw_key_idx = key->keyidx;
 
        if (info->control.hw_key) {
                icv = info->control.hw_key->icv_len;
 
-               switch (info->control.hw_key->alg) {
-               case ALG_WEP:
+               switch (info->control.hw_key->cipher) {
+               case WLAN_CIPHER_SUITE_WEP40:
+               case WLAN_CIPHER_SUITE_WEP104:
+               case WLAN_CIPHER_SUITE_TKIP:
                        keytype = AR9170_TX_MAC_ENCR_RC4;
                        break;
-               case ALG_TKIP:
-                       keytype = AR9170_TX_MAC_ENCR_RC4;
-                       break;
-               case ALG_CCMP:
+               case WLAN_CIPHER_SUITE_CCMP:
                        keytype = AR9170_TX_MAC_ENCR_AES;
                        break;
                default:
        if ((!ar->vif) || (ar->disable_offload))
                return -EOPNOTSUPP;
 
-       switch (key->alg) {
-       case ALG_WEP:
-               if (key->keylen == WLAN_KEY_LEN_WEP40)
-                       ktype = AR9170_ENC_ALG_WEP64;
-               else
-                       ktype = AR9170_ENC_ALG_WEP128;
+       switch (key->cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+               ktype = AR9170_ENC_ALG_WEP64;
+               break;
+       case WLAN_CIPHER_SUITE_WEP104:
+               ktype = AR9170_ENC_ALG_WEP128;
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                ktype = AR9170_ENC_ALG_TKIP;
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                ktype = AR9170_ENC_ALG_AESCCMP;
                break;
        default:
                if (err)
                        goto out;
 
-               if (key->alg == ALG_TKIP) {
+               if (key->cipher == WLAN_CIPHER_SUITE_TKIP) {
                        err = ar9170_upload_key(ar, i, sta ? sta->addr : NULL,
                                                ktype, 1, key->key + 16, 16);
                        if (err)
                        if (err)
                                goto out;
 
-                       if (key->alg == ALG_TKIP) {
+                       if (key->cipher == WLAN_CIPHER_SUITE_TKIP) {
                                err = ar9170_upload_key(ar, key->hw_key_idx,
                                                        NULL,
                                                        AR9170_ENC_ALG_NONE, 1,
 
        if (sc->opmode == NL80211_IFTYPE_AP)
                return -EOPNOTSUPP;
 
-       switch (key->alg) {
-       case ALG_WEP:
-       case ALG_TKIP:
+       switch (key->cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
+       case WLAN_CIPHER_SUITE_TKIP:
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                if (sc->ah->ah_aes_support)
                        break;
 
 
 static
 int ath5k_keycache_type(const struct ieee80211_key_conf *key)
 {
-       switch (key->alg) {
-       case ALG_TKIP:
+       switch (key->cipher) {
+       case WLAN_CIPHER_SUITE_TKIP:
                return AR5K_KEYTABLE_TYPE_TKIP;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                return AR5K_KEYTABLE_TYPE_CCM;
-       case ALG_WEP:
-               if (key->keylen == WLAN_KEY_LEN_WEP40)
-                       return AR5K_KEYTABLE_TYPE_40;
-               else if (key->keylen == WLAN_KEY_LEN_WEP104)
-                       return AR5K_KEYTABLE_TYPE_104;
-               return -EINVAL;
+       case WLAN_CIPHER_SUITE_WEP40:
+               return AR5K_KEYTABLE_TYPE_40;
+       case WLAN_CIPHER_SUITE_WEP104:
+               return AR5K_KEYTABLE_TYPE_104;
        default:
                return -EINVAL;
        }
-       return -EINVAL;
 }
 
 /*
        bool is_tkip;
        const u8 *key_ptr;
 
-       is_tkip = (key->alg == ALG_TKIP);
+       is_tkip = (key->cipher == WLAN_CIPHER_SUITE_TKIP);
 
        /*
         * key->keylen comes in from mac80211 in bytes.
 
        struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
 
        if (tx_info->control.hw_key) {
-               if (tx_info->control.hw_key->alg == ALG_WEP)
+               switch (tx_info->control.hw_key->cipher) {
+               case WLAN_CIPHER_SUITE_WEP40:
+               case WLAN_CIPHER_SUITE_WEP104:
                        return ATH9K_KEY_TYPE_WEP;
-               else if (tx_info->control.hw_key->alg == ALG_TKIP)
+               case WLAN_CIPHER_SUITE_TKIP:
                        return ATH9K_KEY_TYPE_TKIP;
-               else if (tx_info->control.hw_key->alg == ALG_CCMP)
+               case WLAN_CIPHER_SUITE_CCMP:
                        return ATH9K_KEY_TYPE_AES;
+               default:
+                       break;
+               }
        }
 
        return ATH9K_KEY_TYPE_CLEAR;
 }
 
 static int ath_reserve_key_cache_slot(struct ath_common *common,
-                                     enum ieee80211_key_alg alg)
+                                     u32 cipher)
 {
        int i;
 
-       if (alg == ALG_TKIP)
+       if (cipher == WLAN_CIPHER_SUITE_TKIP)
                return ath_reserve_key_cache_slot_tkip(common);
 
        /* First, try to find slots that would not be available for TKIP. */
 
        memset(&hk, 0, sizeof(hk));
 
-       switch (key->alg) {
-       case ALG_WEP:
+       switch (key->cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                hk.kv_type = ATH9K_CIPHER_WEP;
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                hk.kv_type = ATH9K_CIPHER_TKIP;
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                hk.kv_type = ATH9K_CIPHER_AES_CCM;
                break;
        default:
                        memcpy(gmac, vif->addr, ETH_ALEN);
                        gmac[0] |= 0x01;
                        mac = gmac;
-                       idx = ath_reserve_key_cache_slot(common, key->alg);
+                       idx = ath_reserve_key_cache_slot(common, key->cipher);
                        break;
                case NL80211_IFTYPE_ADHOC:
                        if (!sta) {
                        memcpy(gmac, sta->addr, ETH_ALEN);
                        gmac[0] |= 0x01;
                        mac = gmac;
-                       idx = ath_reserve_key_cache_slot(common, key->alg);
+                       idx = ath_reserve_key_cache_slot(common, key->cipher);
                        break;
                default:
                        idx = key->keyidx;
                        return -EOPNOTSUPP;
                mac = sta->addr;
 
-               idx = ath_reserve_key_cache_slot(common, key->alg);
+               idx = ath_reserve_key_cache_slot(common, key->cipher);
        }
 
        if (idx < 0)
                return -ENOSPC; /* no free key cache entries */
 
-       if (key->alg == ALG_TKIP)
+       if (key->cipher == WLAN_CIPHER_SUITE_TKIP)
                ret = ath_setkey_tkip(common, idx, key->key, &hk, mac,
                                      vif->type == NL80211_IFTYPE_AP);
        else
                return -EIO;
 
        set_bit(idx, common->keymap);
-       if (key->alg == ALG_TKIP) {
+       if (key->cipher == WLAN_CIPHER_SUITE_TKIP) {
                set_bit(idx + 64, common->keymap);
                if (common->splitmic) {
                        set_bit(idx + 32, common->keymap);
                return;
 
        clear_bit(key->hw_key_idx, common->keymap);
-       if (key->alg != ALG_TKIP)
+       if (key->cipher != WLAN_CIPHER_SUITE_TKIP)
                return;
 
        clear_bit(key->hw_key_idx + 64, common->keymap);
 
                        key->hw_key_idx = ret;
                        /* push IV and Michael MIC generation to stack */
                        key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
-                       if (key->alg == ALG_TKIP)
+                       if (key->cipher == WLAN_CIPHER_SUITE_TKIP)
                                key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC;
-                       if (priv->ah->sw_mgmt_crypto && key->alg == ALG_CCMP)
+                       if (priv->ah->sw_mgmt_crypto &&
+                           key->cipher == WLAN_CIPHER_SUITE_CCMP)
                                key->flags |= IEEE80211_KEY_FLAG_SW_MGMT;
                        ret = 0;
                }
 
                        key->hw_key_idx = ret;
                        /* push IV and Michael MIC generation to stack */
                        key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
-                       if (key->alg == ALG_TKIP)
+                       if (key->cipher == WLAN_CIPHER_SUITE_TKIP)
                                key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC;
-                       if (sc->sc_ah->sw_mgmt_crypto && key->alg == ALG_CCMP)
+                       if (sc->sc_ah->sw_mgmt_crypto &&
+                           key->cipher == WLAN_CIPHER_SUITE_CCMP)
                                key->flags |= IEEE80211_KEY_FLAG_SW_MGMT;
                        ret = 0;
                }
 
        }
 
        err = -EINVAL;
-       switch (key->alg) {
-       case ALG_WEP:
-               if (key->keylen == WLAN_KEY_LEN_WEP40)
-                       algorithm = B43_SEC_ALGO_WEP40;
-               else
-                       algorithm = B43_SEC_ALGO_WEP104;
+       switch (key->cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+               algorithm = B43_SEC_ALGO_WEP40;
+               break;
+       case WLAN_CIPHER_SUITE_WEP104:
+               algorithm = B43_SEC_ALGO_WEP104;
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                algorithm = B43_SEC_ALGO_TKIP;
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                algorithm = B43_SEC_ALGO_AES;
                break;
        default:
 
 {
        struct ieee80211_key_conf *keyconf = info->control.hw_key;
 
-       switch (keyconf->alg) {
-       case ALG_CCMP:
+       switch (keyconf->cipher) {
+       case WLAN_CIPHER_SUITE_CCMP:
                tx_cmd->sec_ctl = TX_CMD_SEC_CCM;
                memcpy(tx_cmd->key, keyconf->key, keyconf->keylen);
                if (info->flags & IEEE80211_TX_CTL_AMPDU)
                IWL_DEBUG_TX(priv, "tx_cmd with AES hwcrypto\n");
                break;
 
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                tx_cmd->sec_ctl = TX_CMD_SEC_TKIP;
                ieee80211_get_tkip_key(keyconf, skb_frag,
                        IEEE80211_TKIP_P2_KEY, tx_cmd->key);
                IWL_DEBUG_TX(priv, "tx_cmd with tkip hwcrypto\n");
                break;
 
-       case ALG_WEP:
+       case WLAN_CIPHER_SUITE_WEP104:
+               tx_cmd->sec_ctl |= TX_CMD_SEC_KEY128;
+               /* fall through */
+       case WLAN_CIPHER_SUITE_WEP40:
                tx_cmd->sec_ctl |= (TX_CMD_SEC_WEP |
                        (keyconf->keyidx & TX_CMD_SEC_MSK) << TX_CMD_SEC_SHIFT);
 
-               if (keyconf->keylen == WEP_KEY_LEN_128)
-                       tx_cmd->sec_ctl |= TX_CMD_SEC_KEY128;
-
                memcpy(&tx_cmd->key[3], keyconf->key, keyconf->keylen);
 
                IWL_DEBUG_TX(priv, "Configuring packet for WEP encryption "
                break;
 
        default:
-               IWL_ERR(priv, "Unknown encode alg %d\n", keyconf->alg);
+               IWL_ERR(priv, "Unknown encode cipher %x\n", keyconf->cipher);
                break;
        }
 }
 
         * in 1X mode.
         * In legacy wep mode, we use another host command to the uCode.
         */
-       if (key->alg == ALG_WEP && !sta && vif->type != NL80211_IFTYPE_AP) {
+       if ((key->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+            key->cipher == WLAN_CIPHER_SUITE_WEP104) &&
+           !sta && vif->type != NL80211_IFTYPE_AP) {
                if (cmd == SET_KEY)
                        is_default_wep_key = !priv->key_mapping_key;
                else
 
 };
 
 struct iwl_hw_key {
-       enum ieee80211_key_alg alg;
+       u32 cipher;
        int keylen;
        u8 keyidx;
        u8 key[32];
 
 
        keyconf->flags &= ~IEEE80211_KEY_FLAG_GENERATE_IV;
        keyconf->hw_key_idx = HW_KEY_DEFAULT;
-       priv->stations[IWL_AP_ID].keyinfo.alg = ALG_WEP;
+       priv->stations[IWL_AP_ID].keyinfo.cipher = keyconf->cipher;
 
        priv->wep_keys[keyconf->keyidx].key_size = keyconf->keylen;
        memcpy(&priv->wep_keys[keyconf->keyidx].key, &keyconf->key,
 
        spin_lock_irqsave(&priv->sta_lock, flags);
 
-       priv->stations[sta_id].keyinfo.alg = keyconf->alg;
+       priv->stations[sta_id].keyinfo.cipher = keyconf->cipher;
        priv->stations[sta_id].keyinfo.keylen = keyconf->keylen;
        priv->stations[sta_id].keyinfo.keyidx = keyconf->keyidx;
 
        keyconf->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
 
        spin_lock_irqsave(&priv->sta_lock, flags);
-       priv->stations[sta_id].keyinfo.alg = keyconf->alg;
+       priv->stations[sta_id].keyinfo.cipher = keyconf->cipher;
        priv->stations[sta_id].keyinfo.keylen = keyconf->keylen;
 
        memcpy(priv->stations[sta_id].keyinfo.key, keyconf->key,
 
        spin_lock_irqsave(&priv->sta_lock, flags);
 
-       priv->stations[sta_id].keyinfo.alg = keyconf->alg;
+       priv->stations[sta_id].keyinfo.cipher = keyconf->cipher;
        priv->stations[sta_id].keyinfo.keylen = 16;
 
        if ((priv->stations[sta_id].sta.key.key_flags & STA_KEY_FLG_ENCRYPT_MSK)
        priv->key_mapping_key++;
        keyconf->hw_key_idx = HW_KEY_DYNAMIC;
 
-       switch (keyconf->alg) {
-       case ALG_CCMP:
+       switch (keyconf->cipher) {
+       case WLAN_CIPHER_SUITE_CCMP:
                ret = iwl_set_ccmp_dynamic_key_info(priv, keyconf, sta_id);
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                ret = iwl_set_tkip_dynamic_key_info(priv, keyconf, sta_id);
                break;
-       case ALG_WEP:
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                ret = iwl_set_wep_dynamic_key_info(priv, keyconf, sta_id);
                break;
        default:
                IWL_ERR(priv,
-                       "Unknown alg: %s alg = %d\n", __func__, keyconf->alg);
+                       "Unknown alg: %s cipher = %x\n", __func__,
+                       keyconf->cipher);
                ret = -EINVAL;
        }
 
-       IWL_DEBUG_WEP(priv, "Set dynamic key: alg= %d len=%d idx=%d sta=%d ret=%d\n",
-                     keyconf->alg, keyconf->keylen, keyconf->keyidx,
+       IWL_DEBUG_WEP(priv, "Set dynamic key: cipher=%x len=%d idx=%d sta=%d ret=%d\n",
+                     keyconf->cipher, keyconf->keylen, keyconf->keyidx,
                      sta_id, ret);
 
        return ret;
 
        key_flags &= ~STA_KEY_FLG_INVALID;
 
        spin_lock_irqsave(&priv->sta_lock, flags);
-       priv->stations[sta_id].keyinfo.alg = keyconf->alg;
+       priv->stations[sta_id].keyinfo.cipher = keyconf->cipher;
        priv->stations[sta_id].keyinfo.keylen = keyconf->keylen;
        memcpy(priv->stations[sta_id].keyinfo.key, keyconf->key,
               keyconf->keylen);
 
        keyconf->hw_key_idx = HW_KEY_DYNAMIC;
 
-       switch (keyconf->alg) {
-       case ALG_CCMP:
+       switch (keyconf->cipher) {
+       case WLAN_CIPHER_SUITE_CCMP:
                ret = iwl3945_set_ccmp_dynamic_key_info(priv, keyconf, sta_id);
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                ret = iwl3945_set_tkip_dynamic_key_info(priv, keyconf, sta_id);
                break;
-       case ALG_WEP:
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                ret = iwl3945_set_wep_dynamic_key_info(priv, keyconf, sta_id);
                break;
        default:
-               IWL_ERR(priv, "Unknown alg: %s alg = %d\n", __func__, keyconf->alg);
+               IWL_ERR(priv, "Unknown alg: %s alg=%x\n", __func__,
+                       keyconf->cipher);
                ret = -EINVAL;
        }
 
-       IWL_DEBUG_WEP(priv, "Set dynamic key: alg= %d len=%d idx=%d sta=%d ret=%d\n",
-                     keyconf->alg, keyconf->keylen, keyconf->keyidx,
+       IWL_DEBUG_WEP(priv, "Set dynamic key: alg=%x len=%d idx=%d sta=%d ret=%d\n",
+                     keyconf->cipher, keyconf->keylen, keyconf->keyidx,
                      sta_id, ret);
 
        return ret;
 static int iwl3945_set_static_key(struct iwl_priv *priv,
                                struct ieee80211_key_conf *key)
 {
-       if (key->alg == ALG_WEP)
+       if (key->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+           key->cipher == WLAN_CIPHER_SUITE_WEP104)
                return -EOPNOTSUPP;
 
-       IWL_ERR(priv, "Static key invalid: alg %d\n", key->alg);
+       IWL_ERR(priv, "Static key invalid: cipher %x\n", key->cipher);
        return -EINVAL;
 }
 
        struct iwl3945_tx_cmd *tx_cmd = (struct iwl3945_tx_cmd *)cmd->cmd.payload;
        struct iwl_hw_key *keyinfo = &priv->stations[sta_id].keyinfo;
 
-       switch (keyinfo->alg) {
-       case ALG_CCMP:
+       tx_cmd->sec_ctl = 0;
+
+       switch (keyinfo->cipher) {
+       case WLAN_CIPHER_SUITE_CCMP:
                tx_cmd->sec_ctl = TX_CMD_SEC_CCM;
                memcpy(tx_cmd->key, keyinfo->key, keyinfo->keylen);
                IWL_DEBUG_TX(priv, "tx_cmd with AES hwcrypto\n");
                break;
 
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                break;
 
-       case ALG_WEP:
-               tx_cmd->sec_ctl = TX_CMD_SEC_WEP |
+       case WLAN_CIPHER_SUITE_WEP104:
+               tx_cmd->sec_ctl |= TX_CMD_SEC_KEY128;
+               /* fall through */
+       case WLAN_CIPHER_SUITE_WEP40:
+               tx_cmd->sec_ctl |= TX_CMD_SEC_WEP |
                    (info->control.hw_key->hw_key_idx & TX_CMD_SEC_MSK) << TX_CMD_SEC_SHIFT;
 
-               if (keyinfo->keylen == 13)
-                       tx_cmd->sec_ctl |= TX_CMD_SEC_KEY128;
-
                memcpy(&tx_cmd->key[3], keyinfo->key, keyinfo->keylen);
 
                IWL_DEBUG_TX(priv, "Configuring packet for WEP encryption "
                break;
 
        default:
-               IWL_ERR(priv, "Unknown encode alg %d\n", keyinfo->alg);
+               IWL_ERR(priv, "Unknown encode cipher %x\n", keyinfo->cipher);
                break;
        }
 }
 
 
        mutex_lock(&priv->conf_mutex);
        if (cmd == SET_KEY) {
-               switch (key->alg) {
-               case ALG_TKIP:
+               switch (key->cipher) {
+               case WLAN_CIPHER_SUITE_TKIP:
                        if (!(priv->privacy_caps & (BR_DESC_PRIV_CAP_MICHAEL |
                              BR_DESC_PRIV_CAP_TKIP))) {
                                ret = -EOPNOTSUPP;
                        key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
                        algo = P54_CRYPTO_TKIPMICHAEL;
                        break;
-               case ALG_WEP:
+               case WLAN_CIPHER_SUITE_WEP40:
+               case WLAN_CIPHER_SUITE_WEP104:
                        if (!(priv->privacy_caps & BR_DESC_PRIV_CAP_WEP)) {
                                ret = -EOPNOTSUPP;
                                goto out_unlock;
                        key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
                        algo = P54_CRYPTO_WEP;
                        break;
-               case ALG_CCMP:
+               case WLAN_CIPHER_SUITE_CCMP:
                        if (!(priv->privacy_caps & BR_DESC_PRIV_CAP_AESCCMP)) {
                                ret = -EOPNOTSUPP;
                                goto out_unlock;
 
        }
 }
 
-static u8 p54_convert_algo(enum ieee80211_key_alg alg)
+static u8 p54_convert_algo(u32 cipher)
 {
-       switch (alg) {
-       case ALG_WEP:
+       switch (cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                return P54_CRYPTO_WEP;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                return P54_CRYPTO_TKIPMICHAEL;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                return P54_CRYPTO_AESCCMP;
        default:
                return 0;
 
        if (info->control.hw_key) {
                crypt_offset = ieee80211_get_hdrlen_from_skb(skb);
-               if (info->control.hw_key->alg == ALG_TKIP) {
+               if (info->control.hw_key->cipher == WLAN_CIPHER_SUITE_TKIP) {
                        u8 *iv = (u8 *)(skb->data + crypt_offset);
                        /*
                         * The firmware excepts that the IV has to have
        hdr->tries = ridx;
        txhdr->rts_rate_idx = 0;
        if (info->control.hw_key) {
-               txhdr->key_type = p54_convert_algo(info->control.hw_key->alg);
+               txhdr->key_type = p54_convert_algo(info->control.hw_key->cipher);
                txhdr->key_len = min((u8)16, info->control.hw_key->keylen);
                memcpy(txhdr->key, info->control.hw_key->key, txhdr->key_len);
-               if (info->control.hw_key->alg == ALG_TKIP) {
+               if (info->control.hw_key->cipher == WLAN_CIPHER_SUITE_TKIP) {
                        /* reserve space for the MIC key */
                        len += 8;
                        memcpy(skb_put(skb, 8), &(info->control.hw_key->key
 
                 * it is known that not work at least on some hardware.
                 * SW crypto will be used in that case.
                 */
-               if (key->alg == ALG_WEP && key->keyidx != 0)
+               if ((key->cipher == WLAN_CIPHER_SUITE_WEP40 ||
+                    key->cipher == WLAN_CIPHER_SUITE_WEP104) &&
+                   key->keyidx != 0)
                        return -EOPNOTSUPP;
 
                /*
 
 
 enum cipher rt2x00crypto_key_to_cipher(struct ieee80211_key_conf *key)
 {
-       switch (key->alg) {
-       case ALG_WEP:
-               if (key->keylen == WLAN_KEY_LEN_WEP40)
-                       return CIPHER_WEP64;
-               else
-                       return CIPHER_WEP128;
-       case ALG_TKIP:
+       switch (key->cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+               return CIPHER_WEP64;
+       case WLAN_CIPHER_SUITE_WEP104:
+               return CIPHER_WEP128;
+       case WLAN_CIPHER_SUITE_TKIP:
                return CIPHER_TKIP;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                return CIPHER_AES;
        default:
                return CIPHER_NONE;
                overhead += key->iv_len;
 
        if (!(key->flags & IEEE80211_KEY_FLAG_GENERATE_MMIC)) {
-               if (key->alg == ALG_TKIP)
+               if (key->cipher == WLAN_CIPHER_SUITE_TKIP)
                        overhead += 8;
        }
 
 
                               struct ieee80211_key_conf *mac80211_key,
                               const u8 *addr)
 {
-       switch (mac80211_key->alg) {
-       case ALG_WEP:
+       switch (mac80211_key->cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                if (is_broadcast_ether_addr(addr))
                        key->key_type = KEY_WEP_DEFAULT;
                else
 
                mac80211_key->hw_key_idx = mac80211_key->keyidx;
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                if (is_broadcast_ether_addr(addr))
                        key->key_type = KEY_TKIP_MIC_GROUP;
                else
 
                mac80211_key->hw_key_idx = mac80211_key->keyidx;
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                if (is_broadcast_ether_addr(addr))
                        key->key_type = KEY_AES_GROUP;
                else
                mac80211_key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
                break;
        default:
-               wl1251_error("Unknown key algo 0x%x", mac80211_key->alg);
+               wl1251_error("Unknown key cipher 0x%x", mac80211_key->cipher);
                return -EOPNOTSUPP;
        }
 
        wl1251_debug(DEBUG_CRYPT, "CMD: 0x%x", cmd);
        wl1251_dump(DEBUG_CRYPT, "ADDR: ", addr, ETH_ALEN);
        wl1251_debug(DEBUG_CRYPT, "Key: algo:0x%x, id:%d, len:%d flags 0x%x",
-                    key->alg, key->keyidx, key->keylen, key->flags);
+                    key->cipher, key->keyidx, key->keylen, key->flags);
        wl1251_dump(DEBUG_CRYPT, "KEY: ", key->key, key->keylen);
 
        if (is_zero_ether_addr(addr)) {
 
        tx_hdr = (struct tx_double_buffer_desc *) skb->data;
 
        if (control->control.hw_key &&
-           control->control.hw_key->alg == ALG_TKIP) {
+           control->control.hw_key->cipher == WLAN_CIPHER_SUITE_TKIP) {
                int hdrlen;
                __le16 fc;
                u16 length;
         */
        frame = skb_pull(skb, sizeof(struct tx_double_buffer_desc));
        if (info->control.hw_key &&
-           info->control.hw_key->alg == ALG_TKIP) {
+           info->control.hw_key->cipher == WLAN_CIPHER_SUITE_TKIP) {
                hdrlen = ieee80211_get_hdrlen_from_skb(skb);
                memmove(frame + WL1251_TKIP_IV_SPACE, frame, hdrlen);
                skb_pull(skb, WL1251_TKIP_IV_SPACE);
 
        wl1271_debug(DEBUG_CRYPT, "CMD: 0x%x", cmd);
        wl1271_dump(DEBUG_CRYPT, "ADDR: ", addr, ETH_ALEN);
        wl1271_debug(DEBUG_CRYPT, "Key: algo:0x%x, id:%d, len:%d flags 0x%x",
-                    key_conf->alg, key_conf->keyidx,
+                    key_conf->cipher, key_conf->keyidx,
                     key_conf->keylen, key_conf->flags);
        wl1271_dump(DEBUG_CRYPT, "KEY: ", key_conf->key, key_conf->keylen);
 
        if (ret < 0)
                goto out_unlock;
 
-       switch (key_conf->alg) {
-       case ALG_WEP:
+       switch (key_conf->cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                key_type = KEY_WEP;
 
                key_conf->hw_key_idx = key_conf->keyidx;
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                key_type = KEY_TKIP;
 
                key_conf->hw_key_idx = key_conf->keyidx;
                tx_seq_32 = WL1271_TX_SECURITY_HI32(wl->tx_security_seq);
                tx_seq_16 = WL1271_TX_SECURITY_LO16(wl->tx_security_seq);
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                key_type = KEY_AES;
 
                key_conf->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
                tx_seq_16 = WL1271_TX_SECURITY_LO16(wl->tx_security_seq);
                break;
        default:
-               wl1271_error("Unknown key algo 0x%x", key_conf->alg);
+               wl1271_error("Unknown key algo 0x%x", key_conf->cipher);
 
                ret = -EOPNOTSUPP;
                goto out_sleep;
 
        info = IEEE80211_SKB_CB(skb);
 
        if (info->control.hw_key &&
-           info->control.hw_key->alg == ALG_TKIP)
+           info->control.hw_key->cipher == WLAN_CIPHER_SUITE_TKIP)
                extra = WL1271_TKIP_IV_SPACE;
 
        if (info->control.hw_key) {
 
        /* remove TKIP header space if present */
        if (info->control.hw_key &&
-           info->control.hw_key->alg == ALG_TKIP) {
+           info->control.hw_key->cipher == WLAN_CIPHER_SUITE_TKIP) {
                int hdrlen = ieee80211_get_hdrlen_from_skb(skb);
                memmove(skb->data + WL1271_TKIP_IV_SPACE, skb->data, hdrlen);
                skb_pull(skb, WL1271_TKIP_IV_SPACE);
 
        return false;
 }
 
-/**
- * enum ieee80211_key_alg - key algorithm
- * @ALG_WEP: WEP40 or WEP104
- * @ALG_TKIP: TKIP
- * @ALG_CCMP: CCMP (AES)
- * @ALG_AES_CMAC: AES-128-CMAC
- */
-enum ieee80211_key_alg {
-       ALG_WEP,
-       ALG_TKIP,
-       ALG_CCMP,
-       ALG_AES_CMAC,
-};
-
 /**
  * enum ieee80211_key_flags - key flags
  *
  * @hw_key_idx: To be set by the driver, this is the key index the driver
  *     wants to be given when a frame is transmitted and needs to be
  *     encrypted in hardware.
- * @alg: The key algorithm.
+ * @cipher: The key's cipher suite selector.
  * @flags: key flags, see &enum ieee80211_key_flags.
  * @keyidx: the key index (0-3)
  * @keylen: key material length
  * @iv_len: The IV length for this key type
  */
 struct ieee80211_key_conf {
-       enum ieee80211_key_alg alg;
+       u32 cipher;
        u8 icv_len;
        u8 iv_len;
        u8 hw_key_idx;
 
 {
        struct ieee80211_sub_if_data *sdata;
        struct sta_info *sta = NULL;
-       enum ieee80211_key_alg alg;
        struct ieee80211_key *key;
        int err;
 
 
        sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 
+       /* reject WEP and TKIP keys if WEP failed to initialize */
        switch (params->cipher) {
        case WLAN_CIPHER_SUITE_WEP40:
-       case WLAN_CIPHER_SUITE_WEP104:
-               alg = ALG_WEP;
-               break;
        case WLAN_CIPHER_SUITE_TKIP:
-               alg = ALG_TKIP;
-               break;
-       case WLAN_CIPHER_SUITE_CCMP:
-               alg = ALG_CCMP;
-               break;
-       case WLAN_CIPHER_SUITE_AES_CMAC:
-               alg = ALG_AES_CMAC;
+       case WLAN_CIPHER_SUITE_WEP104:
+               if (IS_ERR(sdata->local->wep_tx_tfm))
+                       return -EINVAL;
                break;
        default:
-               return -EINVAL;
+               break;
        }
 
-       /* reject WEP and TKIP keys if WEP failed to initialize */
-       if ((alg == ALG_WEP || alg == ALG_TKIP) &&
-           IS_ERR(sdata->local->wep_tx_tfm))
-               return -EINVAL;
-
-       key = ieee80211_key_alloc(alg, key_idx, params->key_len, params->key,
-                                 params->seq_len, params->seq);
+       key = ieee80211_key_alloc(params->cipher, key_idx, params->key_len,
+                                 params->key, params->seq_len, params->seq);
        if (IS_ERR(key))
                return PTR_ERR(key);
 
 
        memset(¶ms, 0, sizeof(params));
 
-       switch (key->conf.alg) {
-       case ALG_TKIP:
-               params.cipher = WLAN_CIPHER_SUITE_TKIP;
+       params.cipher = key->conf.cipher;
 
+       switch (key->conf.cipher) {
+       case WLAN_CIPHER_SUITE_TKIP:
                iv32 = key->u.tkip.tx.iv32;
                iv16 = key->u.tkip.tx.iv16;
 
                params.seq = seq;
                params.seq_len = 6;
                break;
-       case ALG_CCMP:
-               params.cipher = WLAN_CIPHER_SUITE_CCMP;
+       case WLAN_CIPHER_SUITE_CCMP:
                seq[0] = key->u.ccmp.tx_pn[5];
                seq[1] = key->u.ccmp.tx_pn[4];
                seq[2] = key->u.ccmp.tx_pn[3];
                params.seq = seq;
                params.seq_len = 6;
                break;
-       case ALG_WEP:
-               if (key->conf.keylen == 5)
-                       params.cipher = WLAN_CIPHER_SUITE_WEP40;
-               else
-                       params.cipher = WLAN_CIPHER_SUITE_WEP104;
-               break;
-       case ALG_AES_CMAC:
-               params.cipher = WLAN_CIPHER_SUITE_AES_CMAC;
+       case WLAN_CIPHER_SUITE_AES_CMAC:
                seq[0] = key->u.aes_cmac.tx_pn[5];
                seq[1] = key->u.aes_cmac.tx_pn[4];
                seq[2] = key->u.aes_cmac.tx_pn[3];
 
                                  char __user *userbuf,
                                  size_t count, loff_t *ppos)
 {
-       char *alg;
+       char buf[15];
        struct ieee80211_key *key = file->private_data;
+       u32 c = key->conf.cipher;
 
-       switch (key->conf.alg) {
-       case ALG_WEP:
-               alg = "WEP\n";
-               break;
-       case ALG_TKIP:
-               alg = "TKIP\n";
-               break;
-       case ALG_CCMP:
-               alg = "CCMP\n";
-               break;
-       case ALG_AES_CMAC:
-               alg = "AES-128-CMAC\n";
-               break;
-       default:
-               return 0;
-       }
-       return simple_read_from_buffer(userbuf, count, ppos, alg, strlen(alg));
+       sprintf(buf, "%.2x-%.2x-%.2x:%d\n",
+               c >> 24, (c >> 16) & 0xff, (c >> 8) & 0xff, c & 0xff);
+       return simple_read_from_buffer(userbuf, count, ppos, buf, strlen(buf));
 }
 KEY_OPS(algorithm);
 
        int len;
        struct ieee80211_key *key = file->private_data;
 
-       switch (key->conf.alg) {
-       case ALG_WEP:
+       switch (key->conf.cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                len = scnprintf(buf, sizeof(buf), "\n");
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                len = scnprintf(buf, sizeof(buf), "%08x %04x\n",
                                key->u.tkip.tx.iv32,
                                key->u.tkip.tx.iv16);
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                tpn = key->u.ccmp.tx_pn;
                len = scnprintf(buf, sizeof(buf), "%02x%02x%02x%02x%02x%02x\n",
                                tpn[0], tpn[1], tpn[2], tpn[3], tpn[4], tpn[5]);
                break;
-       case ALG_AES_CMAC:
+       case WLAN_CIPHER_SUITE_AES_CMAC:
                tpn = key->u.aes_cmac.tx_pn;
                len = scnprintf(buf, sizeof(buf), "%02x%02x%02x%02x%02x%02x\n",
                                tpn[0], tpn[1], tpn[2], tpn[3], tpn[4],
        int i, len;
        const u8 *rpn;
 
-       switch (key->conf.alg) {
-       case ALG_WEP:
+       switch (key->conf.cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                len = scnprintf(buf, sizeof(buf), "\n");
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                for (i = 0; i < NUM_RX_DATA_QUEUES; i++)
                        p += scnprintf(p, sizeof(buf)+buf-p,
                                       "%08x %04x\n",
                                       key->u.tkip.rx[i].iv16);
                len = p - buf;
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                for (i = 0; i < NUM_RX_DATA_QUEUES + 1; i++) {
                        rpn = key->u.ccmp.rx_pn[i];
                        p += scnprintf(p, sizeof(buf)+buf-p,
                }
                len = p - buf;
                break;
-       case ALG_AES_CMAC:
+       case WLAN_CIPHER_SUITE_AES_CMAC:
                rpn = key->u.aes_cmac.rx_pn;
                p += scnprintf(p, sizeof(buf)+buf-p,
                               "%02x%02x%02x%02x%02x%02x\n",
        char buf[20];
        int len;
 
-       switch (key->conf.alg) {
-       case ALG_CCMP:
+       switch (key->conf.cipher) {
+       case WLAN_CIPHER_SUITE_CCMP:
                len = scnprintf(buf, sizeof(buf), "%u\n", key->u.ccmp.replays);
                break;
-       case ALG_AES_CMAC:
+       case WLAN_CIPHER_SUITE_AES_CMAC:
                len = scnprintf(buf, sizeof(buf), "%u\n",
                                key->u.aes_cmac.replays);
                break;
        char buf[20];
        int len;
 
-       switch (key->conf.alg) {
-       case ALG_AES_CMAC:
+       switch (key->conf.cipher) {
+       case WLAN_CIPHER_SUITE_AES_CMAC:
                len = scnprintf(buf, sizeof(buf), "%u\n",
                                key->u.aes_cmac.icverrors);
                break;
 
                LOCAL_ENTRY
                VIF_ENTRY
                STA_ENTRY
-               __field(enum ieee80211_key_alg, alg)
+               __field(u32, cipher)
                __field(u8, hw_key_idx)
                __field(u8, flags)
                __field(s8, keyidx)
                LOCAL_ASSIGN;
                VIF_ASSIGN;
                STA_ASSIGN;
-               __entry->alg = key->alg;
+               __entry->cipher = key->cipher;
                __entry->flags = key->flags;
                __entry->keyidx = key->keyidx;
                __entry->hw_key_idx = key->hw_key_idx;
 
        }
 }
 
-struct ieee80211_key *ieee80211_key_alloc(enum ieee80211_key_alg alg,
-                                         int idx,
-                                         size_t key_len,
+struct ieee80211_key *ieee80211_key_alloc(u32 cipher, int idx, size_t key_len,
                                          const u8 *key_data,
                                          size_t seq_len, const u8 *seq)
 {
        key->conf.flags = 0;
        key->flags = 0;
 
-       key->conf.alg = alg;
+       key->conf.cipher = cipher;
        key->conf.keyidx = idx;
        key->conf.keylen = key_len;
-       switch (alg) {
-       case ALG_WEP:
+       switch (cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                key->conf.iv_len = WEP_IV_LEN;
                key->conf.icv_len = WEP_ICV_LEN;
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                key->conf.iv_len = TKIP_IV_LEN;
                key->conf.icv_len = TKIP_ICV_LEN;
                if (seq) {
                        }
                }
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                key->conf.iv_len = CCMP_HDR_LEN;
                key->conf.icv_len = CCMP_MIC_LEN;
                if (seq) {
                                                seq[CCMP_PN_LEN - j - 1];
                }
                break;
-       case ALG_AES_CMAC:
+       case WLAN_CIPHER_SUITE_AES_CMAC:
                key->conf.iv_len = 0;
                key->conf.icv_len = sizeof(struct ieee80211_mmie);
                if (seq)
        memcpy(key->conf.key, key_data, key_len);
        INIT_LIST_HEAD(&key->list);
 
-       if (alg == ALG_CCMP) {
+       if (cipher == WLAN_CIPHER_SUITE_CCMP) {
                /*
                 * Initialize AES key state here as an optimization so that
                 * it does not need to be initialized for every packet.
                }
        }
 
-       if (alg == ALG_AES_CMAC) {
+       if (cipher == WLAN_CIPHER_SUITE_AES_CMAC) {
                /*
                 * Initialize AES key state here as an optimization so that
                 * it does not need to be initialized for every packet.
        if (key->local)
                ieee80211_key_disable_hw_accel(key);
 
-       if (key->conf.alg == ALG_CCMP)
+       if (key->conf.cipher == WLAN_CIPHER_SUITE_CCMP)
                ieee80211_aes_key_free(key->u.ccmp.tfm);
-       if (key->conf.alg == ALG_AES_CMAC)
+       if (key->conf.cipher == WLAN_CIPHER_SUITE_AES_CMAC)
                ieee80211_aes_cmac_key_free(key->u.aes_cmac.tfm);
        if (key->local)
                ieee80211_debugfs_key_remove(key);
 
        struct ieee80211_key_conf conf;
 };
 
-struct ieee80211_key *ieee80211_key_alloc(enum ieee80211_key_alg alg,
-                                         int idx,
-                                         size_t key_len,
+struct ieee80211_key *ieee80211_key_alloc(u32 cipher, int idx, size_t key_len,
                                          const u8 *key_data,
                                          size_t seq_len, const u8 *seq);
 /*
 
                 * pairwise or station-to-station keys, but for WEP we allow
                 * using a key index as well.
                 */
-               if (rx->key && rx->key->conf.alg != ALG_WEP &&
+               if (rx->key && rx->key->conf.cipher != WLAN_CIPHER_SUITE_WEP40 &&
+                   rx->key->conf.cipher != WLAN_CIPHER_SUITE_WEP104 &&
                    !is_multicast_ether_addr(hdr->addr1))
                        rx->key = NULL;
        }
                return RX_DROP_UNUSABLE;
        /* the hdr variable is invalid now! */
 
-       switch (rx->key->conf.alg) {
-       case ALG_WEP:
+       switch (rx->key->conf.cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                /* Check for weak IVs if possible */
                if (rx->sta && ieee80211_is_data(fc) &&
                    (!(status->flag & RX_FLAG_IV_STRIPPED) ||
 
                result = ieee80211_crypto_wep_decrypt(rx);
                break;
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                result = ieee80211_crypto_tkip_decrypt(rx);
                break;
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                result = ieee80211_crypto_ccmp_decrypt(rx);
                break;
-       case ALG_AES_CMAC:
+       case WLAN_CIPHER_SUITE_AES_CMAC:
                result = ieee80211_crypto_aes_cmac_decrypt(rx);
                break;
        }
                /* This is the first fragment of a new frame. */
                entry = ieee80211_reassemble_add(rx->sdata, frag, seq,
                                                 rx->queue, &(rx->skb));
-               if (rx->key && rx->key->conf.alg == ALG_CCMP &&
+               if (rx->key && rx->key->conf.cipher == WLAN_CIPHER_SUITE_CCMP &&
                    ieee80211_has_protected(fc)) {
                        int queue = ieee80211_is_mgmt(fc) ?
                                NUM_RX_DATA_QUEUES : rx->queue;
                int i;
                u8 pn[CCMP_PN_LEN], *rpn;
                int queue;
-               if (!rx->key || rx->key->conf.alg != ALG_CCMP)
+               if (!rx->key || rx->key->conf.cipher != WLAN_CIPHER_SUITE_CCMP)
                        return RX_DROP_UNUSABLE;
                memcpy(pn, entry->last_pn, CCMP_PN_LEN);
                for (i = CCMP_PN_LEN - 1; i >= 0; i--) {
 
                tx->key->tx_rx_count++;
                /* TODO: add threshold stuff again */
 
-               switch (tx->key->conf.alg) {
-               case ALG_WEP:
+               switch (tx->key->conf.cipher) {
+               case WLAN_CIPHER_SUITE_WEP40:
+               case WLAN_CIPHER_SUITE_WEP104:
                        if (ieee80211_is_auth(hdr->frame_control))
                                break;
-               case ALG_TKIP:
+               case WLAN_CIPHER_SUITE_TKIP:
                        if (!ieee80211_is_data_present(hdr->frame_control))
                                tx->key = NULL;
                        break;
-               case ALG_CCMP:
+               case WLAN_CIPHER_SUITE_CCMP:
                        if (!ieee80211_is_data_present(hdr->frame_control) &&
                            !ieee80211_use_mfp(hdr->frame_control, tx->sta,
                                               tx->skb))
                                           IEEE80211_KEY_FLAG_SW_MGMT) &&
                                        ieee80211_is_mgmt(hdr->frame_control);
                        break;
-               case ALG_AES_CMAC:
+               case WLAN_CIPHER_SUITE_AES_CMAC:
                        if (!ieee80211_is_mgmt(hdr->frame_control))
                                tx->key = NULL;
                        break;
        if (!tx->key)
                return TX_CONTINUE;
 
-       switch (tx->key->conf.alg) {
-       case ALG_WEP:
+       switch (tx->key->conf.cipher) {
+       case WLAN_CIPHER_SUITE_WEP40:
+       case WLAN_CIPHER_SUITE_WEP104:
                return ieee80211_crypto_wep_encrypt(tx);
-       case ALG_TKIP:
+       case WLAN_CIPHER_SUITE_TKIP:
                return ieee80211_crypto_tkip_encrypt(tx);
-       case ALG_CCMP:
+       case WLAN_CIPHER_SUITE_CCMP:
                return ieee80211_crypto_ccmp_encrypt(tx);
-       case ALG_AES_CMAC:
+       case WLAN_CIPHER_SUITE_AES_CMAC:
                return ieee80211_crypto_aes_cmac_encrypt(tx);
        }
 
 
 
        keyidx = skb->data[hdrlen + 3] >> 6;
 
-       if (!key || keyidx != key->conf.keyidx || key->conf.alg != ALG_WEP)
+       if (!key || keyidx != key->conf.keyidx)
                return -1;
 
        klen = 3 + key->conf.keylen;
 
        int tail;
 
        hdr = (struct ieee80211_hdr *)skb->data;
-       if (!tx->key || tx->key->conf.alg != ALG_TKIP || skb->len < 24 ||
-           !ieee80211_is_data_present(hdr->frame_control))
+       if (!tx->key || tx->key->conf.cipher != WLAN_CIPHER_SUITE_TKIP ||
+           skb->len < 24 || !ieee80211_is_data_present(hdr->frame_control))
                return TX_CONTINUE;
 
        hdrlen = ieee80211_hdrlen(hdr->frame_control);
        if (status->flag & RX_FLAG_MMIC_STRIPPED)
                return RX_CONTINUE;
 
-       if (!rx->key || rx->key->conf.alg != ALG_TKIP ||
+       if (!rx->key || rx->key->conf.cipher != WLAN_CIPHER_SUITE_TKIP ||
            !ieee80211_has_protected(hdr->frame_control) ||
            !ieee80211_is_data_present(hdr->frame_control))
                return RX_CONTINUE;