forked from openwrt/openwrt
-
-
Notifications
You must be signed in to change notification settings - Fork 66
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ath11k_nss: Fix Broadcast Issues After GTK Key Exchange
Patch resolves issues where certain brodcast frames like ARP or mDNS are not reliably transmitted after GTK key exchange. Signed-off-by: Sean Khan <[email protected]>
- Loading branch information
Showing
1 changed file
with
48 additions
and
0 deletions.
There are no files selected for viewing
48 changes: 48 additions & 0 deletions
48
...211/patches/nss/ath11k/999-905-ath11k-Revert-clear-the-keys-properly-when-DISABLE_K.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
From 52393e2ae12f18fb1a60578c24c46ebab292ddb6 Mon Sep 17 00:00:00 2001 | ||
From: Rameshkumar Sundaram <[email protected]> | ||
Date: Mon, 28 Mar 2022 13:21:04 +0530 | ||
Subject: [PATCH] ath11k: Revert: clear the keys properly when DISABLE_KEY | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
Reverting the Upstream clear key change added as a part of | ||
436a4e886598 ("ath11k: clear the keys properly | ||
when DISABLE_KEY") | ||
This change exposed a race in WLAN Firmware where target asserts | ||
are seen frequently due FW not synchronizing ath11k host’s clear | ||
key commands(CIPHER changes to NONE) with frames in TX queue. | ||
Hence reverting this change untill FW fixes to synchronize | ||
ath11k host’s clear key command are available. | ||
|
||
Signed-off-by: Rameshkumar Sundaram <[email protected]> | ||
--- | ||
drivers/net/wireless/ath/ath11k/mac.c | 4 +++- | ||
drivers/net/wireless/ath/ath11k/wmi.c | 3 +-- | ||
2 files changed, 4 insertions(+), 3 deletions(-) | ||
|
||
--- a/drivers/net/wireless/ath/ath11k/mac.c | ||
+++ b/drivers/net/wireless/ath/ath11k/mac.c | ||
@@ -4312,7 +4312,9 @@ static int ath11k_install_key(struct ath | ||
arg.group_key_idx = key->hw_key_idx; | ||
|
||
if (cmd == DISABLE_KEY) { | ||
- arg.key_cipher = WMI_CIPHER_NONE; | ||
+ /* TODO: Check if FW expects value other than NONE for del */ | ||
+ /* arg.key_cipher = WMI_CIPHER_NONE; */ | ||
+ arg.key_len = 0; | ||
arg.key_data = NULL; | ||
goto install; | ||
} | ||
--- a/drivers/net/wireless/ath/ath11k/wmi.c | ||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c | ||
@@ -1991,8 +1991,7 @@ int ath11k_wmi_vdev_install_key(struct a | ||
tlv = (struct wmi_tlv *)(skb->data + sizeof(*cmd)); | ||
tlv->header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_ARRAY_BYTE) | | ||
FIELD_PREP(WMI_TLV_LEN, key_len_aligned); | ||
- if (arg->key_data) | ||
- memcpy(tlv->value, (u8 *)arg->key_data, key_len_aligned); | ||
+ memcpy(tlv->value, (u8 *)arg->key_data, key_len_aligned); | ||
|
||
ret = ath11k_wmi_cmd_send(wmi, skb, WMI_VDEV_INSTALL_KEY_CMDID); | ||
if (ret) { |