From: Yingying Tang <[email protected]>
This patchset is for Rome PCIE chip, it will not affect other hardware
Yingying Tang (5):
mac80211: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer buffer STA feature
ath10k: Enable TDLS peer inactivity detection
ath10k: Avoid to set WEP key for TDLS peer
ath10k: Fix TDLS peer TX data failure issue on encryped AP
drivers/net/wireless/ath/ath10k/mac.c | 9 ++++-
drivers/net/wireless/ath/ath10k/wmi-tlv.c | 55 +++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/wmi-tlv.h | 23 ++++++++++++
drivers/net/wireless/ath/ath10k/wmi.h | 1 +
include/net/cfg80211.h | 3 ++
net/mac80211/tdls.c | 5 ++-
6 files changed, 94 insertions(+), 2 deletions(-)
--
1.7.9.5
From: Yingying Tang <[email protected]>
TDLS peer do not need WEP key. Setting WEP key will lead
to TDLS setup failure. Add fix to avoid setting WEP key
for TDLS peer.
Signed-off-by: Yingying Tang <[email protected]>
---
drivers/net/wireless/ath/ath10k/mac.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 399f9ba..f6702cb 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -2966,7 +2966,7 @@ static int ath10k_station_assoc(struct ath10k *ar,
}
/* Plumb cached keys only for static WEP */
- if (arvif->def_wep_key_idx != -1) {
+ if ((arvif->def_wep_key_idx != -1) && (!sta->tdls)) {
ret = ath10k_install_peer_wep_keys(arvif, sta->addr);
if (ret) {
ath10k_warn(ar, "failed to install peer wep keys for vdev %i: %d\n",
--
1.7.9.5
From: Yingying Tang <[email protected]>
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 <[email protected]>
---
drivers/net/wireless/ath/ath10k/mac.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index f6702cb..d2530f7 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -5841,6 +5841,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;
--
1.7.9.5