diff mbox

ath10k: Initialize nbytes to 0

Message ID 1483653641-8377-1-git-send-email-greearb@candelatech.com (mailing list archive)
State Accepted
Commit 4f40b423339b8121fbd5d6735bf6942020355c98
Delegated to: Kalle Valo
Headers show

Commit Message

Ben Greear Jan. 5, 2017, 10 p.m. UTC
From: Ben Greear <greearb@candelatech.com>

ath10k firmware checks nbytes == 0 as part of determining if DMA
has completed successfully.  To help make this work more often,
have the driver initialize nbytes to zero when freeing the descriptor
slot.

Signed-off-by: Ben Greear <greearb@candelatech.com>
---

I am not yet sure if this actually fixes a real problem or not...curious
if others think this is an improvement.

 drivers/net/wireless/ath/ath10k/ce.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Kalle Valo May 22, 2017, 2:53 p.m. UTC | #1
Ben Greear <greearb@candelatech.com> wrote:
> From: Ben Greear <greearb@candelatech.com>
> 
> ath10k firmware checks nbytes == 0 as part of determining if DMA
> has completed successfully.  To help make this work more often,
> have the driver initialize nbytes to zero when freeing the descriptor
> slot.
> 
> Signed-off-by: Ben Greear <greearb@candelatech.com>

This patch was in linux-wireless patchwork instance but not in ath10k instance,
which means that the patch was not delivered to ath10k list. I guesss mailing
list problems?

But anyway, I didn't see any comments. Is this still valid?
Ben Greear May 22, 2017, 4:17 p.m. UTC | #2
On 05/22/2017 07:53 AM, Kalle Valo wrote:
> Ben Greear <greearb@candelatech.com> wrote:
>> From: Ben Greear <greearb@candelatech.com>
>>
>> ath10k firmware checks nbytes == 0 as part of determining if DMA
>> has completed successfully.  To help make this work more often,
>> have the driver initialize nbytes to zero when freeing the descriptor
>> slot.
>>
>> Signed-off-by: Ben Greear <greearb@candelatech.com>
>
> This patch was in linux-wireless patchwork instance but not in ath10k instance,
> which means that the patch was not delivered to ath10k list. I guesss mailing
> list problems?
>
> But anyway, I didn't see any comments. Is this still valid?

 From my reading of the firmware, it appears the patch is a good idea.
It at least does not seem to make anything worse as it has not
been implicated in any problems in our testing and it has been in our kernel
since I posted the patch.

So, I think it should be applied.

Thanks,
Ben
Kalle Valo June 1, 2017, 12:58 p.m. UTC | #3
Ben Greear <greearb@candelatech.com> wrote:

> ath10k firmware checks nbytes == 0 as part of determining if DMA
> has completed successfully.  To help make this work more often,
> have the driver initialize nbytes to zero when freeing the descriptor
> slot.
> 
> Signed-off-by: Ben Greear <greearb@candelatech.com>
> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>

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

4f40b423339b ath10k: initialize nbytes to 0
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath10k/ce.c b/drivers/net/wireless/ath/ath10k/ce.c
index da9998e..15bc7fb 100644
--- a/drivers/net/wireless/ath/ath10k/ce.c
+++ b/drivers/net/wireless/ath/ath10k/ce.c
@@ -595,6 +595,7 @@  int ath10k_ce_completed_send_next_nolock(struct ath10k_ce_pipe *ce_state,
 	unsigned int nentries_mask = src_ring->nentries_mask;
 	unsigned int sw_index = src_ring->sw_index;
 	unsigned int read_index;
+	struct ce_desc *desc;
 
 	if (src_ring->hw_index == sw_index) {
 		/*
@@ -624,6 +625,9 @@  int ath10k_ce_completed_send_next_nolock(struct ath10k_ce_pipe *ce_state,
 
 	/* sanity */
 	src_ring->per_transfer_context[sw_index] = NULL;
+	desc = CE_SRC_RING_TO_DESC(src_ring->base_addr_owner_space,
+				   sw_index);
+	desc->nbytes = 0;
 
 	/* Update sw_index */
 	sw_index = CE_RING_IDX_INCR(nentries_mask, sw_index);