ath10k: initialize nbytes to 0
authorBen Greear <greearb@candelatech.com>
Wed, 31 May 2017 11:21:26 +0000 (14:21 +0300)
committerKalle Valo <kvalo@qca.qualcomm.com>
Thu, 1 Jun 2017 12:57:12 +0000 (15:57 +0300)
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>
drivers/net/wireless/ath/ath10k/ce.c

index ee1090c..5130956 100644 (file)
@@ -594,6 +594,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) {
                /*
@@ -623,6 +624,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);