Skip to content

Commit 930e0ea

Browse files
LorenzoBianconinbd168
authored andcommitted
mt76: fix tkip configuration for mt7615/7663 devices
Fix Tx-Rx MIC overwrite during TKIP hw key configuration Fixes: 01cfc1b ("mt76: mt7615: add BIP_CMAC_128 cipher support") Tested-by: YN Chen <yn.chen@mediatek.com> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
1 parent d3a5d89 commit 930e0ea

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

  • drivers/net/wireless/mediatek/mt76/mt7615

drivers/net/wireless/mediatek/mt76/mt7615/mac.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,15 +1046,17 @@ int mt7615_mac_wtbl_update_key(struct mt7615_dev *dev,
10461046
if (cmd == SET_KEY) {
10471047
if (cipher == MT_CIPHER_TKIP) {
10481048
/* Rx/Tx MIC keys are swapped */
1049+
memcpy(data, key, 16);
10491050
memcpy(data + 16, key + 24, 8);
10501051
memcpy(data + 24, key + 16, 8);
1052+
} else {
1053+
if (cipher != MT_CIPHER_BIP_CMAC_128 && wcid->cipher)
1054+
memmove(data + 16, data, 16);
1055+
if (cipher != MT_CIPHER_BIP_CMAC_128 || !wcid->cipher)
1056+
memcpy(data, key, keylen);
1057+
else if (cipher == MT_CIPHER_BIP_CMAC_128)
1058+
memcpy(data + 16, key, 16);
10511059
}
1052-
if (cipher != MT_CIPHER_BIP_CMAC_128 && wcid->cipher)
1053-
memmove(data + 16, data, 16);
1054-
if (cipher != MT_CIPHER_BIP_CMAC_128 || !wcid->cipher)
1055-
memcpy(data, key, keylen);
1056-
else if (cipher == MT_CIPHER_BIP_CMAC_128)
1057-
memcpy(data + 16, key, 16);
10581060
} else {
10591061
if (wcid->cipher & ~BIT(cipher)) {
10601062
if (cipher != MT_CIPHER_BIP_CMAC_128)

0 commit comments

Comments
 (0)