ath11k_nss: WAR for association failure issue with WDS

Every 100 milliseconds, the station sends an "association request" and
the AP adds the peer and the AP responds to the station with an
"association response".

But "association response" takes time to reach the station. Because of
this, the station sends another "association request" to the AP.

In the second associate request, the AP removes the peer and re-adds
the station. Meanwhile, "association response" is reached to station
and station sends "QoS NULL" frame to AP.

The moment the station sends a QoS NULL frame to the ap, the peer on
the AP is deleted and the AP sends a de-authentication to the station.

To fix this issue, increased the assoc timeout period from 100 milli-
seconds to 500 milli seconds.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
Sean Khan
2024-08-01 11:41:56 -04:00
parent 8b844d56ce
commit 6976ba70ec

View File

@@ -0,0 +1,38 @@
From 3bce46935954d8439e980a2188a6befbb42a3803 Mon Sep 17 00:00:00 2001
From: Balamurugan Ramar <quic_bramar@quicinc.com>
Date: Wed, 8 May 2024 23:01:34 +0530
Subject: [PATCH] QSDK: mac80211: WAR for association failure issue with WDS
Every 100 milliseconds, the station sends an "association request" and
the AP adds the peer and the AP responds to the station with an
"association response".
But "association response" takes time to reach the station. Because of
this, the station sends another "association request" to the AP.
In the second associate request, the AP removes the peer and re-adds
the station. Meanwhile, "association response" is reached to station
and station sends "QoS NULL" frame to AP.
The moment the station sends a QoS NULL frame to the ap, the peer on
the AP is deleted and the AP sends a de-authentication to the station.
To fix this issue, increased the assoc timeout period from 100 milli-
seconds to 500 milli seconds.
Signed-off-by: Balamurugan Ramar <quic_bramar@quicinc.com>
---
net/mac80211/mlme.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -7144,7 +7144,7 @@ void ieee80211_sta_work(struct ieee80211
*/
if (status_acked) {
ifmgd->assoc_data->timeout =
- jiffies + IEEE80211_ASSOC_TIMEOUT_SHORT;
+ jiffies + IEEE80211_ASSOC_TIMEOUT_LONG;
run_again(sdata, ifmgd->assoc_data->timeout);
} else {
ifmgd->assoc_data->timeout = jiffies - 1;