struct mic_failure_t *mic_failure;
        struct michel_mic_t michel_mic;
        union iwreq_data wrqu;
+       unsigned int key_index = auth_type - 1;
+       struct wpa_key_t *key = &priv->wpa.key[key_index];
 
        eth_hdr = (struct ether_hdr *)(priv->rxp);
        eth_proto = ntohs(eth_hdr->h_proto);
              priv->wpa.group_suite == IW_AUTH_CIPHER_TKIP) ||
             (auth_type == TYPE_GMK2 &&
              priv->wpa.group_suite == IW_AUTH_CIPHER_TKIP)) &&
-           priv->wpa.key[auth_type - 1].key_len) {
+           key->key_len) {
                DPRINTK(4, "TKIP: protocol=%04X: size=%u\n",
                        eth_proto, priv->rx_size);
                /* MIC save */
                priv->rx_size = priv->rx_size - 8;
                if (auth_type > 0 && auth_type < 4) {   /* auth_type check */
                        MichaelMICFunction(&michel_mic,
-                                          (uint8_t *)priv->wpa.key[auth_type - 1].rx_mic_key,
+                                          (uint8_t *)key->rx_mic_key,
                                           (uint8_t *)priv->rxp,
                                           (int)priv->rx_size,
                                           (uint8_t)0,  /* priority */
                        /*  needed parameters: count, keyid, key type, TSC */
                        sprintf(buf,
                                "MLME-MICHAELMICFAILURE.indication(keyid=%d %scast addr=%pM)",
-                               auth_type - 1,
+                               key_index,
                                eth_hdr->h_dest[0] & 0x01 ? "broad" : "uni",
                                eth_hdr->h_source);
                        memset(&wrqu, 0, sizeof(wrqu));