]> git.droids-corp.org - dpdk.git/commitdiff
test/dma: reset last index before checking completion
authorChengwen Feng <fengchengwen@huawei.com>
Wed, 8 Jun 2022 08:50:06 +0000 (16:50 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 15 Jun 2022 14:15:50 +0000 (16:15 +0200)
Some DMA PMD may not update last-idx when no DMA completed, the
previous patch [1] cannot detect this problem actually.

This patch resets last-idx before invoking DMA completed ops to fix it.

[1] test/dma: check index when no DMA completed

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
app/test/test_dmadev.c

index a7651a486f4adcabdef6cee1ab66b8094fd7eafb..9e8e101f40b6995443d4739bdae35349b925784a 100644 (file)
@@ -209,6 +209,7 @@ test_enqueue_copies(int16_t dev_id, uint16_t vchan)
                                                dst_data[i], src_data[i]);
 
                /* now check completion works */
+               id = ~id;
                if (rte_dma_completed(dev_id, vchan, 1, &id, NULL) != 1)
                        ERR_RETURN("Error with rte_dma_completed\n");
 
@@ -217,6 +218,7 @@ test_enqueue_copies(int16_t dev_id, uint16_t vchan)
                                        id, id_count);
 
                /* check for completed and id when no job done */
+               id = ~id;
                if (rte_dma_completed(dev_id, vchan, 1, &id, NULL) != 0)
                        ERR_RETURN("Error with rte_dma_completed when no job done\n");
                if (id != id_count)
@@ -224,6 +226,7 @@ test_enqueue_copies(int16_t dev_id, uint16_t vchan)
                                        id, id_count);
 
                /* check for completed_status and id when no job done */
+               id = ~id;
                if (rte_dma_completed_status(dev_id, vchan, 1, &id, &status) != 0)
                        ERR_RETURN("Error with rte_dma_completed_status when no job done\n");
                if (id != id_count)