ath10k: fix TDLS peer TX data failure issue on encryped AP
authorYingying Tang <yintang@qti.qualcomm.com>
Wed, 28 Mar 2018 09:15:35 +0000 (12:15 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 29 Mar 2018 09:00:19 +0000 (12:00 +0300)
For WPA encryption, QCA6174 firmware(version: WLAN.RM.4.4) will unblock
data when M4 was sent successfully. For other encryption which didn't need
4-way handshake firmware will unblock the data when peer authorized. Since
TDLS is 3-way handshake host need send authorize cmd to firmware to unblock
data.

Signed-off-by: Yingying Tang <yintang@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath10k/mac.c

index 659b23809b47c12a4bd5c8fb7629665818a05e93..0a249cd0662ecd491bc3ae6dcaa7b27b1d0aacb4 100644 (file)
@@ -5932,6 +5932,10 @@ static int ath10k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
                ath10k_warn(ar, "Peer %pM disappeared!\n", peer_addr);
        spin_unlock_bh(&ar->data_lock);
 
+       if (sta && sta->tdls)
+               ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
+                                         WMI_PEER_AUTHORIZE, 1);
+
 exit:
        mutex_unlock(&ar->conf_mutex);
        return ret;