Message ID | 20211115100441.33771-1-sven@narfation.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 436a4e88659842a7cf634d7cc088c8f2cc94ebf5 |
Delegated to: | Kalle Valo |
Headers | show |
Series | [v2,1/2] ath11k: clear the keys properly via DISABLE_KEY | expand |
Sven Eckelmann <sven@narfation.org> wrote: > DISABLE_KEY sets the key_len to 0, firmware will not delete the keys if > key_len is 0. Changing from security mode to open mode will cause mcast > to be still encrypted without vdev restart. > > Set the proper key_len for DISABLE_KEY cmd to clear the keys in > firmware. > > Tested-on: IPQ6018 hw1.0 AHB WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1 > > Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices") > Reported-by: Sven Eckelmann <sven@narfation.org> > Signed-off-by: Karthikeyan Kathirvel <kathirve@codeaurora.org> > [sven@narfation.org: split into separate patches, clean up commit message] > Signed-off-by: Sven Eckelmann <sven@narfation.org> > Signed-off-by: Kalle Valo <kvalo@codeaurora.org> 2 patches applied to ath-next branch of ath.git, thanks. 436a4e886598 ath11k: clear the keys properly via DISABLE_KEY 64bc3aa02ae7 ath11k: reset RSN/WPA present state for open BSS
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index 1cc55602787b..cdee7545e876 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -3316,9 +3316,7 @@ static int ath11k_install_key(struct ath11k_vif *arvif, return 0; if (cmd == DISABLE_KEY) { - /* TODO: Check if FW expects value other than NONE for del */ - /* arg.key_cipher = WMI_CIPHER_NONE; */ - arg.key_len = 0; + arg.key_cipher = WMI_CIPHER_NONE; arg.key_data = NULL; goto install; } diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c index 5ae2ef4680d6..d97be60689be 100644 --- a/drivers/net/wireless/ath/ath11k/wmi.c +++ b/drivers/net/wireless/ath/ath11k/wmi.c @@ -1689,7 +1689,8 @@ int ath11k_wmi_vdev_install_key(struct ath11k *ar, 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); - memcpy(tlv->value, (u8 *)arg->key_data, key_len_aligned); + if (arg->key_data) + memcpy(tlv->value, (u8 *)arg->key_data, key_len_aligned); ret = ath11k_wmi_cmd_send(wmi, skb, WMI_VDEV_INSTALL_KEY_CMDID); if (ret) {