accel: use iovecs for crc32c operations
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: Ic9f1f002edf273e9cd2247f353b5d7de9d2dea05 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15941 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
bc6a14636a
commit
3d1d5452e0
@ -352,11 +352,12 @@ spdk_accel_submit_crc32c(struct spdk_io_channel *ch, uint32_t *crc_dst,
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
accel_task->s.iovs = &accel_task->aux_iovs[SPDK_ACCEL_AUX_IOV_SRC];
|
||||||
|
accel_task->s.iovs[0].iov_base = src;
|
||||||
|
accel_task->s.iovs[0].iov_len = nbytes;
|
||||||
|
accel_task->s.iovcnt = 1;
|
||||||
accel_task->crc_dst = crc_dst;
|
accel_task->crc_dst = crc_dst;
|
||||||
accel_task->src = src;
|
|
||||||
accel_task->s.iovcnt = 0;
|
|
||||||
accel_task->seed = seed;
|
accel_task->seed = seed;
|
||||||
accel_task->nbytes = nbytes;
|
|
||||||
accel_task->op_code = ACCEL_OPC_CRC32C;
|
accel_task->op_code = ACCEL_OPC_CRC32C;
|
||||||
accel_task->src_domain = NULL;
|
accel_task->src_domain = NULL;
|
||||||
accel_task->dst_domain = NULL;
|
accel_task->dst_domain = NULL;
|
||||||
|
@ -546,11 +546,7 @@ sw_accel_submit_tasks(struct spdk_io_channel *ch, struct spdk_accel_task *accel_
|
|||||||
accel_task->s2.iovs, accel_task->s2.iovcnt);
|
accel_task->s2.iovs, accel_task->s2.iovcnt);
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_CRC32C:
|
case ACCEL_OPC_CRC32C:
|
||||||
if (accel_task->s.iovcnt == 0) {
|
|
||||||
_sw_accel_crc32c(accel_task->crc_dst, accel_task->src, accel_task->seed, accel_task->nbytes);
|
|
||||||
} else {
|
|
||||||
_sw_accel_crc32cv(accel_task->crc_dst, accel_task->s.iovs, accel_task->s.iovcnt, accel_task->seed);
|
_sw_accel_crc32cv(accel_task->crc_dst, accel_task->s.iovs, accel_task->s.iovcnt, accel_task->seed);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_COPY_CRC32C:
|
case ACCEL_OPC_COPY_CRC32C:
|
||||||
rc = _check_flags(accel_task->flags);
|
rc = _check_flags(accel_task->flags);
|
||||||
|
@ -183,17 +183,8 @@ _process_single_task(struct spdk_io_channel *ch, struct spdk_accel_task *task)
|
|||||||
task->fill_pattern, flags, dsa_done, idxd_task);
|
task->fill_pattern, flags, dsa_done, idxd_task);
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_CRC32C:
|
case ACCEL_OPC_CRC32C:
|
||||||
if (task->s.iovcnt == 0) {
|
rc = spdk_idxd_submit_crc32c(chan->chan, task->s.iovs, task->s.iovcnt, task->seed,
|
||||||
siov.iov_base = task->src;
|
task->crc_dst, flags, dsa_done, idxd_task);
|
||||||
siov.iov_len = task->nbytes;
|
|
||||||
iov = &siov;
|
|
||||||
iovcnt = 1;
|
|
||||||
} else {
|
|
||||||
iov = task->s.iovs;
|
|
||||||
iovcnt = task->s.iovcnt;
|
|
||||||
}
|
|
||||||
rc = spdk_idxd_submit_crc32c(chan->chan, iov, iovcnt, task->seed, task->crc_dst,
|
|
||||||
flags, dsa_done, idxd_task);
|
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_COPY_CRC32C:
|
case ACCEL_OPC_COPY_CRC32C:
|
||||||
if (task->s.iovcnt == 0) {
|
if (task->s.iovcnt == 0) {
|
||||||
|
@ -367,11 +367,8 @@ test_spdk_accel_submit_crc32c(void)
|
|||||||
rc = spdk_accel_submit_crc32c(g_ch, &crc_dst, src, seed, nbytes, NULL, cb_arg);
|
rc = spdk_accel_submit_crc32c(g_ch, &crc_dst, src, seed, nbytes, NULL, cb_arg);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
CU_ASSERT(task.crc_dst == &crc_dst);
|
CU_ASSERT(task.crc_dst == &crc_dst);
|
||||||
CU_ASSERT(task.src == src);
|
|
||||||
CU_ASSERT(task.s.iovcnt == 0);
|
|
||||||
CU_ASSERT(task.seed == seed);
|
CU_ASSERT(task.seed == seed);
|
||||||
CU_ASSERT(task.op_code == ACCEL_OPC_CRC32C);
|
CU_ASSERT(task.op_code == ACCEL_OPC_CRC32C);
|
||||||
CU_ASSERT(task.nbytes == nbytes);
|
|
||||||
expected_accel_task = TAILQ_FIRST(&g_sw_ch->tasks_to_complete);
|
expected_accel_task = TAILQ_FIRST(&g_sw_ch->tasks_to_complete);
|
||||||
TAILQ_REMOVE(&g_sw_ch->tasks_to_complete, expected_accel_task, link);
|
TAILQ_REMOVE(&g_sw_ch->tasks_to_complete, expected_accel_task, link);
|
||||||
CU_ASSERT(expected_accel_task == &task);
|
CU_ASSERT(expected_accel_task == &task);
|
||||||
|
Loading…
Reference in New Issue
Block a user