All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/17] test/bbdev: changes for 23.03
@ 2023-03-02 20:21 Hernan Vargas
  2023-03-02 20:21 ` [PATCH v3 01/17] test/bbdev: fix seg fault for non supported HARQ len Hernan Vargas
                   ` (17 more replies)
  0 siblings, 18 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:21 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

v3: Added new commit with enq/deq timeout implementaion.
v2: Made changes requested during review. Added 3 commits.
v1: Upstreaming bbdev-test changes for 23.03.

Hernan Vargas (17):
  test/bbdev: fix seg fault for non supported HARQ len
  test/bbdev: extend HARQ tolerance
  test/bbdev: remove check for invalid opaque data
  test/bbdev: refactor TB throughput report
  test/bbdev: add timeout for latency tests
  test/bbdev: enable early termination for validation
  test/bbdev: report device status in test-bbdev
  test/bbdev: test start/stop bbdev API
  test/bbdev: add timeout for enq/deq loops
  test/bbdev: add support for BLER for 4G
  test/bbdev: extend support for large TB
  test/bbdev: adjustment for soft output
  test/bbdev: expose warning counters
  test/bbdev: remove iteration count check
  test/bbdev: use mbuf reset function
  test/bbdev: remove max iteration from vectors
  test/bbdev: remove iter count from bler test

 app/test-bbdev/test_bbdev_perf.c              | 520 ++++++++++++++----
 app/test-bbdev/test_bbdev_vector.c            |  14 -
 app/test-bbdev/test_bbdev_vector.h            |   1 -
 .../test_vectors/ldpc_dec_HARQ_1_0.data       |   3 -
 .../test_vectors/ldpc_dec_HARQ_1_1.data       |   3 -
 .../test_vectors/ldpc_dec_HARQ_1_2.data       |   3 -
 .../test_vectors/ldpc_dec_v11835.data         |   3 -
 .../test_vectors/ldpc_dec_v2342_drop.data     |   3 -
 .../test_vectors/ldpc_dec_v7813.data          |   3 -
 .../test_vectors/ldpc_dec_v8480.data          |   3 -
 .../test_vectors/ldpc_dec_v8568.data          |   3 -
 .../test_vectors/ldpc_dec_v9503.data          |   3 -
 ...turbo_dec_c1_k40_r0_e17280_sbd_negllr.data |   3 -
 ..._r0_e10376_crc24b_sbd_negllr_high_snr.data |   3 -
 ...4_r0_e10376_crc24b_sbd_negllr_low_snr.data |   3 -
 .../turbo_dec_c1_k6144_r0_e34560_posllr.data  |   3 -
 ...rbo_dec_c1_k6144_r0_e34560_sbd_negllr.data |   3 -
 ...rbo_dec_c1_k6144_r0_e34560_sbd_posllr.data |   3 -
 ...c_c2_k3136_r0_e4920_sbd_negllr_crc24b.data |   3 -
 19 files changed, 416 insertions(+), 167 deletions(-)

-- 
2.37.1


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v3 01/17] test/bbdev: fix seg fault for non supported HARQ len
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
@ 2023-03-02 20:21 ` Hernan Vargas
  2023-03-06 13:17   ` Maxime Coquelin
  2023-03-02 20:21 ` [PATCH v3 02/17] test/bbdev: extend HARQ tolerance Hernan Vargas
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:21 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas, stable

Fix segmentation fault happening in corner case in test-bbdev.
This fault could happen when running some specific vectors which size
are not supported by the PMD.

Fixes: 335c11fd276 ("app/bbdev: support HARQ validation")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 45e1780df772..027f32cbf1b7 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -84,7 +84,7 @@
 /* Increment for next code block in external HARQ memory */
 #define HARQ_INCR 32768
 /* Headroom for filler LLRs insertion in HARQ buffer */
-#define FILLER_HEADROOM 1024
+#define FILLER_HEADROOM 2048
 /* Constants from K0 computation from 3GPP 38.212 Table 5.4.2.1-2 */
 #define N_ZC_1 66 /* N = 66 Zc for BG 1 */
 #define N_ZC_2 50 /* N = 50 Zc for BG 2 */
@@ -2111,9 +2111,9 @@ validate_op_harq_chain(struct rte_bbdev_op_data *op,
 					ops_ld->n_filler;
 			if (data_len > deRmOutSize)
 				data_len = deRmOutSize;
-			if (data_len > orig_op->segments[i].length)
-				data_len = orig_op->segments[i].length;
 		}
+		if (data_len > orig_op->segments[i].length)
+			data_len = orig_op->segments[i].length;
 		/*
 		 * HARQ output can have minor differences
 		 * due to integer representation and related scaling
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 02/17] test/bbdev: extend HARQ tolerance
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
  2023-03-02 20:21 ` [PATCH v3 01/17] test/bbdev: fix seg fault for non supported HARQ len Hernan Vargas
@ 2023-03-02 20:21 ` Hernan Vargas
  2023-03-02 20:21 ` [PATCH v3 03/17] test/bbdev: remove check for invalid opaque data Hernan Vargas
                   ` (15 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:21 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas, stable

HARQ memory implementation could have different size assumptions.
Extending HARQ tolerance to cover different implementations.

Fixes: 335c11fd276 ("app/bbdev: support HARQ validation")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 027f32cbf1b7..74e7e1394092 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -95,6 +95,7 @@
 #define K0_3_1 56 /* K0 fraction numerator for rv 3 and BG 1 */
 #define K0_3_2 43 /* K0 fraction numerator for rv 3 and BG 2 */
 
+#define HARQ_MEM_TOLERANCE 256
 static struct test_bbdev_vector test_vector;
 
 /* Switch between PMD and Interrupt for throughput TC */
@@ -2090,13 +2091,17 @@ validate_op_harq_chain(struct rte_bbdev_op_data *op,
 		uint16_t data_len = rte_pktmbuf_data_len(m) - offset;
 		total_data_size += orig_op->segments[i].length;
 
-		TEST_ASSERT(orig_op->segments[i].length <
-				(uint32_t)(data_len + 64),
+		TEST_ASSERT(orig_op->segments[i].length < (uint32_t)(data_len + HARQ_MEM_TOLERANCE),
 				"Length of segment differ in original (%u) and filled (%u) op",
 				orig_op->segments[i].length, data_len);
 		harq_orig = (int8_t *) orig_op->segments[i].addr;
 		harq_out = rte_pktmbuf_mtod_offset(m, int8_t *, offset);
 
+		/* Cannot compare HARQ output data for such cases */
+		if ((ldpc_llr_decimals > 1) && ((ops_ld->op_flags & RTE_BBDEV_LDPC_LLR_COMPRESSION)
+				|| (ops_ld->op_flags & RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION)))
+			break;
+
 		if (!(ldpc_cap_flags &
 				RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS
 				) || (ops_ld->op_flags &
@@ -2172,7 +2177,7 @@ validate_op_harq_chain(struct rte_bbdev_op_data *op,
 
 	/* Validate total mbuf pkt length */
 	uint32_t pkt_len = rte_pktmbuf_pkt_len(op->data) - op->offset;
-	TEST_ASSERT(total_data_size < pkt_len + 64,
+	TEST_ASSERT(total_data_size < pkt_len + HARQ_MEM_TOLERANCE,
 			"Length of data differ in original (%u) and filled (%u) op",
 			total_data_size, pkt_len);
 
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 03/17] test/bbdev: remove check for invalid opaque data
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
  2023-03-02 20:21 ` [PATCH v3 01/17] test/bbdev: fix seg fault for non supported HARQ len Hernan Vargas
  2023-03-02 20:21 ` [PATCH v3 02/17] test/bbdev: extend HARQ tolerance Hernan Vargas
@ 2023-03-02 20:21 ` Hernan Vargas
  2023-03-02 20:21 ` [PATCH v3 04/17] test/bbdev: refactor TB throughput report Hernan Vargas
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:21 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas, stable

Assert also if the opaque data is invalid.

Fixes: 335c11fd276 ("app/bbdev: support HARQ validation")
Cc: stable@dpdk.org

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 74e7e1394092..95d63a3548f5 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -78,7 +78,6 @@
 
 #define SYNC_WAIT 0
 #define SYNC_START 1
-#define INVALID_OPAQUE -1
 
 #define INVALID_QUEUE_ID -1
 /* Increment for next code block in external HARQ memory */
@@ -1951,10 +1950,9 @@ check_enc_status_and_ordering(struct rte_bbdev_enc_op *op,
 			"op_status (%d) != expected_status (%d)",
 			op->status, expected_status);
 
-	if (op->opaque_data != (void *)(uintptr_t)INVALID_OPAQUE)
-		TEST_ASSERT((void *)(uintptr_t)order_idx == op->opaque_data,
-				"Ordering error, expected %p, got %p",
-				(void *)(uintptr_t)order_idx, op->opaque_data);
+	TEST_ASSERT((void *)(uintptr_t)order_idx == op->opaque_data,
+			"Ordering error, expected %p, got %p",
+			(void *)(uintptr_t)order_idx, op->opaque_data);
 
 	return TEST_SUCCESS;
 }
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 04/17] test/bbdev: refactor TB throughput report
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (2 preceding siblings ...)
  2023-03-02 20:21 ` [PATCH v3 03/17] test/bbdev: remove check for invalid opaque data Hernan Vargas
@ 2023-03-02 20:21 ` Hernan Vargas
  2023-03-02 20:21 ` [PATCH v3 05/17] test/bbdev: add timeout for latency tests Hernan Vargas
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:21 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Refactor calculation for tb_size.
No functional impact.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 38 ++++++++++++++------------------
 1 file changed, 16 insertions(+), 22 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 95d63a3548f5..088fc055a148 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -2578,19 +2578,16 @@ calc_dec_TB_size(struct rte_bbdev_dec_op *op)
 static uint32_t
 calc_ldpc_dec_TB_size(struct rte_bbdev_dec_op *op)
 {
-	uint8_t i;
-	uint32_t c, r, tb_size = 0;
+	uint8_t num_cbs = 0;
+	uint32_t tb_size = 0;
 	uint16_t sys_cols = (op->ldpc_dec.basegraph == 1) ? 22 : 10;
 
-	if (op->ldpc_dec.code_block_mode == RTE_BBDEV_CODE_BLOCK) {
-		tb_size = sys_cols * op->ldpc_dec.z_c - op->ldpc_dec.n_filler;
-	} else {
-		c = op->ldpc_dec.tb_params.c;
-		r = op->ldpc_dec.tb_params.r;
-		for (i = 0; i < c-r; i++)
-			tb_size += sys_cols * op->ldpc_dec.z_c
-					- op->ldpc_dec.n_filler;
-	}
+	if (op->ldpc_dec.code_block_mode == RTE_BBDEV_CODE_BLOCK)
+		num_cbs = 1;
+	else
+		num_cbs = op->ldpc_dec.tb_params.c - op->ldpc_dec.tb_params.r;
+
+	tb_size = (sys_cols * op->ldpc_dec.z_c - op->ldpc_dec.n_filler) * num_cbs;
 	return tb_size;
 }
 
