<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof" style="font-family: Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr style="display: inline-block; width: 98%;">
<div id="divRplyFwdMsg" dir="ltr"><span style="font-family: Calibri, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);"><b>From:</b> Vidya Sagar Velumuri <vvelumuri@marvell.com><br>
<b>Sent:</b> Friday, April 19, 2024 2:37 PM<br>
<b>To:</b> fengchengwen@huawei.com <fengchengwen@huawei.com>; kevin.laatz@intel.com <kevin.laatz@intel.com>; bruce.richardson@intel.com <bruce.richardson@intel.com><br>
<b>Cc:</b> Jerin Jacob <jerinj@marvell.com>; Anoob Joseph <anoobj@marvell.com>; Vidya Sagar Velumuri <vvelumuri@marvell.com>; Aakash Sasidharan <asasidharan@marvell.com>; Tejasree Kondoj <ktejasree@marvell.com>; Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>;
dev@dpdk.org <dev@dpdk.org><br>
<b>Subject:</b> [EXTERNAL] [PATCH v2 1/2] test/dma: update the sg test to verify wrap around case</span>
<div> </div>
</div>
<div class="elementToProof" style="font-size: 11pt;">Prioritize security for external emails: Confirm sender and content safety before clicking links or opening attachments<br>
<br>
----------------------------------------------------------------------<br>
Run the sg test in a loop to verify wrap around case.<br>
Total number commands submitted to be more than the number descriptors<br>
allocated to verify the scenario.<br>
<br>
Signed-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com><br>
diff --git a/app/test/test_dmadev.c b/app/test/test_dmadev.c<br>
index 143e1bcd68..7462e90831 100644<br>
--- a/app/test/test_dmadev.c<br>
+++ b/app/test/test_dmadev.c<br>
@@ -393,34 +393,26 @@ test_stop_start(int16_t dev_id, uint16_t vchan)<br>
}<br>
<br>
static int<br>
-test_enqueue_sg_copies(int16_t dev_id, uint16_t vchan)<br>
+test_enqueue_sg(int16_t dev_id, uint16_t vchan, unsigned int n_sge, unsigned int test_len)<br>
{<br>
- unsigned int src_len, dst_len, n_sge, len, i, j, k;<br>
char orig_src[COPY_LEN], orig_dst[COPY_LEN];<br>
- struct rte_dma_info info = { 0 };<br>
+ unsigned int src_len, dst_len, i, j, k;<br>
enum rte_dma_status_code status;<br>
uint16_t id, n_src, n_dst;<br>
<br>
- if (rte_dma_info_get(dev_id, &info) < 0)<br>
- ERR_RETURN("Failed to get dev info");<br>
-<br>
- if (info.max_sges < 2)<br>
- ERR_RETURN("Test needs minimum 2 SG pointers");<br>
-<br>
- n_sge = info.max_sges;<br>
-<br>
for (n_src = 1; n_src <= n_sge; n_src++) {<br>
for (n_dst = 1; n_dst <= n_sge; n_dst++) {<br>
/* Normalize SG buffer lengths */<br>
- len = COPY_LEN;<br>
- len -= (len % (n_src * n_dst));<br>
- dst_len = len / n_dst;<br>
- src_len = len / n_src;<br>
-<br>
+ unsigned int len = test_len - (test_len % (n_src * n_dst));<br>
struct rte_dma_sge sg_src[n_sge], sg_dst[n_sge];<br>
struct rte_mbuf *src[n_sge], *dst[n_sge];<br>
char *src_data[n_sge], *dst_data[n_sge];<br>
<br>
+ dst_len = len / n_dst;<br>
+ src_len = len / n_src;<br>
+ if (dst_len == 0 || src_len == 0)<br>
+ continue;<br>
+<br>
for (i = 0 ; i < len; i++)<br>
orig_src[i] = rte_rand() & 0xFF;<br>
<br>
@@ -511,6 +503,27 @@ test_enqueue_sg_copies(int16_t dev_id, uint16_t vchan)<br>
return 0;<br>
}<br>
<br>
+static int<br>
+test_enqueue_sg_copies(int16_t dev_id, uint16_t vchan)<br>
+{<br>
+ struct rte_dma_info info = { 0 };<br>
+ unsigned int n_sge, len;<br>
+ int loop_count = 0;<br>
+<br>
+ if (rte_dma_info_get(dev_id, &info) < 0)<br>
+ ERR_RETURN("Failed to get dev info");<br>
+<br>
+ n_sge = RTE_MIN(info.max_sges, TEST_SG_MAX);<br>
+ len = COPY_LEN;<br>
+<br>
+ do {<br>
+ test_enqueue_sg(dev_id, vchan, n_sge, len);<br>
+ loop_count++;<br>
+ } while (loop_count * n_sge * n_sge < TEST_RINGSIZE * 3);<br>
+<br>
+ return 0;<br>
+}<br>
+<br>
/* Failure handling test cases - global macros and variables for those tests*/<br>
#define COMP_BURST_SZ 16<br>
#define OPT_FENCE(idx) ((fence && idx == 8) ? RTE_DMA_OP_FLAG_FENCE : 0)<br>
diff --git a/app/test/test_dmadev_api.c b/app/test/test_dmadev_api.c<br>
index d40c05cfbf..6a07ed593b 100644<br>
--- a/app/test/test_dmadev_api.c<br>
+++ b/app/test/test_dmadev_api.c<br>
@@ -16,7 +16,6 @@ extern int test_dma_api(uint16_t dev_id);<br>
<br>
#define TEST_MEMCPY_SIZE 1024<br>
#define TEST_WAIT_US_VAL 50000<br>
-#define TEST_SG_MAX 64<br>
<br>
static int16_t test_dev_id;<br>
static int16_t invalid_dev_id;<br>
diff --git a/app/test/test_dmadev_api.h b/app/test/test_dmadev_api.h<br>
index 33fbc5bd41..a03f7acd4f 100644<br>
--- a/app/test/test_dmadev_api.h<br>
+++ b/app/test/test_dmadev_api.h<br>
@@ -2,4 +2,6 @@<br>
* Copyright(c) 2021 HiSilicon Limited<br>
*/<br>
<br>
+#define TEST_SG_MAX 64<br>
+<br>
int test_dma_api(uint16_t dev_id);<br>
--<br>
2.25.1</div>
<div class="elementToProof" style="font-size: 11pt;"><br>
</div>
<div class="elementToProof" style="font-size: 11pt; color: rgb(0, 0, 0);">Acked-by: Amit Prakash Shukla <amitprakashs@marvell.com></div>
<div class="elementToProof" style="font-size: 11pt; color: rgb(0, 0, 0);"><br>
</div>
<div class="elementToProof" style="font-size: 11pt; color: rgb(0, 0, 0);">Thanks</div>
</body>
</html>