rt2800: do not nullify initialization vector data
authorStanislaw Gruszka <sgruszka@redhat.com>
Sat, 15 Jun 2019 10:00:58 +0000 (12:00 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 25 Jun 2019 05:10:11 +0000 (08:10 +0300)
If we restart hw we should keep existing IV (initialization vector)
otherwise HW encryption will be broken after restart.

Also fix some coding style issues on the way.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ralink/rt2x00/rt2800lib.c

index 499e9afa0026264cf854a26253c2084667560f1b..32a4b84e6e05f8a4faaa30db4ab2df37923d8c22 100644 (file)
@@ -1647,14 +1647,15 @@ static void rt2800_config_wcid_attr_cipher(struct rt2x00_dev *rt2x00dev,
 
        offset = MAC_IVEIV_ENTRY(key->hw_key_idx);
 
-       memset(&iveiv_entry, 0, sizeof(iveiv_entry));
+       rt2800_register_multiread(rt2x00dev, offset,
+                                 &iveiv_entry, sizeof(iveiv_entry));
        if ((crypto->cipher == CIPHER_TKIP) ||
            (crypto->cipher == CIPHER_TKIP_NO_MIC) ||
            (crypto->cipher == CIPHER_AES))
                iveiv_entry.iv[3] |= 0x20;
        iveiv_entry.iv[3] |= key->keyidx << 6;
        rt2800_register_multiwrite(rt2x00dev, offset,
-                                     &iveiv_entry, sizeof(iveiv_entry));
+                                  &iveiv_entry, sizeof(iveiv_entry));
 }
 
 int rt2800_config_shared_key(struct rt2x00_dev *rt2x00dev,
@@ -6079,13 +6080,11 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
         * ASIC will keep garbage value after boot, clear encryption keys.
         */
        for (i = 0; i < 4; i++)
-               rt2800_register_write(rt2x00dev,
-                                        SHARED_KEY_MODE_ENTRY(i), 0);
+               rt2800_register_write(rt2x00dev, SHARED_KEY_MODE_ENTRY(i), 0);
 
        for (i = 0; i < 256; i++) {
                rt2800_config_wcid(rt2x00dev, NULL, i);
                rt2800_delete_wcid_attr(rt2x00dev, i);
-               rt2800_register_write(rt2x00dev, MAC_IVEIV_ENTRY(i), 0);
        }
 
        /*