@@ -2616,19 +2613,16 @@ calc_enc_TB_size(struct rte_bbdev_enc_op *op)
 static uint32_t
 calc_ldpc_enc_TB_size(struct rte_bbdev_enc_op *op)
 {
-	uint8_t i;
-	uint32_t c, r, tb_size = 0;
+	uint8_t num_cbs = 0;
+	uint32_t tb_size = 0;
 	uint16_t sys_cols = (op->ldpc_enc.basegraph == 1) ? 22 : 10;
 
-	if (op->ldpc_enc.code_block_mode == RTE_BBDEV_CODE_BLOCK) {
-		tb_size = sys_cols * op->ldpc_enc.z_c - op->ldpc_enc.n_filler;
-	} else {
-		c = op->turbo_enc.tb_params.c;
-		r = op->turbo_enc.tb_params.r;
-		for (i = 0; i < c-r; i++)
-			tb_size += sys_cols * op->ldpc_enc.z_c
-					- op->ldpc_enc.n_filler;
-	}
+	if (op->ldpc_enc.code_block_mode == RTE_BBDEV_CODE_BLOCK)
+		num_cbs = 1;
+	else
+		num_cbs = op->ldpc_enc.tb_params.c - op->ldpc_enc.tb_params.r;
+
+	tb_size = (sys_cols * op->ldpc_enc.z_c - op->ldpc_enc.n_filler) * num_cbs;
 	return tb_size;
 }
 
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 05/17] test/bbdev: add timeout for latency tests
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (3 preceding siblings ...)
  2023-03-02 20:21 ` [PATCH v3 04/17] test/bbdev: refactor TB throughput report Hernan Vargas
@ 2023-03-02 20:21 ` Hernan Vargas
  2023-03-02 20:22 ` [PATCH v3 06/17] test/bbdev: enable early termination for validation Hernan Vargas
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:21 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Add a timeout to force exit the latency tests in case dequeue never
happens.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 088fc055a148..4de3d937a53d 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -26,6 +26,7 @@
 
 #define MAX_QUEUES RTE_MAX_LCORE
 #define TEST_REPETITIONS 100
+#define TIME_OUT_POLL 1e8
 #define WAIT_OFFLOAD_US 1000
 
 #ifdef RTE_BASEBAND_FPGA_LTE_FEC
@@ -4544,6 +4545,7 @@ latency_test_ldpc_dec(struct rte_mempool *mempool,
 
 	for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
 		uint16_t enq = 0, deq = 0;
+		uint32_t time_out = 0;
 		bool first_time = true;
 		last_time = 0;
 
@@ -4595,7 +4597,8 @@ latency_test_ldpc_dec(struct rte_mempool *mempool,
 				last_time = rte_rdtsc_precise() - start_time;
 				first_time = false;
 			}
-		} while (unlikely(burst_sz != deq));
+			time_out++;
+		} while ((burst_sz != deq) && (time_out < TIME_OUT_POLL));
 
 		*max_time = RTE_MAX(*max_time, last_time);
 		*min_time = RTE_MIN(*min_time, last_time);
@@ -4604,7 +4607,12 @@ latency_test_ldpc_dec(struct rte_mempool *mempool,
 		if (extDdr)
 			retrieve_harq_ddr(dev_id, queue_id, ops_enq, burst_sz);
 
-		if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
+		if (burst_sz != deq) {
+			struct rte_bbdev_info info;
+			ret = TEST_FAILED;
+			rte_bbdev_info_get(dev_id, &info);
+			TEST_ASSERT_SUCCESS(ret, "Dequeue timeout!");
+		} else if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
 			ret = validate_ldpc_dec_op(ops_deq, burst_sz, ref_op,
 					vector_mask);
 			TEST_ASSERT_SUCCESS(ret, "Validation failed!");
@@ -4630,6 +4638,7 @@ latency_test_enc(struct rte_mempool *mempool,
 
 	for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
 		uint16_t enq = 0, deq = 0;
+		uint32_t time_out = 0;
 		bool first_time = true;
 		last_time = 0;
 
@@ -4665,13 +4674,18 @@ latency_test_enc(struct rte_mempool *mempool,
 				last_time += rte_rdtsc_precise() - start_time;
 				first_time = false;
 			}
-		} while (unlikely(burst_sz != deq));
+			time_out++;
+		} while ((burst_sz != deq) && (time_out < TIME_OUT_POLL));
 
 		*max_time = RTE_MAX(*max_time, last_time);
 		*min_time = RTE_MIN(*min_time, last_time);
 		*total_time += last_time;
-
-		if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
+		if (burst_sz != deq) {
+			struct rte_bbdev_info info;
+			ret = TEST_FAILED;
+			rte_bbdev_info_get(dev_id, &info);
+			TEST_ASSERT_SUCCESS(ret, "Dequeue timeout!");
+		} else if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
 			ret = validate_enc_op(ops_deq, burst_sz, ref_op);
 			TEST_ASSERT_SUCCESS(ret, "Validation failed!");
 		}
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 06/17] test/bbdev: enable early termination for validation
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (4 preceding siblings ...)
  2023-03-02 20:21 ` [PATCH v3 05/17] test/bbdev: add timeout for latency tests Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-02 20:22 ` [PATCH v3 07/17] test/bbdev: report device status in test-bbdev Hernan Vargas
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Enhancement to enable early termination for validation tests if the
device supports it.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 4de3d937a53d..396473961ad1 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -3773,11 +3773,11 @@ throughput_pmd_lcore_ldpc_dec(void *arg)
 	TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", num_ops);
 
 	/* For throughput tests we need to disable early termination */
-	if (check_bit(ref_op->ldpc_dec.op_flags,
-			RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE))
-		ref_op->ldpc_dec.op_flags -=
-				RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE;
+	if (check_bit(ref_op->ldpc_dec.op_flags, RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE))
+		ref_op->ldpc_dec.op_flags -= RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE;
+
 	ref_op->ldpc_dec.iter_max = get_iter_max();
+	/* Since ET is disabled, the expected iter_count is iter_max */
 	ref_op->ldpc_dec.iter_count = ref_op->ldpc_dec.iter_max;
 
 	if (test_vector.op_type != RTE_BBDEV_OP_NONE)
@@ -4463,7 +4463,7 @@ latency_test_dec(struct rte_mempool *mempool,
 		struct test_buffers *bufs, struct rte_bbdev_dec_op *ref_op,
 		int vector_mask, uint16_t dev_id, uint16_t queue_id,
 		const uint16_t num_to_process, uint16_t burst_sz,
-		uint64_t *total_time, uint64_t *min_time, uint64_t *max_time)
+		uint64_t *total_time, uint64_t *min_time, uint64_t *max_time, bool disable_et)
 {
 	int ret = TEST_SUCCESS;
 	uint16_t i, j, dequeued;
@@ -4479,8 +4479,14 @@ latency_test_dec(struct rte_mempool *mempool,
 			burst_sz = num_to_process - dequeued;
 
 		ret = rte_bbdev_dec_op_alloc_bulk(mempool, ops_enq, burst_sz);
-		TEST_ASSERT_SUCCESS(ret,
-				"rte_bbdev_dec_op_alloc_bulk() failed");
+		TEST_ASSERT_SUCCESS(ret, "rte_bbdev_dec_op_alloc_bulk() failed");
+
+		ref_op->turbo_dec.iter_max = get_iter_max();
+		/* For validation tests we want to enable early termination */
+		if (!disable_et && !check_bit(ref_op->turbo_dec.op_flags,
+				RTE_BBDEV_TURBO_EARLY_TERMINATION))
+			ref_op->turbo_dec.op_flags |= RTE_BBDEV_TURBO_EARLY_TERMINATION;
+
 		if (test_vector.op_type != RTE_BBDEV_OP_NONE)
 			copy_reference_dec_op(ops_enq, burst_sz, dequeued,
 					bufs->inputs,
@@ -4559,10 +4565,12 @@ latency_test_ldpc_dec(struct rte_mempool *mempool,
 		/* For latency tests we need to disable early termination */
 		if (disable_et && check_bit(ref_op->ldpc_dec.op_flags,
 				RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE))
-			ref_op->ldpc_dec.op_flags -=
-					RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE;
+			ref_op->ldpc_dec.op_flags -= RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE;
+
 		ref_op->ldpc_dec.iter_max = get_iter_max();
-		ref_op->ldpc_dec.iter_count = ref_op->ldpc_dec.iter_max;
+		/* When ET is disabled, the expected iter_count is iter_max */
+		if (disable_et)
+			ref_op->ldpc_dec.iter_count = ref_op->ldpc_dec.iter_max;
 
 		if (test_vector.op_type != RTE_BBDEV_OP_NONE)
 			copy_reference_ldpc_dec_op(ops_enq, burst_sz, dequeued,
@@ -4871,7 +4879,7 @@ validation_latency_test(struct active_device *ad,
 		iter = latency_test_dec(op_params->mp, bufs,
 				op_params->ref_dec_op, op_params->vector_mask,
 				ad->dev_id, queue_id, num_to_process,
-				burst_sz, &total_time, &min_time, &max_time);
+				burst_sz, &total_time, &min_time, &max_time, latency_flag);
 	else if (op_type == RTE_BBDEV_OP_LDPC_ENC)
 		iter = latency_test_ldpc_enc(op_params->mp, bufs,
 				op_params->ref_enc_op, ad->dev_id, queue_id,
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 07/17] test/bbdev: report device status in test-bbdev
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (5 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 06/17] test/bbdev: enable early termination for validation Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-02 20:22 ` [PATCH v3 08/17] test/bbdev: test start/stop bbdev API Hernan Vargas
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

No functional impact.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 396473961ad1..546fc195aac4 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -849,6 +849,8 @@ add_bbdev_dev(uint8_t dev_id, struct rte_bbdev_info *info,
 #endif
 	/* Let's refresh this now this is configured */
 	rte_bbdev_info_get(dev_id, info);
+	if (info->drv.device_status == RTE_BBDEV_DEV_FATAL_ERR)
+		printf("Device Status %s\n", rte_bbdev_device_status_str(info->drv.device_status));
 	nb_queues = RTE_MIN(rte_lcore_count(), info->drv.max_num_queues);
 	nb_queues = RTE_MIN(nb_queues, (unsigned int) MAX_QUEUES);
 
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 08/17] test/bbdev: test start/stop bbdev API
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (6 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 07/17] test/bbdev: report device status in test-bbdev Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-03 12:31   ` Maxime Coquelin
  2023-03-02 20:22 ` [PATCH v3 09/17] test/bbdev: add timeout for enq/deq loops Hernan Vargas
                   ` (9 subsequent siblings)
  17 siblings, 1 reply; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Add a call to queue start and queue stop specifically for testing the
bbdev API.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
 app/test-bbdev/test_bbdev_perf.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 546fc195aac4..7bfc4cd5779e 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -886,19 +886,23 @@ add_bbdev_dev(uint8_t dev_id, struct rte_bbdev_info *info,
 					"Allocated all queues (id=%u) at prio%u on dev%u\n",
 					queue_id, qconf.priority, dev_id);
 			qconf.priority++;
-			ret = rte_bbdev_queue_configure(ad->dev_id, queue_id,
-					&qconf);
+			ret = rte_bbdev_queue_configure(ad->dev_id, queue_id, &qconf);
 		}
 		if (ret != 0) {
-			printf("All queues on dev %u allocated: %u\n",
-					dev_id, queue_id);
+			printf("All queues on dev %u allocated: %u\n", dev_id, queue_id);
+			break;
+		}
+		ret = rte_bbdev_queue_start(ad->dev_id, queue_id);
+		if (ret != 0) {
+			printf("Failed to start queue on dev %u q_id: %u\n", dev_id, queue_id);
 			break;
 		}
 		ad->queue_ids[queue_id] = queue_id;
 	}
 	TEST_ASSERT(queue_id != 0,
-			"ERROR Failed to configure any queues on dev %u",
-			dev_id);
+			"ERROR Failed to configure any queues on dev %u\n"
+			"\tthe device may not support the related operation capability\n"
+			"\tor the device may not have been configured yet", dev_id);
 	ad->nb_queues = queue_id;
 
 	set_avail_op(ad, op_type);
@@ -3844,6 +3848,9 @@ throughput_pmd_lcore_ldpc_dec(void *arg)
 		TEST_ASSERT_SUCCESS(ret, "Validation failed!");
 	}
 
+	ret = rte_bbdev_queue_stop(tp->dev_id, queue_id);
+	if (ret != 0)
+		printf("Failed to stop queue on dev %u q_id: %u\n", tp->dev_id, queue_id);
 	rte_bbdev_dec_op_free_bulk(ops_enq, num_ops);
 
 	double tb_len_bits = calc_ldpc_dec_TB_size(ref_op);
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 09/17] test/bbdev: add timeout for enq/deq loops
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (7 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 08/17] test/bbdev: test start/stop bbdev API Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-03 12:44   ` Maxime Coquelin
  2023-03-02 20:22 ` [PATCH v3 10/17] test/bbdev: add support for BLER for 4G Hernan Vargas
                   ` (8 subsequent siblings)
  17 siblings, 1 reply; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Added timeout to prevent infinite loop condition if the device
doesn't enqueue/dequeue.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
 app/test-bbdev/test_bbdev_perf.c | 133 ++++++++++++++++++++++++++-----
 1 file changed, 113 insertions(+), 20 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 7bfc4cd5779e..7a4841a069ee 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -192,6 +192,15 @@ struct test_time_stats {
 typedef int (test_case_function)(struct active_device *ad,
 		struct test_op_params *op_params);
 
+/* Get device status before timeout exit */
+static inline void
+timeout_exit(uint8_t dev_id)
+{
+	struct rte_bbdev_info info;
+	rte_bbdev_info_get(dev_id, &info);
+	printf("Device Status %s\n", rte_bbdev_device_status_str(info.drv.device_status));
+}
+
 static inline void
 mbuf_reset(struct rte_mbuf *m)
 {
@@ -3553,7 +3562,7 @@ throughput_pmd_lcore_dec(void *arg)
 		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
 
 	for (i = 0; i < TEST_REPETITIONS; ++i) {
-
+		uint32_t time_out = 0;
 		for (j = 0; j < num_ops; ++j)
 			mbuf_reset(ops_enq[j]->turbo_dec.hard_output.data);
 		if (so_enable)
@@ -3573,12 +3582,23 @@ throughput_pmd_lcore_dec(void *arg)
 
 			deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
+			}
 		}
 
 		/* dequeue the remaining */
+		time_out = 0;
 		while (deq < enq) {
 			deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
 		}
 
 		total_time += rte_rdtsc_precise() - start_time;
@@ -3669,6 +3689,7 @@ bler_pmd_lcore_ldpc_dec(void *arg)
 		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
 
 	for (i = 0; i < 1; ++i) { /* Could add more iterations */
+		uint32_t time_out = 0;
 		for (j = 0; j < num_ops; ++j) {
 			if (!loopback)
 				mbuf_reset(
@@ -3692,12 +3713,23 @@ bler_pmd_lcore_ldpc_dec(void *arg)
 
 			deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
+			}
 		}
 
 		/* dequeue the remaining */
+		time_out = 0;
 		while (deq < enq) {
 			deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
 		}
 
 		total_time += rte_rdtsc_precise() - start_time;
@@ -3796,6 +3828,7 @@ throughput_pmd_lcore_ldpc_dec(void *arg)
 		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
 
 	for (i = 0; i < TEST_REPETITIONS; ++i) {
+		uint32_t time_out = 0;
 		for (j = 0; j < num_ops; ++j) {
 			if (!loopback)
 				mbuf_reset(
@@ -3820,12 +3853,23 @@ throughput_pmd_lcore_ldpc_dec(void *arg)
 
 			deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
+			}
 		}
 
 		/* dequeue the remaining */
+		time_out = 0;
 		while (deq < enq) {
 			deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
 		}
 
 		total_time += rte_rdtsc_precise() - start_time;
@@ -3907,7 +3951,7 @@ throughput_pmd_lcore_enc(void *arg)
 		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
 
 	for (i = 0; i < TEST_REPETITIONS; ++i) {
-
+		uint32_t time_out = 0;
 		if (test_vector.op_type != RTE_BBDEV_OP_NONE)
 			for (j = 0; j < num_ops; ++j)
 				mbuf_reset(ops_enq[j]->turbo_enc.output.data);
@@ -3925,12 +3969,23 @@ throughput_pmd_lcore_enc(void *arg)
 
 			deq += rte_bbdev_dequeue_enc_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
+			}
 		}
 
 		/* dequeue the remaining */
+		time_out = 0;
 		while (deq < enq) {
 			deq += rte_bbdev_dequeue_enc_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
 		}
 
 		total_time += rte_rdtsc_precise() - start_time;
@@ -3997,7 +4052,7 @@ throughput_pmd_lcore_ldpc_enc(void *arg)
 		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
 
 	for (i = 0; i < TEST_REPETITIONS; ++i) {
-
+		uint32_t time_out = 0;
 		if (test_vector.op_type != RTE_BBDEV_OP_NONE)
 			for (j = 0; j < num_ops; ++j)
 				mbuf_reset(ops_enq[j]->turbo_enc.output.data);
@@ -4015,12 +4070,23 @@ throughput_pmd_lcore_ldpc_enc(void *arg)
 
 			deq += rte_bbdev_dequeue_ldpc_enc_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
+			}
 		}
 
 		/* dequeue the remaining */
+		time_out = 0;
 		while (deq < enq) {
 			deq += rte_bbdev_dequeue_ldpc_enc_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
 		}
 
 		total_time += rte_rdtsc_precise() - start_time;
@@ -4086,7 +4152,7 @@ throughput_pmd_lcore_fft(void *arg)
 		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
 
 	for (i = 0; i < TEST_REPETITIONS; ++i) {
-
+		uint32_t time_out = 0;
 		for (j = 0; j < num_ops; ++j)
 			mbuf_reset(ops_enq[j]->fft.base_output.data);
 
@@ -4103,12 +4169,23 @@ throughput_pmd_lcore_fft(void *arg)
 
 			deq += rte_bbdev_dequeue_fft_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
+			}
 		}
 
 		/* dequeue the remaining */
