[PATCH ath-next] wifi: ath12k: Fix packets received in WBM error ring with REO LUT enabled
Baochen Qiang
baochen.qiang at oss.qualcomm.com
Fri Jul 11 02:38:37 PDT 2025
On 7/10/2025 9:17 AM, Nithyanantham Paramasivam wrote:
> Currently, packets are being received into the WBM error ring when
> REO queue lookup is enabled, resulting in degraded RX performance.
> The issue arises because the REO queue LUT TID memory reference is
> set to zero-it's being assigned before the memory is allocated.
> Fix this by assigning the REO queue TID memory reference in the LUT
> immediately after memory allocation to ensure correct packet
> processing.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
>
> Reported-by: Tanguy Serrat <tanguy at squaremind.io>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220282
> Fixes: 3b9cbce6fdd3 ("wifi: ath12k: alloc REO queue per station")
> Signed-off-by: Nithyanantham Paramasivam <nithyanantham.paramasivam at oss.qualcomm.com>
> ---
> drivers/net/wireless/ath/ath12k/dp_rx.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c
> index ed325aa6322d..65b4c91e4fe5 100644
> --- a/drivers/net/wireless/ath/ath12k/dp_rx.c
> +++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
> @@ -1060,7 +1060,6 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_
> }
>
> rx_tid = &peer->rx_tid[tid];
> - paddr_aligned = rx_tid->qbuf.paddr_aligned;
> /* Update the tid queue if it is already setup */
> if (rx_tid->active) {
> ret = ath12k_peer_rx_tid_reo_update(ar, peer, rx_tid,
> @@ -1072,6 +1071,7 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_
> }
>
> if (!ab->hw_params->reoq_lut_support) {
> + paddr_aligned = rx_tid->qbuf.paddr_aligned;
> ret = ath12k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id,
> peer_mac,
> paddr_aligned, tid,
> @@ -1098,6 +1098,7 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_
> return ret;
> }
>
> + paddr_aligned = rx_tid->qbuf.paddr_aligned;
> if (ab->hw_params->reoq_lut_support) {
> /* Update the REO queue LUT at the corresponding peer id
> * and tid with qaddr.
>
> base-commit: 45bbd91fc41b7cb6319e45e6fd732c5c8a0c44e3
Reviewed-by: Baochen Qiang <quic_bqiang at quicinc.com>
More information about the ath12k
mailing list