]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ath10k: set WMI_PEER_AUTHORIZE after a firmware crash
authorWen Gong <wgong@codeaurora.org>
Wed, 27 Nov 2019 03:19:24 +0000 (03:19 +0000)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 29 Nov 2019 07:43:12 +0000 (09:43 +0200)
After the firmware crashes ath10k recovers via ieee80211_reconfig(),
which eventually leads to firmware configuration and including the
encryption keys. However, because there is no new auth/assoc and
4-way-handshake, and firmware set the authorize flag after
4-way-handshake, so the authorize flag in firmware is not set in
firmware without 4-way-handshake. This will lead to a failure of data
transmission after recovery done when using encrypted connections like
WPA-PSK. Set authorize flag after installing keys to firmware will fix
the issue.

This was noticed by testing firmware crashing using simulate_fw_crash
debugfs file.

Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00007-QCARMSWP-1.

Signed-off-by: Wen Gong <wgong@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath10k/mac.c

index 6c6eb9341e6d4cd7b53566c2d085cbf94a72d4ae..767c7bf169758fb7bba7a5c45682354b020435cf 100644 (file)
@@ -6329,6 +6329,9 @@ static int ath10k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
        if (sta && sta->tdls)
                ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
                                          ar->wmi.peer_param->authorize, 1);
+       else if (sta && cmd == SET_KEY && (key->flags & IEEE80211_KEY_FLAG_PAIRWISE))
+               ath10k_wmi_peer_set_param(ar, arvif->vdev_id, peer_addr,
+                                         ar->wmi.peer_param->authorize, 1);
 
 exit:
        mutex_unlock(&ar->conf_mutex);