[Accel-config] [PATCH 6/8] add chain opt & expand scan src1 buffer
"Guo, Lingyan" <[email protected]> Fri, 27 Oct 2023 11:06:53 +0800
| Newsgroups | dev.linux.lists.accel-config |
|---|---|
| Message-ID | <[email protected]> |
change: add parameter -c to support chaining expend scan input to MAX_DEST_SIZE Signed-off-by: Guo, Lingyan <[email protected]> --- test/iaa.c | 15 ++++++++------- test/iaa.h | 4 ++-- test/iaa_prep.c | 2 +- test/iaa_test.c | 14 ++++++++++---- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/test/iaa.c b/test/iaa.c index 3256cde..a313906 100644 --- a/test/iaa.c +++ b/test/iaa.c @@ -306,19 +306,18 @@ static int init_scan(struct task *tsk, int tflags, tsk->xfer_size = src1_xfer_size; // Enough space for Chain decompress result - tsk->input = aligned_alloc(ADDR_ALIGNMENT, src1_xfer_size); + tsk->input = aligned_alloc(ADDR_ALIGNMENT, IAA_GENERAL_MAX_DEST_SIZE); if (!tsk->input) return -ENOMEM; + memset_pattern(tsk->input, 0, IAA_GENERAL_MAX_DEST_SIZE); for (i = 0; i < (src1_xfer_size / 4); i++) ((uint32_t *)tsk->input)[i] = pattern++; - tsk->src1 = aligned_alloc(ADDR_ALIGNMENT, src1_xfer_size); + tsk->src1 = aligned_alloc(ADDR_ALIGNMENT, IAA_GENERAL_MAX_DEST_SIZE); if (!tsk->src1) return -ENOMEM; - memset_pattern(tsk->src1, 0, src1_xfer_size); memcpy(tsk->src1, tsk->input, src1_xfer_size); - tsk->src2 = aligned_alloc(32, IAA_FILTER_AECS_SIZE); if (!tsk->src2) return -ENOMEM; @@ -1496,19 +1495,21 @@ static int iaa_wait_scan(struct acctest_context *ctx, struct task *tsk) return ACCTEST_STATUS_OK; } -int iaa_scan_multi_task_nodes(struct acctest_context *ctx) +int iaa_scan_multi_task_nodes(struct acctest_context *ctx, int chaining) { struct task_node *tsk_node = ctx->multi_task_node; int ret = ACCTEST_STATUS_OK; while (tsk_node) { - tsk_node->tsk->dflags |= (IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR); + tsk_node->tsk->opcode = IAX_OPCODE_SCAN; + + tsk_node->tsk->dflags = (IDXD_OP_FLAG_CRAV | IDXD_OP_FLAG_RCR); if ((tsk_node->tsk->test_flags & TEST_FLAGS_BOF) && ctx->bof) tsk_node->tsk->dflags |= IDXD_OP_FLAG_BOF; tsk_node->tsk->dflags |= IDXD_OP_FLAG_RD_SRC2_AECS; - iaa_prep_scan(tsk_node->tsk); + iaa_prep_scan(tsk_node->tsk, chaining); tsk_node = tsk_node->next; } diff --git a/test/iaa.h b/test/iaa.h index ddbf1d9..574229d 100644 --- a/test/iaa.h +++ b/test/iaa.h @@ -20,7 +20,7 @@ int iaa_zdecompress32_multi_task_nodes(struct acctest_context *ctx); int iaa_compress_multi_task_nodes(struct acctest_context *ctx); int iaa_prehook_compress_multi_task_nodes(struct acctest_context *ctx); int iaa_decompress_multi_task_nodes(struct acctest_context *ctx); -int iaa_scan_multi_task_nodes(struct acctest_context *ctx); +int iaa_scan_multi_task_nodes(struct acctest_context *ctx, int chaining); int iaa_set_membership_multi_task_nodes(struct acctest_context *ctx); int iaa_extract_multi_task_nodes(struct acctest_context *ctx); int iaa_select_multi_task_nodes(struct acctest_context *ctx); @@ -41,7 +41,7 @@ void iaa_prep_zcompress32(struct task *tsk); void iaa_prep_zdecompress32(struct task *tsk); void iaa_prep_compress(struct task *tsk); void iaa_prep_decompress(struct task *tsk); -void iaa_prep_scan(struct task *tsk); +void iaa_prep_scan(struct task *tsk, int chaining); void iaa_prep_set_membership(struct task *tsk); void iaa_prep_extract(struct task *tsk); void iaa_prep_select(struct task *tsk); diff --git a/test/iaa_prep.c b/test/iaa_prep.c index add8bf0..966ea68 100644 --- a/test/iaa_prep.c +++ b/test/iaa_prep.c @@ -136,7 +136,7 @@ void iaa_prep_decompress(struct task *tsk) tsk->comp->status = 0; } -void iaa_prep_scan(struct task *tsk) +void iaa_prep_scan(struct task *tsk, int chaining) { info("preparing descriptor for scan\n"); diff --git a/test/iaa_test.c b/test/iaa_test.c index da76aef..3590cc3 100644 --- a/test/iaa_test.c +++ b/test/iaa_test.c @@ -28,6 +28,7 @@ static void usage(void) "-d ; wq device such as iax1/wq1.0\n" "-n <number of descriptors> ;descriptor count to submit\n" "-t <ms timeout> ; ms to wait for descs to complete\n" + "-c ; chain filter op with decompression\n" "-v ; verbose\n" "-h ; print this message\n"); } @@ -323,7 +324,8 @@ static int test_compress(struct acctest_context *ctx, size_t buf_size, int tflag } static int test_filter(struct acctest_context *ctx, size_t buf_size, int tflags, - int extra_flags_2, int extra_flags_3, uint32_t opcode, int num_desc) + int extra_flags_2, int extra_flags_3, uint32_t opcode, int num_desc, + int chaining) { struct task_node *tsk_node; int rc = ACCTEST_STATUS_OK; @@ -361,7 +363,7 @@ static int test_filter(struct acctest_context *ctx, size_t buf_size, int tflags, switch (opcode) { case IAX_OPCODE_SCAN: - rc = iaa_scan_multi_task_nodes(ctx); + rc = iaa_scan_multi_task_nodes(ctx, chaining); if (rc != ACCTEST_STATUS_OK) return rc; @@ -595,8 +597,9 @@ int main(int argc, char *argv[]) int dev_id = ACCTEST_DEVICE_ID_NO_INPUT; int dev_wq_id = ACCTEST_DEVICE_ID_NO_INPUT; unsigned int num_desc = 1; + int chaining = 0; - while ((opt = getopt(argc, argv, "w:l:f:1:2:3:a:m:o:b:c:d:n:t:p:vh")) != -1) { + while ((opt = getopt(argc, argv, "w:l:f:1:2:3:a:m:o:b:d:n:t:p:vhc")) != -1) { switch (opt) { case 'w': wq_type = atoi(optarg); @@ -636,6 +639,9 @@ int main(int argc, char *argv[]) case 'n': num_desc = strtoul(optarg, NULL, 0); break; + case 'c': + chaining = 1; + break; case 't': ms_timeout = strtoul(optarg, NULL, 0); break; @@ -704,7 +710,7 @@ int main(int argc, char *argv[]) case IAX_OPCODE_FIND_UNIQUE: case IAX_OPCODE_EXPAND: rc = test_filter(iaa, buf_size, tflags, extra_flags_2, - extra_flags_3, opcode, num_desc); + extra_flags_3, opcode, num_desc, chaining); if (rc != ACCTEST_STATUS_OK) goto error; break; -- 2.34.1