Patch "ath11k: Invalidate cached reo ring entry before accessing it" has been added to the 5.17-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ath11k: Invalidate cached reo ring entry before accessing it

to the 5.17-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ath11k-invalidate-cached-reo-ring-entry-before-acces.patch
and it can be found in the queue-5.17 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c445f67323eb62396cfb683318d25e23178f1e85
Author: Rameshkumar Sundaram <quic_ramess@xxxxxxxxxxx>
Date:   Wed Feb 16 14:02:34 2022 +0530

    ath11k: Invalidate cached reo ring entry before accessing it
    
    [ Upstream commit f2180ccb52b5fd0876291ad2df37e2898cac18cf ]
    
    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@xxxxxxxxxxx>
    Signed-off-by: Kalle Valo <quic_kvalo@xxxxxxxxxxx>
    Link: https://lore.kernel.org/r/1645000354-32558-1-git-send-email-quic_ramess@xxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless/ath/ath11k/dp_rx.c
index c212a789421e..e432f8dc05d6 100644
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
@@ -2642,9 +2642,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))) {



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux