linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv2] ath11k: Invalidate cached reo ring entry before accessing it
@ 2022-02-16  8:32 Rameshkumar Sundaram
  2022-02-21 10:27 ` Kalle Valo
  0 siblings, 1 reply; 2+ messages in thread
From: Rameshkumar Sundaram @ 2022-02-16  8:32 UTC (permalink / raw)
  To: ath11k; +Cc: linux-wireless, Rameshkumar Sundaram

REO2SW ring descriptor is currently allocated in cacheable memory.
While reaping reo ring entries on second trial after updating head
pointer, first entry is not invalidated before accessing it.

This results in host reaping and using cached descriptor which is
already overwritten in memory by DMA device (HW).
Since the contents of descriptor(buffer id, peer info and other information
bits) are outdated host throws errors like below while parsing corresponding
MSDU's and drops them.

[347712.048904] ath11k_pci 0004:01:00.0: msdu_done bit in attention is not set
[349173.355503] ath11k_pci 0004:01:00.0: frame rx with invalid buf_id 962

Move the try_again: label above  ath11k_hal_srng_access_begin()
so that first entry will be invalidated and prefetched.

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1

Fixes: 6452f0a3d565 ("ath11k: allocate dst ring descriptors from cacheable memory")
Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>

---
v2:
  - Updated commit log to describe the symptoms and the bug being fixed.
---
 drivers/net/wireless/ath/ath11k/dp_rx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless/ath/ath11k/dp_rx.c
index 89b77b94..99c7e8a 100644
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
@@ -2652,9 +2652,9 @@ int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id,
 
 	spin_lock_bh(&srng->lock);
 
+try_again:
 	ath11k_hal_srng_access_begin(ab, srng);
 
-try_again:
 	while (likely(desc =
 	      (struct hal_reo_dest_ring *)ath11k_hal_srng_dst_get_next_entry(ab,
 									     srng))) {
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCHv2] ath11k: Invalidate cached reo ring entry before accessing it
  2022-02-16  8:32 [PATCHv2] ath11k: Invalidate cached reo ring entry before accessing it Rameshkumar Sundaram
@ 2022-02-21 10:27 ` Kalle Valo
  0 siblings, 0 replies; 2+ messages in thread
From: Kalle Valo @ 2022-02-21 10:27 UTC (permalink / raw)
  To: Rameshkumar Sundaram; +Cc: ath11k, linux-wireless, Rameshkumar Sundaram

Rameshkumar Sundaram <quic_ramess@quicinc.com> wrote:

> REO2SW ring descriptor is currently allocated in cacheable memory.
> While reaping reo ring entries on second trial after updating head
> pointer, first entry is not invalidated before accessing it.
> 
> This results in host reaping and using cached descriptor which is
> already overwritten in memory by DMA device (HW).
> Since the contents of descriptor(buffer id, peer info and other information
> bits) are outdated host throws errors like below while parsing corresponding
> MSDU's and drops them.
> 
> [347712.048904] ath11k_pci 0004:01:00.0: msdu_done bit in attention is not set
> [349173.355503] ath11k_pci 0004:01:00.0: frame rx with invalid buf_id 962
> 
> Move the try_again: label above  ath11k_hal_srng_access_begin()
> so that first entry will be invalidated and prefetched.
> 
> Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1
> 
> Fixes: 6452f0a3d565 ("ath11k: allocate dst ring descriptors from cacheable memory")
> Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

Patch applied to ath-next branch of ath.git, thanks.

f2180ccb52b5 ath11k: Invalidate cached reo ring entry before accessing it

-- 
https://patchwork.kernel.org/project/linux-wireless/patch/1645000354-32558-1-git-send-email-quic_ramess@quicinc.com/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-02-21 10:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-16  8:32 [PATCHv2] ath11k: Invalidate cached reo ring entry before accessing it Rameshkumar Sundaram
2022-02-21 10:27 ` Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).