+		time_out = 0;
 		while (deq < enq) {
 			deq += rte_bbdev_dequeue_fft_ops(tp->dev_id,
 					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
 		}
 
 		total_time += rte_rdtsc_precise() - start_time;
@@ -4481,6 +4558,7 @@ latency_test_dec(struct rte_mempool *mempool,
 
 	for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
 		uint16_t enq = 0, deq = 0;
+		uint32_t time_out = 0;
 		bool first_time = true;
 		last_time = 0;
 
@@ -4523,6 +4601,11 @@ latency_test_dec(struct rte_mempool *mempool,
 				last_time = rte_rdtsc_precise() - start_time;
 				first_time = false;
 			}
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
 		} while (unlikely(burst_sz != deq));
 
 		*max_time = RTE_MAX(*max_time, last_time);
@@ -4615,7 +4698,11 @@ latency_test_ldpc_dec(struct rte_mempool *mempool,
 				first_time = false;
 			}
 			time_out++;
-		} while ((burst_sz != deq) && (time_out < TIME_OUT_POLL));
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
+		} while (unlikely(burst_sz != deq));
 
 		*max_time = RTE_MAX(*max_time, last_time);
 		*min_time = RTE_MIN(*min_time, last_time);
@@ -4624,14 +4711,8 @@ latency_test_ldpc_dec(struct rte_mempool *mempool,
 		if (extDdr)
 			retrieve_harq_ddr(dev_id, queue_id, ops_enq, burst_sz);
 
-		if (burst_sz != deq) {
-			struct rte_bbdev_info info;
-			ret = TEST_FAILED;
-			rte_bbdev_info_get(dev_id, &info);
-			TEST_ASSERT_SUCCESS(ret, "Dequeue timeout!");
-		} else if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
-			ret = validate_ldpc_dec_op(ops_deq, burst_sz, ref_op,
-					vector_mask);
+		if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
+			ret = validate_ldpc_dec_op(ops_deq, burst_sz, ref_op, vector_mask);
 			TEST_ASSERT_SUCCESS(ret, "Validation failed!");
 		}
 
@@ -4692,17 +4773,17 @@ latency_test_enc(struct rte_mempool *mempool,
 				first_time = false;
 			}
 			time_out++;
-		} while ((burst_sz != deq) && (time_out < TIME_OUT_POLL));
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
+		} while (unlikely(burst_sz != deq));
 
 		*max_time = RTE_MAX(*max_time, last_time);
 		*min_time = RTE_MIN(*min_time, last_time);
 		*total_time += last_time;
-		if (burst_sz != deq) {
-			struct rte_bbdev_info info;
-			ret = TEST_FAILED;
-			rte_bbdev_info_get(dev_id, &info);
-			TEST_ASSERT_SUCCESS(ret, "Dequeue timeout!");
-		} else if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
+
+		if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
 			ret = validate_enc_op(ops_deq, burst_sz, ref_op);
 			TEST_ASSERT_SUCCESS(ret, "Validation failed!");
 		}
@@ -4728,6 +4809,7 @@ latency_test_ldpc_enc(struct rte_mempool *mempool,
 
 	for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
 		uint16_t enq = 0, deq = 0;
+		uint32_t time_out = 0;
 		bool first_time = true;
 		last_time = 0;
 
@@ -4763,6 +4845,11 @@ latency_test_ldpc_enc(struct rte_mempool *mempool,
 				last_time += rte_rdtsc_precise() - start_time;
 				first_time = false;
 			}
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
 		} while (unlikely(burst_sz != deq));
 
 		*max_time = RTE_MAX(*max_time, last_time);
@@ -4796,6 +4883,7 @@ latency_test_fft(struct rte_mempool *mempool,
 
 	for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
 		uint16_t enq = 0, deq = 0;
+		uint32_t time_out = 0;
 		bool first_time = true;
 		last_time = 0;
 
@@ -4831,6 +4919,11 @@ latency_test_fft(struct rte_mempool *mempool,
 				last_time += rte_rdtsc_precise() - start_time;
 				first_time = false;
 			}
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
 		} while (unlikely(burst_sz != deq));
 
 		*max_time = RTE_MAX(*max_time, last_time);
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 10/17] test/bbdev: add support for BLER for 4G
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (8 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 09/17] test/bbdev: add timeout for enq/deq loops Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-03 16:41   ` Maxime Coquelin
  2023-03-02 20:22 ` [PATCH v3 11/17] test/bbdev: extend support for large TB Hernan Vargas
                   ` (7 subsequent siblings)
  17 siblings, 1 reply; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

New feature to add BLER support for 4G in test-bbdev.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
---
 app/test-bbdev/test_bbdev_perf.c | 195 ++++++++++++++++++++++++++++++-
 1 file changed, 194 insertions(+), 1 deletion(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 7a4841a069ee..bd8310ac2c56 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -1768,6 +1768,30 @@ gen_qm2_llr(int8_t *llrs, uint32_t j, double N0, double llr_max)
 	llrs[j] = (int8_t) b;
 }
 
+/* Simple LLR generation assuming AWGN and QPSK */
+static void
+gen_turbo_llr(int8_t *llrs, uint32_t j, double N0, double llr_max)
+{
+	double b, b1, n;
+	double coeff = 2.0 * sqrt(N0);
+
+	/* Ignore in vectors null LLRs not to be saturated */
+	if (llrs[j] == 0)
+		return;
+
+	/* Note don't change sign here */
+	n = randn(j % 2);
+	b1 = ((llrs[j] > 0 ? 2.0 : -2.0)
+			+ coeff * n) / N0;
+	b = b1 * (1 << 4);
+	b = round(b);
+	if (b > llr_max)
+		b = llr_max;
+	if (b < -llr_max)
+		b = -llr_max;
+	llrs[j] = (int8_t) b;
+}
+
 /* Generate LLR for a given SNR */
 static void
 generate_llr_input(uint16_t n, struct rte_bbdev_op_data *inputs,
@@ -1803,6 +1827,27 @@ generate_llr_input(uint16_t n, struct rte_bbdev_op_data *inputs,
 	}
 }
 
+/* Generate LLR for turbo decoder for a given SNR */
+static void
+generate_turbo_llr_input(uint16_t n, struct rte_bbdev_op_data *inputs,
+		struct rte_bbdev_dec_op *ref_op)
+{
+	struct rte_mbuf *m;
+	uint32_t i, j, range;
+	double N0, llr_max;
+
+	llr_max = 127;
+	range = ref_op->turbo_dec.input.length;
+	N0 = 1.0 / pow(10.0, get_snr() / 10.0);
+
+	for (i = 0; i < n; ++i) {
+		m = inputs[i].data;
+		int8_t *llrs = rte_pktmbuf_mtod_offset(m, int8_t *, 0);
+		for (j = 0; j < range; ++j)
+			gen_turbo_llr(llrs, j, N0, llr_max);
+	}
+}
+
 static void
 copy_reference_ldpc_dec_op(struct rte_bbdev_dec_op **ops, unsigned int n,
 		unsigned int start_idx,
@@ -2316,6 +2361,30 @@ validate_ldpc_bler(struct rte_bbdev_dec_op **ops, const uint16_t n)
 	return errors;
 }
 
+/* Check Number of code blocks errors */
+static int
+validate_turbo_bler(struct rte_bbdev_dec_op **ops, const uint16_t n)
+{
+	unsigned int i;
+	struct op_data_entries *hard_data_orig = &test_vector.entries[DATA_HARD_OUTPUT];
+	struct rte_bbdev_op_turbo_dec *ops_td;
+	struct rte_bbdev_op_data *hard_output;
+	int errors = 0;
+	struct rte_mbuf *m;
+
+	for (i = 0; i < n; ++i) {
+		ops_td = &ops[i]->turbo_dec;
+		hard_output = &ops_td->hard_output;
+		m = hard_output->data;
+		if (memcmp(rte_pktmbuf_mtod_offset(m, uint32_t *, 0),
+				hard_data_orig->segments[0].addr,
+				hard_data_orig->segments[0].length))
+			errors++;
+	}
+	return errors;
+}
+
+
 static int
 validate_ldpc_dec_op(struct rte_bbdev_dec_op **ops, const uint16_t n,
 		struct rte_bbdev_dec_op *ref_op, const int vector_mask)
@@ -3771,6 +3840,126 @@ bler_pmd_lcore_ldpc_dec(void *arg)
 	return TEST_SUCCESS;
 }
 
+
+static int
+bler_pmd_lcore_turbo_dec(void *arg)
+{
+	struct thread_params *tp = arg;
+	uint16_t enq, deq;
+	uint64_t total_time = 0, start_time;
+	const uint16_t queue_id = tp->queue_id;
+	const uint16_t burst_sz = tp->op_params->burst_sz;
+	const uint16_t num_ops = tp->op_params->num_to_process;
+	struct rte_bbdev_dec_op *ops_enq[num_ops];
+	struct rte_bbdev_dec_op *ops_deq[num_ops];
+	struct rte_bbdev_dec_op *ref_op = tp->op_params->ref_dec_op;
+	struct test_buffers *bufs = NULL;
+	int i, j, ret;
+	struct rte_bbdev_info info;
+	uint16_t num_to_enq;
+
+	TEST_ASSERT_SUCCESS((burst_sz > MAX_BURST),
+			"BURST_SIZE should be <= %u", MAX_BURST);
+
+	rte_bbdev_info_get(tp->dev_id, &info);
+
+	TEST_ASSERT_SUCCESS((num_ops > info.drv.queue_size_lim),
+			"NUM_OPS cannot exceed %u for this device",
+			info.drv.queue_size_lim);
+
+	bufs = &tp->op_params->q_bufs[GET_SOCKET(info.socket_id)][queue_id];
+
+	rte_wait_until_equal_16(&tp->op_params->sync, SYNC_START, __ATOMIC_RELAXED);
+
+	ret = rte_bbdev_dec_op_alloc_bulk(tp->op_params->mp, ops_enq, num_ops);
+	TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", num_ops);
+
+	/* For BLER tests we need to enable early termination */
+	if (!check_bit(ref_op->turbo_dec.op_flags,
+			RTE_BBDEV_TURBO_EARLY_TERMINATION))
+		ref_op->turbo_dec.op_flags +=
+				RTE_BBDEV_TURBO_EARLY_TERMINATION;
+	ref_op->turbo_dec.iter_max = get_iter_max();
+	ref_op->turbo_dec.iter_count = ref_op->turbo_dec.iter_max;
+
+	if (test_vector.op_type != RTE_BBDEV_OP_NONE)
+		copy_reference_dec_op(ops_enq, num_ops, 0, bufs->inputs,
+				bufs->hard_outputs, bufs->soft_outputs,
+				ref_op);
+	generate_turbo_llr_input(num_ops, bufs->inputs, ref_op);
+
+	/* Set counter to validate the ordering */
+	for (j = 0; j < num_ops; ++j)
+		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
+
+	for (i = 0; i < 1; ++i) { /* Could add more iterations */
+		uint32_t time_out = 0;
+		for (j = 0; j < num_ops; ++j) {
+			mbuf_reset(
+			ops_enq[j]->turbo_dec.hard_output.data);
+		}
+
+		start_time = rte_rdtsc_precise();
+
+		for (enq = 0, deq = 0; enq < num_ops;) {
+			num_to_enq = burst_sz;
+
+			if (unlikely(num_ops - enq < num_to_enq))
+				num_to_enq = num_ops - enq;
+
+			enq += rte_bbdev_enqueue_dec_ops(tp->dev_id,
+					queue_id, &ops_enq[enq], num_to_enq);
+
+			deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
+					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
+			}
+		}
+
+		/* dequeue the remaining */
+		time_out = 0;
+		while (deq < enq) {
+			deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
+					queue_id, &ops_deq[deq], enq - deq);
+			time_out++;
+			if (time_out >= TIME_OUT_POLL) {
+				timeout_exit(tp->dev_id);
+				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
+			}
+		}
+
+		total_time += rte_rdtsc_precise() - start_time;
+	}
+
+	tp->iter_count = 0;
+	tp->iter_average = 0;
+	/* get the max of iter_count for all dequeued ops */
+	for (i = 0; i < num_ops; ++i) {
+		tp->iter_count = RTE_MAX(ops_enq[i]->turbo_dec.iter_count,
+				tp->iter_count);
+		tp->iter_average += (double) ops_enq[i]->turbo_dec.iter_count;
+	}
+
+	tp->iter_average /= num_ops;
+	tp->bler = (double) validate_turbo_bler(ops_deq, num_ops) / num_ops;
+
+	rte_bbdev_dec_op_free_bulk(ops_enq, num_ops);
+
+	double tb_len_bits = calc_dec_TB_size(ref_op);
+	tp->ops_per_sec = ((double)num_ops * 1) /
+			((double)total_time / (double)rte_get_tsc_hz());
+	tp->mbps = (((double)(num_ops * 1 * tb_len_bits)) /
+			1000000.0) / ((double)total_time /
+			(double)rte_get_tsc_hz());
+	printf("TBS %.0f Time %.0f\n", tb_len_bits, 1000000.0 *
+			((double)total_time / (double)rte_get_tsc_hz()));
+
+	return TEST_SUCCESS;
+}
+
 static int
 throughput_pmd_lcore_ldpc_dec(void *arg)
 {
@@ -4275,7 +4464,7 @@ print_dec_bler(struct thread_params *t_params, unsigned int used_cores)
 	total_bler /= used_cores;
 	total_iter /= used_cores;
 
-	printf("SNR %.2f BLER %.1f %% - Iterations %.1f %d - Tp %.1f Mbps %s\n",
+	printf("SNR %.2f BLER %.1f %% - Iterations %.1f %d - Tp %.3f Mbps %s\n",
 			snr, total_bler * 100, total_iter, get_iter_max(),
 			total_mbps, get_vector_filename());
 }
@@ -4327,6 +4516,10 @@ bler_test(struct active_device *ad,
 			&& !check_bit(test_vector.ldpc_dec.op_flags,
 			RTE_BBDEV_LDPC_LLR_COMPRESSION))
 		bler_function = bler_pmd_lcore_ldpc_dec;
+	else if ((test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC) &&
+			!check_bit(test_vector.turbo_dec.op_flags,
+			RTE_BBDEV_TURBO_SOFT_OUTPUT))
+		bler_function = bler_pmd_lcore_turbo_dec;
 	else
 		return TEST_SKIPPED;
 
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 11/17] test/bbdev: extend support for large TB
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (9 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 10/17] test/bbdev: add support for BLER for 4G Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-02 20:22 ` [PATCH v3 12/17] test/bbdev: adjustment for soft output Hernan Vargas
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Add support for large TB when it cannot fit into a true mbuf.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index bd8310ac2c56..e611df75763c 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -1084,8 +1084,6 @@ init_op_data_objs(struct rte_bbdev_op_data *bufs,
 			 * Special case when DPDK mbuf cannot handle
 			 * the required input size
 			 */
-			printf("Warning: Larger input size than DPDK mbuf %d\n",
-					seg->length);
 			large_input = true;
 		}
 		bufs[i].data = m_head;
