/* Copy WEP keys into adapter wep key fields */
        for (i = 0; i < 4; i++) {
                memcpy(&adapter->wep_keys[i], &assoc_req->wep_keys[i],
-                       sizeof(struct WLAN_802_11_KEY));
+                       sizeof(struct enc_key));
        }
        adapter->wep_tx_keyidx = assoc_req->wep_tx_keyidx;
 
                int i;
                for (i = 0; i < 4; i++) {
                        memcpy(&assoc_req->wep_keys[i], &adapter->wep_keys[i],
-                               sizeof(struct WLAN_802_11_KEY));
+                               sizeof(struct enc_key));
                }
        }
 
 
        if (!test_bit(ASSOC_FLAG_WPA_MCAST_KEY, &assoc_req->flags)) {
                memcpy(&assoc_req->wpa_mcast_key, &adapter->wpa_mcast_key,
-                       sizeof(struct WLAN_802_11_KEY));
+                       sizeof(struct enc_key));
        }
 
        if (!test_bit(ASSOC_FLAG_WPA_UCAST_KEY, &assoc_req->flags)) {
                memcpy(&assoc_req->wpa_unicast_key, &adapter->wpa_unicast_key,
-                       sizeof(struct WLAN_802_11_KEY));
+                       sizeof(struct enc_key));
        }
 
        if (!test_bit(ASSOC_FLAG_SECINFO, &assoc_req->flags)) {
 
 
                /* Copy key types and material to host command structure */
                for (i = 0; i < 4; i++) {
-                       struct WLAN_802_11_KEY * pkey = &assoc_req->wep_keys[i];
+                       struct enc_key * pkey = &assoc_req->wep_keys[i];
 
                        switch (pkey->len) {
                        case KEY_LEN_WEP_40:
 
 
 static void set_one_wpa_key(struct MrvlIEtype_keyParamSet * pkeyparamset,
-                            struct WLAN_802_11_KEY * pkey)
+                            struct enc_key * pkey)
 {
-       pkeyparamset->keytypeid = cpu_to_le16(pkey->type);
-
        if (pkey->flags & KEY_INFO_WPA_ENABLED) {
                pkeyparamset->keyinfo |= cpu_to_le16(KEY_INFO_WPA_ENABLED);
        }
        }
 
        pkeyparamset->type = cpu_to_le16(TLV_TYPE_KEY_MATERIAL);
+       pkeyparamset->keytypeid = cpu_to_le16(pkey->type);
        pkeyparamset->keylen = cpu_to_le16(pkey->len);
        memcpy(pkeyparamset->key, pkey->key, pkey->len);
        pkeyparamset->length = cpu_to_le16(  sizeof(pkeyparamset->keytypeid)
 
                while (buf_ptr < resp_end) {
                        struct MrvlIEtype_keyParamSet * pkeyparamset =
                            (struct MrvlIEtype_keyParamSet *) buf_ptr;
-                       struct WLAN_802_11_KEY * pkey;
-                       u16 key_info = le16_to_cpu(pkeyparamset->keyinfo);
+                       struct enc_key * pkey;
                        u16 param_set_len = le16_to_cpu(pkeyparamset->length);
-                       u8 * end;
                        u16 key_len = le16_to_cpu(pkeyparamset->keylen);
+                       u16 key_flags = le16_to_cpu(pkeyparamset->keyinfo);
+                       u16 key_type = le16_to_cpu(pkeyparamset->keytypeid);
+                       u8 * end;
 
                        end = (u8 *) pkeyparamset + sizeof (pkeyparamset->type)
                                                  + sizeof (pkeyparamset->length)
                        if (end > resp_end)
                                break;
 
-                       if (key_info & KEY_INFO_WPA_UNICAST)
+                       if (key_flags & KEY_INFO_WPA_UNICAST)
                                pkey = &adapter->wpa_unicast_key;
-                       else if (key_info & KEY_INFO_WPA_MCAST)
+                       else if (key_flags & KEY_INFO_WPA_MCAST)
                                pkey = &adapter->wpa_mcast_key;
                        else
                                break;
 
                        /* Copy returned key into driver */
-                       memset(pkey, 0, sizeof(struct WLAN_802_11_KEY));
+                       memset(pkey, 0, sizeof(struct enc_key));
                        if (key_len > sizeof(pkey->key))
                                break;
-                       pkey->type = le16_to_cpu(pkeyparamset->keytypeid);
-                       pkey->flags = le16_to_cpu(pkeyparamset->keyinfo);
-                       pkey->len = le16_to_cpu(pkeyparamset->keylen);
+                       pkey->type = key_type;
+                       pkey->flags = key_flags;
+                       pkey->len = key_len;
                        memcpy(pkey->key, pkeyparamset->key, pkey->len);
 
                        buf_ptr = end + 1;
 
 #define        CMD_F_HOSTCMD           (1 << 0)
 #define FW_CAPINFO_WPA         (1 << 0)
 
-/** WPA key LENGTH*/
-#define MRVL_MAX_KEY_WPA_KEY_LENGTH     32
-
 #define KEY_LEN_WPA_AES                        16
 #define KEY_LEN_WPA_TKIP               32
 #define KEY_LEN_WEP_104                        13
 
        u8 bssid[ETH_ALEN];
 
        /** WEP keys */
-       struct WLAN_802_11_KEY wep_keys[4];
+       struct enc_key wep_keys[4];
        u16 wep_tx_keyidx;
 
        /** WPA keys */
-       struct WLAN_802_11_KEY wpa_mcast_key;
-       struct WLAN_802_11_KEY wpa_unicast_key;
+       struct enc_key wpa_mcast_key;
+       struct enc_key wpa_unicast_key;
 
        struct wlan_802_11_security secinfo;
 
        struct wlan_802_11_security secinfo;
 
        /** WEP keys */
-       struct WLAN_802_11_KEY wep_keys[4];
+       struct enc_key wep_keys[4];
        u16 wep_tx_keyidx;
 
        /** WPA keys */
-       struct WLAN_802_11_KEY wpa_mcast_key;
-       struct WLAN_802_11_KEY wpa_unicast_key;
+       struct enc_key wpa_mcast_key;
+       struct enc_key wpa_unicast_key;
 
        /** WPA Information Elements*/
        u8 wpa_ie[MAX_WPA_IE_LEN];
 
        adapter->secinfo.wep_enabled = 0;
        for (i = 0; i < sizeof(adapter->wep_keys) / sizeof(adapter->wep_keys[0]);
             i++)
-               memset(&adapter->wep_keys[i], 0, sizeof(struct WLAN_802_11_KEY));
+               memset(&adapter->wep_keys[i], 0, sizeof(struct enc_key));
        adapter->wep_tx_keyidx = 0;
        adapter->secinfo.auth_mode = IW_AUTH_ALG_OPEN_SYSTEM;
        adapter->mode = IW_MODE_INFRA;
 
        wait_queue_head_t cmdwait_q;
 };
 
-/* WLAN_802_11_KEY
- *
- * Generic structure to hold all key types.  key type (WEP40, WEP104, TKIP, AES)
- * is determined from the keylength field.
- */
-struct WLAN_802_11_KEY {
-       __le32 len;
-       __le32 flags;  /* KEY_INFO_* from wlan_defs.h */
-       u8 key[MRVL_MAX_KEY_WPA_KEY_LENGTH];
-       __le16 type; /* KEY_TYPE_* from wlan_defs.h */
+/* Generic structure to hold all key types. */
+struct enc_key {
+       u16 len;
+       u16 flags;  /* KEY_INFO_* from wlan_defs.h */
+       u16 type; /* KEY_TYPE_* from wlan_defs.h */
+       u8 key[32];
 };
 
 struct IE_WPA {
 
                            int set_tx_key)
 {
        int ret = 0;
-       struct WLAN_802_11_KEY *pkey;
+       struct enc_key *pkey;
 
        lbs_deb_enter(LBS_DEB_WEXT);
 
        pkey = &assoc_req->wep_keys[index];
 
        if (key_length > 0) {
-               memset(pkey, 0, sizeof(struct WLAN_802_11_KEY));
+               memset(pkey, 0, sizeof(struct enc_key));
                pkey->type = KEY_TYPE_ID_WEP;
 
                /* Standardize the key length */
 {
        lbs_deb_enter(LBS_DEB_WEXT);
 
-       memset(&assoc_req->wpa_mcast_key, 0, sizeof (struct WLAN_802_11_KEY));
+       memset(&assoc_req->wpa_mcast_key, 0, sizeof (struct enc_key));
        assoc_req->wpa_mcast_key.flags = KEY_INFO_WPA_MCAST;
        set_bit(ASSOC_FLAG_WPA_MCAST_KEY, &assoc_req->flags);
 
-       memset(&assoc_req->wpa_unicast_key, 0, sizeof (struct WLAN_802_11_KEY));
+       memset(&assoc_req->wpa_unicast_key, 0, sizeof (struct enc_key));
        assoc_req->wpa_unicast_key.flags = KEY_INFO_WPA_UNICAST;
        set_bit(ASSOC_FLAG_WPA_UCAST_KEY, &assoc_req->flags);
 
                           && (adapter->secinfo.WPAenabled ||
                               adapter->secinfo.WPA2enabled)) {
                        /* WPA */
-                       struct WLAN_802_11_KEY * pkey = NULL;
+                       struct enc_key * pkey = NULL;
 
                        if (   adapter->wpa_mcast_key.len
                            && (adapter->wpa_mcast_key.flags & KEY_INFO_WPA_ENABLED))
                if (set_tx_key)
                        set_bit(ASSOC_FLAG_WEP_TX_KEYIDX, &assoc_req->flags);
        } else if ((alg == IW_ENCODE_ALG_TKIP) || (alg == IW_ENCODE_ALG_CCMP)) {
-               struct WLAN_802_11_KEY * pkey;
+               struct enc_key * pkey;
 
                /* validate key length */
                if (((alg == IW_ENCODE_ALG_TKIP)
                        set_bit(ASSOC_FLAG_WPA_UCAST_KEY, &assoc_req->flags);
                }
 
-               memset(pkey, 0, sizeof (struct WLAN_802_11_KEY));
+               memset(pkey, 0, sizeof (struct enc_key));
                memcpy(pkey->key, ext->key, ext->key_len);
                pkey->len = ext->key_len;
                if (pkey->len)