[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