Skip to content

Commit 164ade8

Browse files
committed
ath12k: pass the correct value of each TID during a stop AMPDU session
backport: https://lore.kernel.org/all/20260227110123.3726354-1-reshma.rajkumar@oss.qualcomm.com/ With traffic ongoing for data TID [TID 0], an DELBA request to stop AMPDU for the BA session was received on management TID [TID 4]. The corresponding TID number was incorrectly passed to stop the BA session, resulting in the BA session for data TIDs being stopped and the BA size being reduced to 1, causing an overall dip in TCP throughput. Fix this issue by passing the correct argument from ath12k_dp_rx_ampdu_stop() to ath12k_dp_arch_peer_rx_tid_reo_update() during an AMPDU stop session. Instead of passing peer->dp_peer->rx_tid, which is the base address of the array, corresponding to TID 0, pass the value of &peer->dp_peer->rx_tid[params->tid]. With this, the different TID numbers are accounted for. Signed-off-by: Arif Alam <arif.alam@netexperience.com>
1 parent 1a0ba9b commit 164ade8

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
From: Reshma Immaculate Rajkumar <reshma.rajkumar@oss.qualcomm.com>
2+
Date: Fri, 27 Feb 2026 16:31:23 +0530
3+
Subject: [PATCH] wifi: ath12k: Pass the correct value of each TID during a stop AMPDU session
4+
5+
With traffic ongoing for data TID [TID 0], an DELBA request to
6+
stop AMPDU for the BA session was received on management TID [TID 4].
7+
The corresponding TID number was incorrectly passed to stop the BA session,
8+
resulting in the BA session for data TIDs being stopped and the BA size
9+
being reduced to 1, causing an overall dip in TCP throughput.
10+
11+
Fix this issue by passing the correct argument from
12+
ath12k_dp_rx_ampdu_stop() to ath12k_dp_arch_peer_rx_tid_reo_update()
13+
during an AMPDU stop session. Instead of passing peer->dp_peer->rx_tid,
14+
which is the base address of the array, corresponding to TID 0, pass
15+
the value of &peer->dp_peer->rx_tid[params->tid]. With this, the
16+
different TID numbers are accounted for.
17+
18+
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.5-01651-QCAHKSWPL_SILICONZ-1
19+
20+
Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
21+
Signed-off-by: Reshma Immaculate Rajkumar <reshma.rajkumar@oss.qualcomm.com>
22+
---
23+
--- a/drivers/net/wireless/ath/ath12k/dp_rx.c
24+
+++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
25+
@@ -1280,6 +1280,7 @@ int ath12k_dp_rx_ampdu_stop(struct ath12
26+
struct ath12k_base *ab = ar->ab;
27+
struct ath12k_peer *peer;
28+
struct ath12k_sta *ahsta = ath12k_sta_to_ahsta(params->sta);
29+
+ struct ath12k_dp_rx_tid *rx_tid;
30+
struct ath12k_link_sta *arsta;
31+
int vdev_id;
32+
bool active;
33+
@@ -1307,7 +1308,8 @@ int ath12k_dp_rx_ampdu_stop(struct ath12
34+
return 0;
35+
}
36+
37+
- ret = ath12k_peer_rx_tid_reo_update(ab, peer, peer->rx_tid, 1, 0, false);
38+
+ rx_tid = &peer->rx_tid[params->tid];
39+
+ ret = ath12k_peer_rx_tid_reo_update(ab, peer, rx_tid, 1, 0, false);
40+
spin_unlock_bh(&ab->base_lock);
41+
if (ret) {
42+
ath12k_warn(ab, "failed to update reo for rx tid %d: %d\n",
43+
--
44+
2.34.1

0 commit comments

Comments
 (0)