@@ -2041,6 +2039,7 @@ validate_op_chain(struct rte_bbdev_op_data *op,
 	struct rte_mbuf *m = op->data;
 	uint8_t nb_dst_segments = orig_op->nb_segments;
 	uint32_t total_data_size = 0;
+	bool ignore_mbuf = false; /* ignore mbuf limitations */
 
 	TEST_ASSERT(nb_dst_segments == m->nb_segs,
 			"Number of segments differ in original (%u) and filled (%u) op",
@@ -2053,21 +2052,25 @@ validate_op_chain(struct rte_bbdev_op_data *op,
 		uint16_t data_len = rte_pktmbuf_data_len(m) - offset;
 		total_data_size += orig_op->segments[i].length;
 
-		TEST_ASSERT(orig_op->segments[i].length == data_len,
-				"Length of segment differ in original (%u) and filled (%u) op",
-				orig_op->segments[i].length, data_len);
+		if (orig_op->segments[i].length > RTE_BBDEV_LDPC_E_MAX_MBUF)
+			ignore_mbuf = true;
+		if (!ignore_mbuf)
+			TEST_ASSERT(orig_op->segments[i].length == data_len,
+					"Length of segment differ in original (%u) and filled (%u) op",
+					orig_op->segments[i].length, data_len);
 		TEST_ASSERT_BUFFERS_ARE_EQUAL(orig_op->segments[i].addr,
 				rte_pktmbuf_mtod_offset(m, uint32_t *, offset),
-				data_len,
+				orig_op->segments[i].length,
 				"Output buffers (CB=%u) are not equal", i);
 		m = m->next;
 	}
 
 	/* Validate total mbuf pkt length */
 	uint32_t pkt_len = rte_pktmbuf_pkt_len(op->data) - op->offset;
-	TEST_ASSERT(total_data_size == pkt_len,
-			"Length of data differ in original (%u) and filled (%u) op",
-			total_data_size, pkt_len);
+	if (!ignore_mbuf)
+		TEST_ASSERT(total_data_size == pkt_len,
+				"Length of data differ in original (%u) and filled (%u) op",
+				total_data_size, pkt_len);
 
 	return TEST_SUCCESS;
 }
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 12/17] test/bbdev: adjustment for soft output
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (10 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 11/17] test/bbdev: extend support for large TB Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-02 20:22 ` [PATCH v3 13/17] test/bbdev: expose warning counters Hernan Vargas
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Extend test-bbdev for soft output check, notably due to the logic in
test-bbdev to enable termination changing.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index e611df75763c..98d01e8b299a 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -1360,6 +1360,7 @@ fill_queue_buffers(struct test_op_params *op_params,
 				RTE_BBDEV_LDPC_LLR_COMPRESSION;
 		bool harq_comp = op_params->ref_dec_op->ldpc_dec.op_flags &
 				RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION;
+
 		ldpc_llr_decimals = capabilities->cap.ldpc_dec.llr_decimals;
 		ldpc_llr_size = capabilities->cap.ldpc_dec.llr_size;
 		ldpc_cap_flags = capabilities->cap.ldpc_dec.capability_flags;
@@ -2434,7 +2435,7 @@ validate_ldpc_dec_op(struct rte_bbdev_dec_op **ops, const uint16_t n,
 					i);
 
 		if (ref_op->ldpc_dec.op_flags & RTE_BBDEV_LDPC_SOFT_OUT_ENABLE)
-			TEST_ASSERT_SUCCESS(validate_op_chain(soft_output,
+			TEST_ASSERT_SUCCESS(validate_op_so_chain(soft_output,
 					soft_data_orig),
 					"Soft output buffers (CB=%u) are not equal",
 					i);
@@ -2504,7 +2505,6 @@ validate_ldpc_enc_op(struct rte_bbdev_enc_op **ops, const uint16_t n,
 	return TEST_SUCCESS;
 }
 
-
 static inline int
 validate_op_fft_chain(struct rte_bbdev_op_data *op, struct op_data_entries *orig_op)
 {
@@ -3191,11 +3191,11 @@ throughput_intr_lcore_ldpc_dec(void *arg)
 	for (j = 0; j < TEST_REPETITIONS; ++j) {
 		for (i = 0; i < num_to_process; ++i) {
 			if (!loopback)
-				rte_pktmbuf_reset(
-					ops[i]->ldpc_dec.hard_output.data);
+				rte_pktmbuf_reset(ops[i]->ldpc_dec.hard_output.data);
 			if (hc_out || loopback)
-				mbuf_reset(
-				ops[i]->ldpc_dec.harq_combined_output.data);
+				mbuf_reset(ops[i]->ldpc_dec.harq_combined_output.data);
+			if (ops[i]->ldpc_dec.soft_output.data != NULL)
+				rte_pktmbuf_reset(ops[i]->ldpc_dec.soft_output.data);
 		}
 
 		tp->start_time = rte_rdtsc_precise();
@@ -3290,7 +3290,6 @@ throughput_intr_lcore_dec(void *arg)
 				rte_pktmbuf_reset(ops[i]->turbo_dec.soft_output.data);
 		}
 
-
 		tp->start_time = rte_rdtsc_precise();
 		for (enqueued = 0; enqueued < num_to_process;) {
 			num_to_enq = burst_sz;
@@ -3764,10 +3763,11 @@ bler_pmd_lcore_ldpc_dec(void *arg)
 		uint32_t time_out = 0;
 		for (j = 0; j < num_ops; ++j) {
 			if (!loopback)
-				mbuf_reset(
-				ops_enq[j]->ldpc_dec.hard_output.data);
+				mbuf_reset(ops_enq[j]->ldpc_dec.hard_output.data);
 			if (hc_out || loopback)
 				mbuf_reset(ops_enq[j]->ldpc_dec.harq_combined_output.data);
+			if (ops_enq[j]->ldpc_dec.soft_output.data != NULL)
+				mbuf_reset(ops_enq[j]->ldpc_dec.soft_output.data);
 		}
 		if (extDdr)
 			preload_harq_ddr(tp->dev_id, queue_id, ops_enq,
@@ -4023,11 +4023,11 @@ throughput_pmd_lcore_ldpc_dec(void *arg)
 		uint32_t time_out = 0;
 		for (j = 0; j < num_ops; ++j) {
 			if (!loopback)
-				mbuf_reset(
-				ops_enq[j]->ldpc_dec.hard_output.data);
+				mbuf_reset(ops_enq[j]->ldpc_dec.hard_output.data);
 			if (hc_out || loopback)
-				mbuf_reset(
-				ops_enq[j]->ldpc_dec.harq_combined_output.data);
+				mbuf_reset(ops_enq[j]->ldpc_dec.harq_combined_output.data);
+			if (ops_enq[j]->ldpc_dec.soft_output.data != NULL)
+				mbuf_reset(ops_enq[j]->ldpc_dec.soft_output.data);
 		}
 		if (extDdr)
 			preload_harq_ddr(tp->dev_id, queue_id, ops_enq,
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 13/17] test/bbdev: expose warning counters
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (11 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 12/17] test/bbdev: adjustment for soft output Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-02 20:22 ` [PATCH v3 14/17] test/bbdev: remove iteration count check Hernan Vargas
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Print warnings reported on queues for offload test.
No functional impact.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 98d01e8b299a..635c0a5eab48 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -5781,6 +5781,9 @@ offload_cost_test(struct active_device *ad,
 
 	struct rte_bbdev_stats stats = {0};
 	get_bbdev_queue_stats(ad->dev_id, queue_id, &stats);
+	if (stats.enqueue_warn_count > 0)
+		printf("Warning reported on the queue : %10"PRIu64"\n",
+			stats.enqueue_warn_count);
 	if (op_type != RTE_BBDEV_OP_LDPC_DEC) {
 		TEST_ASSERT_SUCCESS(stats.enqueued_count != num_to_process,
 				"Mismatch in enqueue count %10"PRIu64" %d",
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 14/17] test/bbdev: remove iteration count check
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (12 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 13/17] test/bbdev: expose warning counters Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-02 20:22 ` [PATCH v3 15/17] test/bbdev: use mbuf reset function Hernan Vargas
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

To make the test compatible with devices that do not support early
termination, the iteration count assert can be removed.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 24 ++++++++----------------
 1 file changed, 8 insertions(+), 16 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 635c0a5eab48..da5c3a4bc9a7 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -2300,7 +2300,7 @@ validate_op_so_chain(struct rte_bbdev_op_data *op,
 
 static int
 validate_dec_op(struct rte_bbdev_dec_op **ops, const uint16_t n,
-		struct rte_bbdev_dec_op *ref_op, const int vector_mask)
+		struct rte_bbdev_dec_op *ref_op)
 {
 	unsigned int i;
 	int ret;
@@ -2311,17 +2311,12 @@ validate_dec_op(struct rte_bbdev_dec_op **ops, const uint16_t n,
 	struct rte_bbdev_op_turbo_dec *ops_td;
 	struct rte_bbdev_op_data *hard_output;
 	struct rte_bbdev_op_data *soft_output;
-	struct rte_bbdev_op_turbo_dec *ref_td = &ref_op->turbo_dec;
 
 	for (i = 0; i < n; ++i) {
 		ops_td = &ops[i]->turbo_dec;
 		hard_output = &ops_td->hard_output;
 		soft_output = &ops_td->soft_output;
 
-		if (vector_mask & TEST_BBDEV_VF_EXPECTED_ITER_COUNT)
-			TEST_ASSERT(ops_td->iter_count <= ref_td->iter_count,
-					"Returned iter_count (%d) > expected iter_count (%d)",
-					ops_td->iter_count, ref_td->iter_count);
 		ret = check_dec_status_and_ordering(ops[i], i, ref_op->status);
 		TEST_ASSERT_SUCCESS(ret,
 				"Checking status and ordering for decoder failed");
@@ -3070,8 +3065,7 @@ dequeue_event_callback(uint16_t dev_id,
 
 	if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC) {
 		struct rte_bbdev_dec_op *ref_op = tp->op_params->ref_dec_op;
-		ret = validate_dec_op(tp->dec_ops, num_ops, ref_op,
-				tp->op_params->vector_mask);
+		ret = validate_dec_op(tp->dec_ops, num_ops, ref_op);
 		/* get the max of iter_count for all dequeued ops */
 		for (i = 0; i < num_ops; ++i)
 			tp->iter_count = RTE_MAX(
@@ -3683,8 +3677,7 @@ throughput_pmd_lcore_dec(void *arg)
 	}
 
 	if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
-		ret = validate_dec_op(ops_deq, num_ops, ref_op,
-				tp->op_params->vector_mask);
+		ret = validate_dec_op(ops_deq, num_ops, ref_op);
 		TEST_ASSERT_SUCCESS(ret, "Validation failed!");
 	}
 
@@ -4743,7 +4736,7 @@ throughput_test(struct active_device *ad,
 static int
 latency_test_dec(struct rte_mempool *mempool,
 		struct test_buffers *bufs, struct rte_bbdev_dec_op *ref_op,
-		int vector_mask, uint16_t dev_id, uint16_t queue_id,
+		uint16_t dev_id, uint16_t queue_id,
 		const uint16_t num_to_process, uint16_t burst_sz,
 		uint64_t *total_time, uint64_t *min_time, uint64_t *max_time, bool disable_et)
 {
@@ -4809,8 +4802,7 @@ latency_test_dec(struct rte_mempool *mempool,
 		*total_time += last_time;
 
 		if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
-			ret = validate_dec_op(ops_deq, burst_sz, ref_op,
-					vector_mask);
+			ret = validate_dec_op(ops_deq, burst_sz, ref_op);
 			TEST_ASSERT_SUCCESS(ret, "Validation failed!");
 		}
 
@@ -5175,9 +5167,9 @@ validation_latency_test(struct active_device *ad,
 
 	if (op_type == RTE_BBDEV_OP_TURBO_DEC)
 		iter = latency_test_dec(op_params->mp, bufs,
-				op_params->ref_dec_op, op_params->vector_mask,
-				ad->dev_id, queue_id, num_to_process,
-				burst_sz, &total_time, &min_time, &max_time, latency_flag);
+				op_params->ref_dec_op, ad->dev_id, queue_id,
+				num_to_process, burst_sz, &total_time,
+				&min_time, &max_time, latency_flag);
 	else if (op_type == RTE_BBDEV_OP_LDPC_ENC)
 		iter = latency_test_ldpc_enc(op_params->mp, bufs,
 				op_params->ref_enc_op, ad->dev_id, queue_id,
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 15/17] test/bbdev: use mbuf reset function
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (13 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 14/17] test/bbdev: remove iteration count check Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-02 20:22 ` [PATCH v3 16/17] test/bbdev: remove max iteration from vectors Hernan Vargas
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Use mbuf_reset function for code consistency.
No functional impact.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index da5c3a4bc9a7..b92254519fdf 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -3185,11 +3185,11 @@ throughput_intr_lcore_ldpc_dec(void *arg)
 	for (j = 0; j < TEST_REPETITIONS; ++j) {
 		for (i = 0; i < num_to_process; ++i) {
 			if (!loopback)
-				rte_pktmbuf_reset(ops[i]->ldpc_dec.hard_output.data);
+				mbuf_reset(ops[i]->ldpc_dec.hard_output.data);
 			if (hc_out || loopback)
 				mbuf_reset(ops[i]->ldpc_dec.harq_combined_output.data);
 			if (ops[i]->ldpc_dec.soft_output.data != NULL)
-				rte_pktmbuf_reset(ops[i]->ldpc_dec.soft_output.data);
+				mbuf_reset(ops[i]->ldpc_dec.soft_output.data);
 		}
 
 		tp->start_time = rte_rdtsc_precise();
@@ -3279,9 +3279,9 @@ throughput_intr_lcore_dec(void *arg)
 
 	for (j = 0; j < TEST_REPETITIONS; ++j) {
 		for (i = 0; i < num_to_process; ++i) {
-			rte_pktmbuf_reset(ops[i]->turbo_dec.hard_output.data);
+			mbuf_reset(ops[i]->turbo_dec.hard_output.data);
 			if (ops[i]->turbo_dec.soft_output.data != NULL)
-				rte_pktmbuf_reset(ops[i]->turbo_dec.soft_output.data);
+				mbuf_reset(ops[i]->turbo_dec.soft_output.data);
 		}
 
 		tp->start_time = rte_rdtsc_precise();
@@ -3368,7 +3368,7 @@ throughput_intr_lcore_enc(void *arg)
 
 	for (j = 0; j < TEST_REPETITIONS; ++j) {
 		for (i = 0; i < num_to_process; ++i)
-			rte_pktmbuf_reset(ops[i]->turbo_enc.output.data);
+			mbuf_reset(ops[i]->turbo_enc.output.data);
 
 		tp->start_time = rte_rdtsc_precise();
 		for (enqueued = 0; enqueued < num_to_process;) {
@@ -3456,7 +3456,7 @@ throughput_intr_lcore_ldpc_enc(void *arg)
 
 	for (j = 0; j < TEST_REPETITIONS; ++j) {
 		for (i = 0; i < num_to_process; ++i)
-			rte_pktmbuf_reset(ops[i]->turbo_enc.output.data);
+			mbuf_reset(ops[i]->turbo_enc.output.data);
 
 		tp->start_time = rte_rdtsc_precise();
 		for (enqueued = 0; enqueued < num_to_process;) {
@@ -3544,7 +3544,7 @@ throughput_intr_lcore_fft(void *arg)
 
 	for (j = 0; j < TEST_REPETITIONS; ++j) {
 		for (i = 0; i < num_to_process; ++i)
-			rte_pktmbuf_reset(ops[i]->fft.base_output.data);
+			mbuf_reset(ops[i]->fft.base_output.data);
 
 		tp->start_time = rte_rdtsc_precise();
 		for (enqueued = 0; enqueued < num_to_process;) {
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 16/17] test/bbdev: remove max iteration from vectors
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (14 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 15/17] test/bbdev: use mbuf reset function Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-02 20:22 ` [PATCH v3 17/17] test/bbdev: remove iter count from bler test Hernan Vargas
  2023-03-06 13:20 ` [PATCH v3 00/17] test/bbdev: changes for 23.03 Maxime Coquelin
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

Remove iter_max from test vectors as this value is passed as an argument
to the test.
No functional impact.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c                   |  4 ++++
 app/test-bbdev/test_bbdev_vector.c                 | 14 --------------
 app/test-bbdev/test_bbdev_vector.h                 |  1 -
 app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_0.data |  3 ---
 app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_1.data |  3 ---
 app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_2.data |  3 ---
 app/test-bbdev/test_vectors/ldpc_dec_v11835.data   |  3 ---
 .../test_vectors/ldpc_dec_v2342_drop.data          |  3 ---
 app/test-bbdev/test_vectors/ldpc_dec_v7813.data    |  3 ---
 app/test-bbdev/test_vectors/ldpc_dec_v8480.data    |  3 ---
 app/test-bbdev/test_vectors/ldpc_dec_v8568.data    |  3 ---
 app/test-bbdev/test_vectors/ldpc_dec_v9503.data    |  3 ---
 .../turbo_dec_c1_k40_r0_e17280_sbd_negllr.data     |  3 ---
 ...k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data |  3 ---
 ..._k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data |  3 ---
 .../turbo_dec_c1_k6144_r0_e34560_posllr.data       |  3 ---
 .../turbo_dec_c1_k6144_r0_e34560_sbd_negllr.data   |  3 ---
 .../turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data   |  3 ---
 ...bo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data |  3 ---
 19 files changed, 4 insertions(+), 63 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index b92254519fdf..fcf0145fb2bf 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -3173,6 +3173,8 @@ throughput_intr_lcore_ldpc_dec(void *arg)
 				num_to_process);
 	TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops",
 			num_to_process);
+	ref_op->ldpc_dec.iter_max = get_iter_max();
+
 	if (test_vector.op_type != RTE_BBDEV_OP_NONE)
 		copy_reference_ldpc_dec_op(ops, num_to_process, 0, bufs->inputs,
 				bufs->hard_outputs, bufs->soft_outputs,
@@ -5348,6 +5350,7 @@ offload_latency_test_dec(struct rte_mempool *mempool, struct test_buffers *bufs,
 
 		ret = rte_bbdev_dec_op_alloc_bulk(mempool, ops_enq, burst_sz);
 		TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", burst_sz);
+		ref_op->turbo_dec.iter_max = get_iter_max();
 		if (test_vector.op_type != RTE_BBDEV_OP_NONE)
 			copy_reference_dec_op(ops_enq, burst_sz, dequeued,
 					bufs->inputs,
@@ -5434,6 +5437,7 @@ offload_latency_test_ldpc_dec(struct rte_mempool *mempool,
 
 		ret = rte_bbdev_dec_op_alloc_bulk(mempool, ops_enq, burst_sz);
 		TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", burst_sz);
+		ref_op->ldpc_dec.iter_max = get_iter_max();
 		if (test_vector.op_type != RTE_BBDEV_OP_NONE)
 			copy_reference_ldpc_dec_op(ops_enq, burst_sz, dequeued,
 					bufs->inputs,
diff --git a/app/test-bbdev/test_bbdev_vector.c b/app/test-bbdev/test_bbdev_vector.c
index 1125395dbff2..c26727cd35c4 100644
--- a/app/test-bbdev/test_bbdev_vector.c
+++ b/app/test-bbdev/test_bbdev_vector.c
@@ -532,10 +532,6 @@ parse_decoder_params(const char *key_token, char *token,
 		vector->mask |= TEST_BBDEV_VF_RV_INDEX;
 		turbo_dec->rv_index = (uint8_t) strtoul(token, &err, 0);
 		ret = ((err == NULL) || (*err != '\0')) ? -1 : 0;
-	} else if (!strcmp(key_token, "iter_max")) {
-		vector->mask |= TEST_BBDEV_VF_ITER_MAX;
-		turbo_dec->iter_max = (uint8_t) strtoul(token, &err, 0);
-		ret = ((err == NULL) || (*err != '\0')) ? -1 : 0;
 	} else if (!strcmp(key_token, "iter_min")) {
 		vector->mask |= TEST_BBDEV_VF_ITER_MIN;
 		turbo_dec->iter_min = (uint8_t) strtoul(token, &err, 0);
@@ -862,10 +858,6 @@ parse_ldpc_decoder_params(const char *key_token, char *token,
 		vector->mask |= TEST_BBDEV_VF_EXPECTED_ITER_COUNT;
 		ldpc_dec->iter_count = (uint8_t) strtoul(token, &err, 0);
 		ret = ((err == NULL) || (*err != '\0')) ? -1 : 0;
-	} else if (!strcmp(key_token, "iter_max")) {
-		vector->mask |= TEST_BBDEV_VF_ITER_MAX;
-		ldpc_dec->iter_max = (uint8_t) strtoul(token, &err, 0);
-		ret = ((err == NULL) || (*err != '\0')) ? -1 : 0;
 	} else if (!strcmp(key_token, "code_block_mode")) {
 		vector->mask |= TEST_BBDEV_VF_CODE_BLOCK_MODE;
 		ldpc_dec->code_block_mode = (uint8_t) strtoul(token, &err, 0);
@@ -1260,9 +1252,6 @@ check_decoder(struct test_bbdev_vector *vector)
 	if (!(mask & TEST_BBDEV_VF_ITER_MIN))
 		printf(
 			"WARNING: iter_min was not specified in vector file and will be set to 0\n");
-	if (!(mask & TEST_BBDEV_VF_ITER_MAX))
-		printf(
-			"WARNING: iter_max was not specified in vector file and will be set to 0\n");
 	if (!(mask & TEST_BBDEV_VF_EXPECTED_ITER_COUNT))
 		printf(
 			"WARNING: expected_iter_count was not specified in vector file and iter_count will not be validated\n");
@@ -1335,9 +1324,6 @@ check_ldpc_decoder(struct test_bbdev_vector *vector)
 	if (!(mask & TEST_BBDEV_VF_RV_INDEX))
 		printf(
 			"INFO: rv_index was not specified in vector file and will be set to 0\n");
-	if (!(mask & TEST_BBDEV_VF_ITER_MAX))
-		printf(
-			"WARNING: iter_max was not specified in vector file and will be set to 0\n");
 	if (!(mask & TEST_BBDEV_VF_EXPECTED_ITER_COUNT))
 		printf(
 			"WARNING: expected_iter_count was not specified in vector file and iter_count will not be validated\n");
diff --git a/app/test-bbdev/test_bbdev_vector.h b/app/test-bbdev/test_bbdev_vector.h
index 4c53e8f137df..2ea271ffb78b 100644
--- a/app/test-bbdev/test_bbdev_vector.h
+++ b/app/test-bbdev/test_bbdev_vector.h
@@ -19,7 +19,6 @@ enum {
 	TEST_BBDEV_VF_C = (1ULL << 7),
 	TEST_BBDEV_VF_CAB = (1ULL << 8),
 	TEST_BBDEV_VF_RV_INDEX = (1ULL << 9),
-	TEST_BBDEV_VF_ITER_MAX = (1ULL << 10),
 	TEST_BBDEV_VF_ITER_MIN = (1ULL << 11),
 	TEST_BBDEV_VF_EXPECTED_ITER_COUNT = (1ULL << 12),
 	TEST_BBDEV_VF_EXT_SCALE = (1ULL << 13),
diff --git a/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_0.data b/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_0.data
index 5d4d27d6073d..215c30a610d4 100644
--- a/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_0.data
+++ b/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_0.data
@@ -340,9 +340,6 @@ rv_index=
 code_block_mode=
 1
 
-iter_max=
-20
-
 expected_iter_count=
 20
 
diff --git a/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_1.data b/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_1.data
index 63c2d3b618fe..09ffd7b40a1e 100644
--- a/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_1.data
+++ b/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_1.data
@@ -671,9 +671,6 @@ rv_index=
 code_block_mode=
 1
 
-iter_max=
-20
-
 expected_iter_count=
 4
 
diff --git a/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_2.data b/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_2.data
index 2463df6178db..c1cd088498d9 100644
--- a/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_2.data
+++ b/app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_2.data
@@ -889,9 +889,6 @@ rv_index=
 code_block_mode=
 1
 
-iter_max=
-20
-
 expected_iter_count=
 3
 
diff --git a/app/test-bbdev/test_vectors/ldpc_dec_v11835.data b/app/test-bbdev/test_vectors/ldpc_dec_v11835.data
index 84a04e11cc65..e899b95e74f9 100644
--- a/app/test-bbdev/test_vectors/ldpc_dec_v11835.data
+++ b/app/test-bbdev/test_vectors/ldpc_dec_v11835.data
@@ -36,9 +36,6 @@ rv_index=
 code_block_mode=
 1
 
-iter_max=
-20
-
 expected_iter_count=
 4
 
diff --git a/app/test-bbdev/test_vectors/ldpc_dec_v2342_drop.data b/app/test-bbdev/test_vectors/ldpc_dec_v2342_drop.data
index f30726e46a76..31fef581b2c7 100644
--- a/app/test-bbdev/test_vectors/ldpc_dec_v2342_drop.data
+++ b/app/test-bbdev/test_vectors/ldpc_dec_v2342_drop.data
@@ -732,9 +732,6 @@ rv_index =
 code_block_mode =
 1
 
-iter_max =
-20
-
 expected_iter_count =
 3
 
diff --git a/app/test-bbdev/test_vectors/ldpc_dec_v7813.data b/app/test-bbdev/test_vectors/ldpc_dec_v7813.data
index c656fd3e4ac5..de8fbbc08cbd 100644
--- a/app/test-bbdev/test_vectors/ldpc_dec_v7813.data
+++ b/app/test-bbdev/test_vectors/ldpc_dec_v7813.data
@@ -35,9 +35,6 @@ rv_index =
 code_block_mode =
 1
 
-iter_max =
-8
-
 expected_iter_count =
 6
 
diff --git a/app/test-bbdev/test_vectors/ldpc_dec_v8480.data b/app/test-bbdev/test_vectors/ldpc_dec_v8480.data
index ddebf7bee10b..197ed837cb40 100644
--- a/app/test-bbdev/test_vectors/ldpc_dec_v8480.data
+++ b/app/test-bbdev/test_vectors/ldpc_dec_v8480.data
@@ -61,9 +61,6 @@ rv_index =
 code_block_mode =
 1
 
-iter_max =
-8
-
 expected_iter_count =
 3
 
diff --git a/app/test-bbdev/test_vectors/ldpc_dec_v8568.data b/app/test-bbdev/test_vectors/ldpc_dec_v8568.data
index 0b95e4e0fa8b..b84361f247b1 100644
--- a/app/test-bbdev/test_vectors/ldpc_dec_v8568.data
+++ b/app/test-bbdev/test_vectors/ldpc_dec_v8568.data
@@ -242,9 +242,6 @@ rv_index =
 code_block_mode =
 1
 
-iter_max =
-20
-
 expected_iter_count =
 6
 
diff --git a/app/test-bbdev/test_vectors/ldpc_dec_v9503.data b/app/test-bbdev/test_vectors/ldpc_dec_v9503.data
index 7699ae3157e7..4471f8bf5e04 100644
--- a/app/test-bbdev/test_vectors/ldpc_dec_v9503.data
+++ b/app/test-bbdev/test_vectors/ldpc_dec_v9503.data
@@ -1202,9 +1202,6 @@ rv_index =
 code_block_mode =
 1
 
-iter_max =
-20
-
 expected_iter_count =
 3
 
diff --git a/app/test-bbdev/test_vectors/turbo_dec_c1_k40_r0_e17280_sbd_negllr.data b/app/test-bbdev/test_vectors/turbo_dec_c1_k40_r0_e17280_sbd_negllr.data
index d98210ff6fc2..f147c8af533f 100644
--- a/app/test-bbdev/test_vectors/turbo_dec_c1_k40_r0_e17280_sbd_negllr.data
+++ b/app/test-bbdev/test_vectors/turbo_dec_c1_k40_r0_e17280_sbd_negllr.data
@@ -31,9 +31,6 @@ k =
 rv_index =
 1
 
-iter_max =
-8
-
 iter_min =
 4
 
diff --git a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data
index 3472c992fd90..635078ab27e3 100644
--- a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data
+++ b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data
@@ -617,9 +617,6 @@ k =
 e =
 10376
 
-iter_max =
-8
-
 iter_min =
 4
 
diff --git a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data
index 8ff71aac427b..de6136bd1be2 100644
--- a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data
+++ b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data
@@ -617,9 +617,6 @@ k =
 e =
 10376
 
-iter_max =
-8
-
 iter_min =
 4
 
diff --git a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_posllr.data b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_posllr.data
index fe4f5eefd25f..cb28ee1e976f 100644
--- a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_posllr.data
+++ b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_posllr.data
@@ -620,9 +620,6 @@ k =
 rv_index =
 0
 
-iter_max =
-8
-
 iter_min =
 4
 
diff --git a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_negllr.data b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_negllr.data
index b5ef624616ca..8ec4911d3c5d 100644
--- a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_negllr.data
+++ b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_negllr.data
@@ -1198,9 +1198,6 @@ k =
 rv_index =
 0
 
-iter_max =
-8
-
 iter_min =
 4
 
diff --git a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data
index 13ad0908cec5..b6a73c6c07e4 100644
--- a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data
+++ b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data
@@ -1199,9 +1199,6 @@ k =
 rv_index =
 0
 
-iter_max =
-8
-
 iter_min =
 4
 
diff --git a/app/test-bbdev/test_vectors/turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data b/app/test-bbdev/test_vectors/turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data
index cfff56ad9a34..9d17b86c43b7 100644
--- a/app/test-bbdev/test_vectors/turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data
+++ b/app/test-bbdev/test_vectors/turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data
@@ -651,9 +651,6 @@ k_pos =
 rv_index =
 0
 
-iter_max =
-8
-
 iter_min =
 4
 
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 17/17] test/bbdev: remove iter count from bler test
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (15 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 16/17] test/bbdev: remove max iteration from vectors Hernan Vargas
@ 2023-03-02 20:22 ` Hernan Vargas
  2023-03-06 13:20 ` [PATCH v3 00/17] test/bbdev: changes for 23.03 Maxime Coquelin
  17 siblings, 0 replies; 23+ messages in thread
From: Hernan Vargas @ 2023-03-02 20:22 UTC (permalink / raw)
  To: dev, gakhil, trix, maxime.coquelin
  Cc: nicolas.chautru, qi.z.zhang, Hernan Vargas

iter_count doesn't need to be set equal to iter_max for bler tests. This
is only needed in throughput and latency tests because early termination
is disabled for those tests.

Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 app/test-bbdev/test_bbdev_perf.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index fcf0145fb2bf..e56d314e93b5 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -3737,12 +3737,10 @@ bler_pmd_lcore_ldpc_dec(void *arg)
 	TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", num_ops);
 
 	/* For BLER tests we need to enable early termination */
-	if (!check_bit(ref_op->ldpc_dec.op_flags,
-			RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE))
-		ref_op->ldpc_dec.op_flags +=
-				RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE;
+	if (!check_bit(ref_op->ldpc_dec.op_flags, RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE))
+		ref_op->ldpc_dec.op_flags += RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE;
+
 	ref_op->ldpc_dec.iter_max = get_iter_max();
-	ref_op->ldpc_dec.iter_count = ref_op->ldpc_dec.iter_max;
 
 	if (test_vector.op_type != RTE_BBDEV_OP_NONE)
 		copy_reference_ldpc_dec_op(ops_enq, num_ops, 0, bufs->inputs,
@@ -3873,12 +3871,10 @@ bler_pmd_lcore_turbo_dec(void *arg)
 	TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", num_ops);
 
 	/* For BLER tests we need to enable early termination */
-	if (!check_bit(ref_op->turbo_dec.op_flags,
-			RTE_BBDEV_TURBO_EARLY_TERMINATION))
-		ref_op->turbo_dec.op_flags +=
-				RTE_BBDEV_TURBO_EARLY_TERMINATION;
+	if (!check_bit(ref_op->turbo_dec.op_flags, RTE_BBDEV_TURBO_EARLY_TERMINATION))
+		ref_op->turbo_dec.op_flags += RTE_BBDEV_TURBO_EARLY_TERMINATION;
+
 	ref_op->turbo_dec.iter_max = get_iter_max();
-	ref_op->turbo_dec.iter_count = ref_op->turbo_dec.iter_max;
 
 	if (test_vector.op_type != RTE_BBDEV_OP_NONE)
 		copy_reference_dec_op(ops_enq, num_ops, 0, bufs->inputs,
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 08/17] test/bbdev: test start/stop bbdev API
  2023-03-02 20:22 ` [PATCH v3 08/17] test/bbdev: test start/stop bbdev API Hernan Vargas
@ 2023-03-03 12:31   ` Maxime Coquelin
  0 siblings, 0 replies; 23+ messages in thread
From: Maxime Coquelin @ 2023-03-03 12:31 UTC (permalink / raw)
  To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang



On 3/2/23 21:22, Hernan Vargas wrote:
> Add a call to queue start and queue stop specifically for testing the
> bbdev API.
> 
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
>   app/test-bbdev/test_bbdev_perf.c | 19 +++++++++++++------
>   1 file changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
> index 546fc195aac4..7bfc4cd5779e 100644
> --- a/app/test-bbdev/test_bbdev_perf.c
> +++ b/app/test-bbdev/test_bbdev_perf.c
> @@ -886,19 +886,23 @@ add_bbdev_dev(uint8_t dev_id, struct rte_bbdev_info *info,
>   					"Allocated all queues (id=%u) at prio%u on dev%u\n",
>   					queue_id, qconf.priority, dev_id);
>   			qconf.priority++;
> -			ret = rte_bbdev_queue_configure(ad->dev_id, queue_id,
> -					&qconf);
> +			ret = rte_bbdev_queue_configure(ad->dev_id, queue_id, &qconf);
>   		}
>   		if (ret != 0) {
> -			printf("All queues on dev %u allocated: %u\n",
> -					dev_id, queue_id);
> +			printf("All queues on dev %u allocated: %u\n", dev_id, queue_id);
> +			break;
> +		}
> +		ret = rte_bbdev_queue_start(ad->dev_id, queue_id);
> +		if (ret != 0) {
> +			printf("Failed to start queue on dev %u q_id: %u\n", dev_id, queue_id);
>   			break;
>   		}
>   		ad->queue_ids[queue_id] = queue_id;
>   	}
>   	TEST_ASSERT(queue_id != 0,
> -			"ERROR Failed to configure any queues on dev %u",
> -			dev_id);
> +			"ERROR Failed to configure any queues on dev %u\n"
> +			"\tthe device may not support the related operation capability\n"
> +			"\tor the device may not have been configured yet", dev_id);
>   	ad->nb_queues = queue_id;
>   
>   	set_avail_op(ad, op_type);
> @@ -3844,6 +3848,9 @@ throughput_pmd_lcore_ldpc_dec(void *arg)
>   		TEST_ASSERT_SUCCESS(ret, "Validation failed!");
>   	}
>   
> +	ret = rte_bbdev_queue_stop(tp->dev_id, queue_id);
> +	if (ret != 0)
> +		printf("Failed to stop queue on dev %u q_id: %u\n", tp->dev_id, queue_id);
>   	rte_bbdev_dec_op_free_bulk(ops_enq, num_ops);
>   
>   	double tb_len_bits = calc_ldpc_dec_TB_size(ref_op);

Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks,
Maxime


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 09/17] test/bbdev: add timeout for enq/deq loops
  2023-03-02 20:22 ` [PATCH v3 09/17] test/bbdev: add timeout for enq/deq loops Hernan Vargas
@ 2023-03-03 12:44   ` Maxime Coquelin
  0 siblings, 0 replies; 23+ messages in thread
From: Maxime Coquelin @ 2023-03-03 12:44 UTC (permalink / raw)
  To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang



On 3/2/23 21:22, Hernan Vargas wrote:
> Added timeout to prevent infinite loop condition if the device
> doesn't enqueue/dequeue.
> 
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
>   app/test-bbdev/test_bbdev_perf.c | 133 ++++++++++++++++++++++++++-----
>   1 file changed, 113 insertions(+), 20 deletions(-)
> 
> diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
> index 7bfc4cd5779e..7a4841a069ee 100644
> --- a/app/test-bbdev/test_bbdev_perf.c
> +++ b/app/test-bbdev/test_bbdev_perf.c
> @@ -192,6 +192,15 @@ struct test_time_stats {
>   typedef int (test_case_function)(struct active_device *ad,
>   		struct test_op_params *op_params);
>   
> +/* Get device status before timeout exit */
> +static inline void
> +timeout_exit(uint8_t dev_id)
> +{
> +	struct rte_bbdev_info info;
> +	rte_bbdev_info_get(dev_id, &info);
> +	printf("Device Status %s\n", rte_bbdev_device_status_str(info.drv.device_status));
> +}
> +
>   static inline void
>   mbuf_reset(struct rte_mbuf *m)
>   {
> @@ -3553,7 +3562,7 @@ throughput_pmd_lcore_dec(void *arg)
>   		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
>   
>   	for (i = 0; i < TEST_REPETITIONS; ++i) {
> -
> +		uint32_t time_out = 0;
>   		for (j = 0; j < num_ops; ++j)
>   			mbuf_reset(ops_enq[j]->turbo_dec.hard_output.data);
>   		if (so_enable)
> @@ -3573,12 +3582,23 @@ throughput_pmd_lcore_dec(void *arg)
>   
>   			deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
> +			}
>   		}
>   
>   		/* dequeue the remaining */
> +		time_out = 0;
>   		while (deq < enq) {
>   			deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
>   		}
>   
>   		total_time += rte_rdtsc_precise() - start_time;
> @@ -3669,6 +3689,7 @@ bler_pmd_lcore_ldpc_dec(void *arg)
>   		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
>   
>   	for (i = 0; i < 1; ++i) { /* Could add more iterations */
> +		uint32_t time_out = 0;
>   		for (j = 0; j < num_ops; ++j) {
>   			if (!loopback)
>   				mbuf_reset(
> @@ -3692,12 +3713,23 @@ bler_pmd_lcore_ldpc_dec(void *arg)
>   
>   			deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
> +			}
>   		}
>   
>   		/* dequeue the remaining */
> +		time_out = 0;
>   		while (deq < enq) {
>   			deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
>   		}
>   
>   		total_time += rte_rdtsc_precise() - start_time;
> @@ -3796,6 +3828,7 @@ throughput_pmd_lcore_ldpc_dec(void *arg)
>   		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
>   
>   	for (i = 0; i < TEST_REPETITIONS; ++i) {
> +		uint32_t time_out = 0;
>   		for (j = 0; j < num_ops; ++j) {
>   			if (!loopback)
>   				mbuf_reset(
> @@ -3820,12 +3853,23 @@ throughput_pmd_lcore_ldpc_dec(void *arg)
>   
>   			deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
> +			}
>   		}
>   
>   		/* dequeue the remaining */
> +		time_out = 0;
>   		while (deq < enq) {
>   			deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
>   		}
>   
>   		total_time += rte_rdtsc_precise() - start_time;
> @@ -3907,7 +3951,7 @@ throughput_pmd_lcore_enc(void *arg)
>   		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
>   
>   	for (i = 0; i < TEST_REPETITIONS; ++i) {
> -
> +		uint32_t time_out = 0;
>   		if (test_vector.op_type != RTE_BBDEV_OP_NONE)
>   			for (j = 0; j < num_ops; ++j)
>   				mbuf_reset(ops_enq[j]->turbo_enc.output.data);
> @@ -3925,12 +3969,23 @@ throughput_pmd_lcore_enc(void *arg)
>   
>   			deq += rte_bbdev_dequeue_enc_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
> +			}
>   		}
>   
>   		/* dequeue the remaining */
> +		time_out = 0;
>   		while (deq < enq) {
>   			deq += rte_bbdev_dequeue_enc_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
>   		}
>   
>   		total_time += rte_rdtsc_precise() - start_time;
> @@ -3997,7 +4052,7 @@ throughput_pmd_lcore_ldpc_enc(void *arg)
>   		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
>   
>   	for (i = 0; i < TEST_REPETITIONS; ++i) {
> -
> +		uint32_t time_out = 0;
>   		if (test_vector.op_type != RTE_BBDEV_OP_NONE)
>   			for (j = 0; j < num_ops; ++j)
>   				mbuf_reset(ops_enq[j]->turbo_enc.output.data);
> @@ -4015,12 +4070,23 @@ throughput_pmd_lcore_ldpc_enc(void *arg)
>   
>   			deq += rte_bbdev_dequeue_ldpc_enc_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
> +			}
>   		}
>   
>   		/* dequeue the remaining */
> +		time_out = 0;
>   		while (deq < enq) {
>   			deq += rte_bbdev_dequeue_ldpc_enc_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
>   		}
>   
>   		total_time += rte_rdtsc_precise() - start_time;
> @@ -4086,7 +4152,7 @@ throughput_pmd_lcore_fft(void *arg)
>   		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
>   
>   	for (i = 0; i < TEST_REPETITIONS; ++i) {
> -
> +		uint32_t time_out = 0;
>   		for (j = 0; j < num_ops; ++j)
>   			mbuf_reset(ops_enq[j]->fft.base_output.data);
>   
> @@ -4103,12 +4169,23 @@ throughput_pmd_lcore_fft(void *arg)
>   
>   			deq += rte_bbdev_dequeue_fft_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
> +			}
>   		}
>   
>   		/* dequeue the remaining */
> +		time_out = 0;
>   		while (deq < enq) {
>   			deq += rte_bbdev_dequeue_fft_ops(tp->dev_id,
>   					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
>   		}
>   
>   		total_time += rte_rdtsc_precise() - start_time;
> @@ -4481,6 +4558,7 @@ latency_test_dec(struct rte_mempool *mempool,
>   
>   	for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
>   		uint16_t enq = 0, deq = 0;
> +		uint32_t time_out = 0;
>   		bool first_time = true;
>   		last_time = 0;
>   
> @@ -4523,6 +4601,11 @@ latency_test_dec(struct rte_mempool *mempool,
>   				last_time = rte_rdtsc_precise() - start_time;
>   				first_time = false;
>   			}
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
>   		} while (unlikely(burst_sz != deq));
>   
>   		*max_time = RTE_MAX(*max_time, last_time);
> @@ -4615,7 +4698,11 @@ latency_test_ldpc_dec(struct rte_mempool *mempool,
>   				first_time = false;
>   			}
>   			time_out++;
> -		} while ((burst_sz != deq) && (time_out < TIME_OUT_POLL));
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
> +		} while (unlikely(burst_sz != deq));
>   
>   		*max_time = RTE_MAX(*max_time, last_time);
>   		*min_time = RTE_MIN(*min_time, last_time);
> @@ -4624,14 +4711,8 @@ latency_test_ldpc_dec(struct rte_mempool *mempool,
>   		if (extDdr)
>   			retrieve_harq_ddr(dev_id, queue_id, ops_enq, burst_sz);
>   
> -		if (burst_sz != deq) {
> -			struct rte_bbdev_info info;
> -			ret = TEST_FAILED;
> -			rte_bbdev_info_get(dev_id, &info);
> -			TEST_ASSERT_SUCCESS(ret, "Dequeue timeout!");
> -		} else if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
> -			ret = validate_ldpc_dec_op(ops_deq, burst_sz, ref_op,
> -					vector_mask);
> +		if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
> +			ret = validate_ldpc_dec_op(ops_deq, burst_sz, ref_op, vector_mask);
>   			TEST_ASSERT_SUCCESS(ret, "Validation failed!");
>   		}
>   
> @@ -4692,17 +4773,17 @@ latency_test_enc(struct rte_mempool *mempool,
>   				first_time = false;
>   			}
>   			time_out++;
> -		} while ((burst_sz != deq) && (time_out < TIME_OUT_POLL));
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
> +		} while (unlikely(burst_sz != deq));
>   
>   		*max_time = RTE_MAX(*max_time, last_time);
>   		*min_time = RTE_MIN(*min_time, last_time);
>   		*total_time += last_time;
> -		if (burst_sz != deq) {
> -			struct rte_bbdev_info info;
> -			ret = TEST_FAILED;
> -			rte_bbdev_info_get(dev_id, &info);
> -			TEST_ASSERT_SUCCESS(ret, "Dequeue timeout!");
> -		} else if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
> +
> +		if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
>   			ret = validate_enc_op(ops_deq, burst_sz, ref_op);
>   			TEST_ASSERT_SUCCESS(ret, "Validation failed!");
>   		}
> @@ -4728,6 +4809,7 @@ latency_test_ldpc_enc(struct rte_mempool *mempool,
>   
>   	for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
>   		uint16_t enq = 0, deq = 0;
> +		uint32_t time_out = 0;
>   		bool first_time = true;
>   		last_time = 0;
>   
> @@ -4763,6 +4845,11 @@ latency_test_ldpc_enc(struct rte_mempool *mempool,
>   				last_time += rte_rdtsc_precise() - start_time;
>   				first_time = false;
>   			}
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
>   		} while (unlikely(burst_sz != deq));
>   
>   		*max_time = RTE_MAX(*max_time, last_time);
> @@ -4796,6 +4883,7 @@ latency_test_fft(struct rte_mempool *mempool,
>   
>   	for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
>   		uint16_t enq = 0, deq = 0;
> +		uint32_t time_out = 0;
>   		bool first_time = true;
>   		last_time = 0;
>   
> @@ -4831,6 +4919,11 @@ latency_test_fft(struct rte_mempool *mempool,
>   				last_time += rte_rdtsc_precise() - start_time;
>   				first_time = false;
>   			}
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
>   		} while (unlikely(burst_sz != deq));
>   
>   		*max_time = RTE_MAX(*max_time, last_time);

Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks,
Maxime


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 10/17] test/bbdev: add support for BLER for 4G
  2023-03-02 20:22 ` [PATCH v3 10/17] test/bbdev: add support for BLER for 4G Hernan Vargas
@ 2023-03-03 16:41   ` Maxime Coquelin
  0 siblings, 0 replies; 23+ messages in thread
From: Maxime Coquelin @ 2023-03-03 16:41 UTC (permalink / raw)
  To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang



On 3/2/23 21:22, Hernan Vargas wrote:
> New feature to add BLER support for 4G in test-bbdev.
> 
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> ---
>   app/test-bbdev/test_bbdev_perf.c | 195 ++++++++++++++++++++++++++++++-
>   1 file changed, 194 insertions(+), 1 deletion(-)
> 
> diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
> index 7a4841a069ee..bd8310ac2c56 100644
> --- a/app/test-bbdev/test_bbdev_perf.c
> +++ b/app/test-bbdev/test_bbdev_perf.c
> @@ -1768,6 +1768,30 @@ gen_qm2_llr(int8_t *llrs, uint32_t j, double N0, double llr_max)
>   	llrs[j] = (int8_t) b;
>   }
>   
> +/* Simple LLR generation assuming AWGN and QPSK */
> +static void
> +gen_turbo_llr(int8_t *llrs, uint32_t j, double N0, double llr_max)
> +{
> +	double b, b1, n;
> +	double coeff = 2.0 * sqrt(N0);
> +
> +	/* Ignore in vectors null LLRs not to be saturated */
> +	if (llrs[j] == 0)
> +		return;
> +
> +	/* Note don't change sign here */
> +	n = randn(j % 2);
> +	b1 = ((llrs[j] > 0 ? 2.0 : -2.0)
> +			+ coeff * n) / N0;
> +	b = b1 * (1 << 4);
> +	b = round(b);
> +	if (b > llr_max)
> +		b = llr_max;
> +	if (b < -llr_max)
> +		b = -llr_max;
> +	llrs[j] = (int8_t) b;
> +}
> +
>   /* Generate LLR for a given SNR */
>   static void
>   generate_llr_input(uint16_t n, struct rte_bbdev_op_data *inputs,
> @@ -1803,6 +1827,27 @@ generate_llr_input(uint16_t n, struct rte_bbdev_op_data *inputs,
>   	}
>   }
>   
> +/* Generate LLR for turbo decoder for a given SNR */
> +static void
> +generate_turbo_llr_input(uint16_t n, struct rte_bbdev_op_data *inputs,
> +		struct rte_bbdev_dec_op *ref_op)
> +{
> +	struct rte_mbuf *m;
> +	uint32_t i, j, range;
> +	double N0, llr_max;
> +
> +	llr_max = 127;
> +	range = ref_op->turbo_dec.input.length;
> +	N0 = 1.0 / pow(10.0, get_snr() / 10.0);
> +
> +	for (i = 0; i < n; ++i) {
> +		m = inputs[i].data;
> +		int8_t *llrs = rte_pktmbuf_mtod_offset(m, int8_t *, 0);
> +		for (j = 0; j < range; ++j)
> +			gen_turbo_llr(llrs, j, N0, llr_max);
> +	}
> +}
> +
>   static void
>   copy_reference_ldpc_dec_op(struct rte_bbdev_dec_op **ops, unsigned int n,
>   		unsigned int start_idx,
> @@ -2316,6 +2361,30 @@ validate_ldpc_bler(struct rte_bbdev_dec_op **ops, const uint16_t n)
>   	return errors;
>   }
>   
> +/* Check Number of code blocks errors */
> +static int
> +validate_turbo_bler(struct rte_bbdev_dec_op **ops, const uint16_t n)
> +{
> +	unsigned int i;
> +	struct op_data_entries *hard_data_orig = &test_vector.entries[DATA_HARD_OUTPUT];
> +	struct rte_bbdev_op_turbo_dec *ops_td;
> +	struct rte_bbdev_op_data *hard_output;
> +	int errors = 0;
> +	struct rte_mbuf *m;
> +
> +	for (i = 0; i < n; ++i) {
> +		ops_td = &ops[i]->turbo_dec;
> +		hard_output = &ops_td->hard_output;
> +		m = hard_output->data;
> +		if (memcmp(rte_pktmbuf_mtod_offset(m, uint32_t *, 0),
> +				hard_data_orig->segments[0].addr,
> +				hard_data_orig->segments[0].length))
> +			errors++;
> +	}
> +	return errors;
> +}
> +
> +
>   static int
>   validate_ldpc_dec_op(struct rte_bbdev_dec_op **ops, const uint16_t n,
>   		struct rte_bbdev_dec_op *ref_op, const int vector_mask)
> @@ -3771,6 +3840,126 @@ bler_pmd_lcore_ldpc_dec(void *arg)
>   	return TEST_SUCCESS;
>   }
>   
> +
> +static int
> +bler_pmd_lcore_turbo_dec(void *arg)
> +{
> +	struct thread_params *tp = arg;
> +	uint16_t enq, deq;
> +	uint64_t total_time = 0, start_time;
> +	const uint16_t queue_id = tp->queue_id;
> +	const uint16_t burst_sz = tp->op_params->burst_sz;
> +	const uint16_t num_ops = tp->op_params->num_to_process;
> +	struct rte_bbdev_dec_op *ops_enq[num_ops];
> +	struct rte_bbdev_dec_op *ops_deq[num_ops];
> +	struct rte_bbdev_dec_op *ref_op = tp->op_params->ref_dec_op;
> +	struct test_buffers *bufs = NULL;
> +	int i, j, ret;
> +	struct rte_bbdev_info info;
> +	uint16_t num_to_enq;
> +
> +	TEST_ASSERT_SUCCESS((burst_sz > MAX_BURST),
> +			"BURST_SIZE should be <= %u", MAX_BURST);
> +
> +	rte_bbdev_info_get(tp->dev_id, &info);
> +
> +	TEST_ASSERT_SUCCESS((num_ops > info.drv.queue_size_lim),
> +			"NUM_OPS cannot exceed %u for this device",
> +			info.drv.queue_size_lim);
> +
> +	bufs = &tp->op_params->q_bufs[GET_SOCKET(info.socket_id)][queue_id];
> +
> +	rte_wait_until_equal_16(&tp->op_params->sync, SYNC_START, __ATOMIC_RELAXED);
> +
> +	ret = rte_bbdev_dec_op_alloc_bulk(tp->op_params->mp, ops_enq, num_ops);
> +	TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", num_ops);
> +
> +	/* For BLER tests we need to enable early termination */
> +	if (!check_bit(ref_op->turbo_dec.op_flags,
> +			RTE_BBDEV_TURBO_EARLY_TERMINATION))
> +		ref_op->turbo_dec.op_flags +=
> +				RTE_BBDEV_TURBO_EARLY_TERMINATION;
> +	ref_op->turbo_dec.iter_max = get_iter_max();
> +	ref_op->turbo_dec.iter_count = ref_op->turbo_dec.iter_max;
> +
> +	if (test_vector.op_type != RTE_BBDEV_OP_NONE)
> +		copy_reference_dec_op(ops_enq, num_ops, 0, bufs->inputs,
> +				bufs->hard_outputs, bufs->soft_outputs,
> +				ref_op);
> +	generate_turbo_llr_input(num_ops, bufs->inputs, ref_op);
> +
> +	/* Set counter to validate the ordering */
> +	for (j = 0; j < num_ops; ++j)
> +		ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
> +
> +	for (i = 0; i < 1; ++i) { /* Could add more iterations */
> +		uint32_t time_out = 0;
> +		for (j = 0; j < num_ops; ++j) {
> +			mbuf_reset(
> +			ops_enq[j]->turbo_dec.hard_output.data);
> +		}
> +
> +		start_time = rte_rdtsc_precise();
> +
> +		for (enq = 0, deq = 0; enq < num_ops;) {
> +			num_to_enq = burst_sz;
> +
> +			if (unlikely(num_ops - enq < num_to_enq))
> +				num_to_enq = num_ops - enq;
> +
> +			enq += rte_bbdev_enqueue_dec_ops(tp->dev_id,
> +					queue_id, &ops_enq[enq], num_to_enq);
> +
> +			deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
> +					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Enqueue timeout!");
> +			}
> +		}
> +
> +		/* dequeue the remaining */
> +		time_out = 0;
> +		while (deq < enq) {
> +			deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
> +					queue_id, &ops_deq[deq], enq - deq);
> +			time_out++;
> +			if (time_out >= TIME_OUT_POLL) {
> +				timeout_exit(tp->dev_id);
> +				TEST_ASSERT_SUCCESS(TEST_FAILED, "Dequeue timeout!");
> +			}
> +		}
> +
> +		total_time += rte_rdtsc_precise() - start_time;
> +	}
> +
> +	tp->iter_count = 0;
> +	tp->iter_average = 0;
> +	/* get the max of iter_count for all dequeued ops */
> +	for (i = 0; i < num_ops; ++i) {
> +		tp->iter_count = RTE_MAX(ops_enq[i]->turbo_dec.iter_count,
> +				tp->iter_count);
> +		tp->iter_average += (double) ops_enq[i]->turbo_dec.iter_count;
> +	}
> +
> +	tp->iter_average /= num_ops;
> +	tp->bler = (double) validate_turbo_bler(ops_deq, num_ops) / num_ops;
> +
> +	rte_bbdev_dec_op_free_bulk(ops_enq, num_ops);
> +
> +	double tb_len_bits = calc_dec_TB_size(ref_op);
> +	tp->ops_per_sec = ((double)num_ops * 1) /
> +			((double)total_time / (double)rte_get_tsc_hz());
> +	tp->mbps = (((double)(num_ops * 1 * tb_len_bits)) /
> +			1000000.0) / ((double)total_time /
> +			(double)rte_get_tsc_hz());
> +	printf("TBS %.0f Time %.0f\n", tb_len_bits, 1000000.0 *
> +			((double)total_time / (double)rte_get_tsc_hz()));
> +
> +	return TEST_SUCCESS;
> +}
> +
>   static int
>   throughput_pmd_lcore_ldpc_dec(void *arg)
>   {
> @@ -4275,7 +4464,7 @@ print_dec_bler(struct thread_params *t_params, unsigned int used_cores)
>   	total_bler /= used_cores;
>   	total_iter /= used_cores;
>   
> -	printf("SNR %.2f BLER %.1f %% - Iterations %.1f %d - Tp %.1f Mbps %s\n",
> +	printf("SNR %.2f BLER %.1f %% - Iterations %.1f %d - Tp %.3f Mbps %s\n",
>   			snr, total_bler * 100, total_iter, get_iter_max(),
>   			total_mbps, get_vector_filename());
>   }
> @@ -4327,6 +4516,10 @@ bler_test(struct active_device *ad,
>   			&& !check_bit(test_vector.ldpc_dec.op_flags,
>   			RTE_BBDEV_LDPC_LLR_COMPRESSION))
>   		bler_function = bler_pmd_lcore_ldpc_dec;
> +	else if ((test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC) &&
> +			!check_bit(test_vector.turbo_dec.op_flags,
> +			RTE_BBDEV_TURBO_SOFT_OUTPUT))
> +		bler_function = bler_pmd_lcore_turbo_dec;
>   	else
>   		return TEST_SKIPPED;
>   

Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks,
Maxime


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 01/17] test/bbdev: fix seg fault for non supported HARQ len
  2023-03-02 20:21 ` [PATCH v3 01/17] test/bbdev: fix seg fault for non supported HARQ len Hernan Vargas
@ 2023-03-06 13:17   ` Maxime Coquelin
  0 siblings, 0 replies; 23+ messages in thread
From: Maxime Coquelin @ 2023-03-06 13:17 UTC (permalink / raw)
  To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang, stable



On 3/2/23 21:21, Hernan Vargas wrote:
> Fix segmentation fault happening in corner case in test-bbdev.
> This fault could happen when running some specific vectors which size
> are not supported by the PMD.
> 
> Fixes: 335c11fd276 ("app/bbdev: support HARQ validation")

The Fixes tag is still wrong, the SHA-1 should be 12 chars.
I'll fix it when applying

> Cc: stable@dpdk.org
> 
> Signed-off-by: Hernan Vargas <hernan.vargas@intel.com>
> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> ---
>   app/test-bbdev/test_bbdev_perf.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
> index 45e1780df772..027f32cbf1b7 100644
> --- a/app/test-bbdev/test_bbdev_perf.c
> +++ b/app/test-bbdev/test_bbdev_perf.c
> @@ -84,7 +84,7 @@
>   /* Increment for next code block in external HARQ memory */
>   #define HARQ_INCR 32768
>   /* Headroom for filler LLRs insertion in HARQ buffer */
> -#define FILLER_HEADROOM 1024
> +#define FILLER_HEADROOM 2048
>   /* Constants from K0 computation from 3GPP 38.212 Table 5.4.2.1-2 */
>   #define N_ZC_1 66 /* N = 66 Zc for BG 1 */
>   #define N_ZC_2 50 /* N = 50 Zc for BG 2 */
> @@ -2111,9 +2111,9 @@ validate_op_harq_chain(struct rte_bbdev_op_data *op,
>   					ops_ld->n_filler;
>   			if (data_len > deRmOutSize)
>   				data_len = deRmOutSize;
> -			if (data_len > orig_op->segments[i].length)
> -				data_len = orig_op->segments[i].length;
>   		}
> +		if (data_len > orig_op->segments[i].length)
> +			data_len = orig_op->segments[i].length;
>   		/*
>   		 * HARQ output can have minor differences
>   		 * due to integer representation and related scaling


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 00/17] test/bbdev: changes for 23.03
  2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
                   ` (16 preceding siblings ...)
  2023-03-02 20:22 ` [PATCH v3 17/17] test/bbdev: remove iter count from bler test Hernan Vargas
@ 2023-03-06 13:20 ` Maxime Coquelin
  17 siblings, 0 replies; 23+ messages in thread
From: Maxime Coquelin @ 2023-03-06 13:20 UTC (permalink / raw)
  To: Hernan Vargas, dev, gakhil, trix; +Cc: nicolas.chautru, qi.z.zhang



On 3/2/23 21:21, Hernan Vargas wrote:
> v3: Added new commit with enq/deq timeout implementaion.
> v2: Made changes requested during review. Added 3 commits.
> v1: Upstreaming bbdev-test changes for 23.03.
> 
> Hernan Vargas (17):
>    test/bbdev: fix seg fault for non supported HARQ len
>    test/bbdev: extend HARQ tolerance
>    test/bbdev: remove check for invalid opaque data
>    test/bbdev: refactor TB throughput report
>    test/bbdev: add timeout for latency tests
>    test/bbdev: enable early termination for validation
>    test/bbdev: report device status in test-bbdev
>    test/bbdev: test start/stop bbdev API
>    test/bbdev: add timeout for enq/deq loops
>    test/bbdev: add support for BLER for 4G
>    test/bbdev: extend support for large TB
>    test/bbdev: adjustment for soft output
>    test/bbdev: expose warning counters
>    test/bbdev: remove iteration count check
>    test/bbdev: use mbuf reset function
>    test/bbdev: remove max iteration from vectors
>    test/bbdev: remove iter count from bler test
> 
>   app/test-bbdev/test_bbdev_perf.c              | 520 ++++++++++++++----
>   app/test-bbdev/test_bbdev_vector.c            |  14 -
>   app/test-bbdev/test_bbdev_vector.h            |   1 -
>   .../test_vectors/ldpc_dec_HARQ_1_0.data       |   3 -
>   .../test_vectors/ldpc_dec_HARQ_1_1.data       |   3 -
>   .../test_vectors/ldpc_dec_HARQ_1_2.data       |   3 -
>   .../test_vectors/ldpc_dec_v11835.data         |   3 -
>   .../test_vectors/ldpc_dec_v2342_drop.data     |   3 -
>   .../test_vectors/ldpc_dec_v7813.data          |   3 -
>   .../test_vectors/ldpc_dec_v8480.data          |   3 -
>   .../test_vectors/ldpc_dec_v8568.data          |   3 -
>   .../test_vectors/ldpc_dec_v9503.data          |   3 -
>   ...turbo_dec_c1_k40_r0_e17280_sbd_negllr.data |   3 -
>   ..._r0_e10376_crc24b_sbd_negllr_high_snr.data |   3 -
>   ...4_r0_e10376_crc24b_sbd_negllr_low_snr.data |   3 -
>   .../turbo_dec_c1_k6144_r0_e34560_posllr.data  |   3 -
>   ...rbo_dec_c1_k6144_r0_e34560_sbd_negllr.data |   3 -
>   ...rbo_dec_c1_k6144_r0_e34560_sbd_posllr.data |   3 -
>   ...c_c2_k3136_r0_e4920_sbd_negllr_crc24b.data |   3 -
>   19 files changed, 416 insertions(+), 167 deletions(-)
> 


Applied to dpdk-next-baseband/for-main.

Thanks,
Maxime


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2023-03-06 13:20 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-02 20:21 [PATCH v3 00/17] test/bbdev: changes for 23.03 Hernan Vargas
2023-03-02 20:21 ` [PATCH v3 01/17] test/bbdev: fix seg fault for non supported HARQ len Hernan Vargas
2023-03-06 13:17   ` Maxime Coquelin
2023-03-02 20:21 ` [PATCH v3 02/17] test/bbdev: extend HARQ tolerance Hernan Vargas
2023-03-02 20:21 ` [PATCH v3 03/17] test/bbdev: remove check for invalid opaque data Hernan Vargas
2023-03-02 20:21 ` [PATCH v3 04/17] test/bbdev: refactor TB throughput report Hernan Vargas
2023-03-02 20:21 ` [PATCH v3 05/17] test/bbdev: add timeout for latency tests Hernan Vargas
2023-03-02 20:22 ` [PATCH v3 06/17] test/bbdev: enable early termination for validation Hernan Vargas
2023-03-02 20:22 ` [PATCH v3 07/17] test/bbdev: report device status in test-bbdev Hernan Vargas
2023-03-02 20:22 ` [PATCH v3 08/17] test/bbdev: test start/stop bbdev API Hernan Vargas
2023-03-03 12:31   ` Maxime Coquelin
2023-03-02 20:22 ` [PATCH v3 09/17] test/bbdev: add timeout for enq/deq loops Hernan Vargas
2023-03-03 12:44   ` Maxime Coquelin
2023-03-02 20:22 ` [PATCH v3 10/17] test/bbdev: add support for BLER for 4G Hernan Vargas
2023-03-03 16:41   ` Maxime Coquelin
2023-03-02 20:22 ` [PATCH v3 11/17] test/bbdev: extend support for large TB Hernan Vargas
2023-03-02 20:22 ` [PATCH v3 12/17] test/bbdev: adjustment for soft output Hernan Vargas
2023-03-02 20:22 ` [PATCH v3 13/17] test/bbdev: expose warning counters Hernan Vargas
2023-03-02 20:22 ` [PATCH v3 14/17] test/bbdev: remove iteration count check Hernan Vargas
2023-03-02 20:22 ` [PATCH v3 15/17] test/bbdev: use mbuf reset function Hernan Vargas
2023-03-02 20:22 ` [PATCH v3 16/17] test/bbdev: remove max iteration from vectors Hernan Vargas
2023-03-02 20:22 ` [PATCH v3 17/17] test/bbdev: remove iter count from bler test Hernan Vargas
2023-03-06 13:20 ` [PATCH v3 00/17] test/bbdev: changes for 23.03 Maxime Coquelin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.