[PATCH ath-next v2] wifi: ath12k: Pass the correct value of each TID during a stop AMPDU session
Baochen Qiang
baochen.qiang at oss.qualcomm.com
Sun Mar 1 17:32:28 PST 2026
On 2/27/2026 7:01 PM, Reshma Immaculate Rajkumar wrote:
> 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.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.5-01651-QCAHKSWPL_SILICONZ-1
>
> Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
> Signed-off-by: Reshma Immaculate Rajkumar <reshma.rajkumar at oss.qualcomm.com>
> ---
> v2:
> * modify 'ADDBA' to 'DELBA' request in commit message
> drivers/net/wireless/ath/ath12k/dp_rx.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c
> index a32ee9f8061a..640f752eaa03 100644
> --- a/drivers/net/wireless/ath/ath12k/dp_rx.c
> +++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
> @@ -735,6 +735,7 @@ int ath12k_dp_rx_ampdu_stop(struct ath12k *ar,
> struct ath12k_dp *dp = ath12k_ab_to_dp(ab);
> struct ath12k_dp_link_peer *peer;
> struct ath12k_sta *ahsta = ath12k_sta_to_ahsta(params->sta);
> + struct ath12k_dp_rx_tid *rx_tid;
> struct ath12k_link_sta *arsta;
> int vdev_id;
> bool active;
> @@ -770,7 +771,8 @@ int ath12k_dp_rx_ampdu_stop(struct ath12k *ar,
> return 0;
> }
>
> - ret = ath12k_dp_arch_peer_rx_tid_reo_update(dp, peer, peer->dp_peer->rx_tid,
> + rx_tid = &peer->dp_peer->rx_tid[params->tid];
> + ret = ath12k_dp_arch_peer_rx_tid_reo_update(dp, peer, rx_tid,
> 1, 0, false);
> spin_unlock_bh(&dp->dp_lock);
> if (ret) {
>
> base-commit: 8bf22c33e7a172fbc72464f4cc484d23a6b412ba
Reviewed-by: Baochen Qiang <baochen.qiang at oss.qualcomm.com>
More information about the ath12k
mailing list