]> git.droids-corp.org - dpdk.git/commitdiff
dma/hisilicon: fix index returned when no DMA completed
authorChengwen Feng <fengchengwen@huawei.com>
Fri, 27 May 2022 03:40:52 +0000 (11:40 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 7 Jun 2022 10:35:38 +0000 (12:35 +0200)
If no DMA request is completed, the ring_idx of the last completed
operation need returned by last_idx parameter. This patch fixes it.

Fixes: 2db4f0b82360 ("dma/hisilicon: add data path")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
drivers/dma/hisilicon/hisi_dmadev.c

index 9cef2cbfbe3f8bbc4044b09f11f4607d6b4b71cc..f5c3cd914d88761f90cf6e462409fcd8a62eba7e 100644 (file)
@@ -702,12 +702,12 @@ hisi_dma_completed(void *dev_private,
                }
                sq_head = (sq_head + 1) & hw->sq_depth_mask;
        }
+       *last_idx = hw->cridx + i - 1;
        if (i > 0) {
                hw->cridx += i;
-               *last_idx = hw->cridx - 1;
                hw->sq_head = sq_head;
+               hw->completed += i;
        }
-       hw->completed += i;
 
        return i;
 }
@@ -761,12 +761,12 @@ hisi_dma_completed_status(void *dev_private,
                hw->status[sq_head] = HISI_DMA_STATUS_SUCCESS;
                sq_head = (sq_head + 1) & hw->sq_depth_mask;
        }
+       *last_idx = hw->cridx + cpl_num - 1;
        if (likely(cpl_num > 0)) {
                hw->cridx += cpl_num;
-               *last_idx = hw->cridx - 1;
                hw->sq_head = sq_head;
+               hw->completed += cpl_num;
        }
-       hw->completed += cpl_num;
 
        return cpl_num;
 }