Message ID | 20220528142516.20819-1-ansuelsmth@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Kalle Valo |
Headers | show |
Series | [1/2] ath11k: fix missing srng_access_end in CE | expand |
On 5/28/2022 7:25 AM, Christian 'Ansuel' Marangi wrote: > When a CE completed send next operation is done, the srng access end is > never called. Correctly end the srng access to make sure we have the > correct values in the srng struct. > > Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > > Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices") > Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth@gmail.com> > --- > drivers/net/wireless/ath/ath11k/ce.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/wireless/ath/ath11k/ce.c b/drivers/net/wireless/ath/ath11k/ce.c > index c14c51f38709..665205d2322e 100644 > --- a/drivers/net/wireless/ath/ath11k/ce.c > +++ b/drivers/net/wireless/ath/ath11k/ce.c > @@ -490,6 +490,8 @@ static struct sk_buff *ath11k_ce_completed_send_next(struct ath11k_ce_pipe *pipe > pipe->src_ring->sw_index = sw_index; > > err_unlock: > + ath11k_hal_srng_access_end(ab, srng); > + > spin_unlock_bh(&srng->lock); > > spin_unlock_bh(&ab->ce.ce_lock); NAK -- Not calling ath11k_hal_srng_access_end() is intentional. CE_SRC ring is a special ring, we perform tx_request and tx_completion on the same ring. The completion processing frees SKBs associated to the ce_desc, this is what ath11k_ce_completed_send_next() does, it does not update the head pointer to hw because the ce_desc at hp does not have any new data, it is just available for new messages. ath11k_ce_send() retrieves a processed (processed by ath11k_ce_completed_send_next) ce_desc and sets it up for the new message. Then it updates the hw about the newly available ce_desc by calling ath11k_hal_srng_access_end(). If you want to do anything here, adding a comment based upon the above would be good. /jeff
diff --git a/drivers/net/wireless/ath/ath11k/ce.c b/drivers/net/wireless/ath/ath11k/ce.c index c14c51f38709..665205d2322e 100644 --- a/drivers/net/wireless/ath/ath11k/ce.c +++ b/drivers/net/wireless/ath/ath11k/ce.c @@ -490,6 +490,8 @@ static struct sk_buff *ath11k_ce_completed_send_next(struct ath11k_ce_pipe *pipe pipe->src_ring->sw_index = sw_index; err_unlock: + ath11k_hal_srng_access_end(ab, srng); + spin_unlock_bh(&srng->lock); spin_unlock_bh(&ab->ce.ce_lock);
When a CE completed send next operation is done, the srng access end is never called. Correctly end the srng access to make sure we have the correct values in the srng struct. Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices") Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth@gmail.com> --- drivers/net/wireless/ath/ath11k/ce.c | 2 ++ 1 file changed, 2 insertions(+)