accel: use iovecs for compress operations
Also, since this was the last operation using dst and nbytes, these fields were removed from spdk_accel_task. Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I0d6b090e101c016d1bdcbe7a3bee7d6f691f1c9e Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15943 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
parent
a374f8ba19
commit
1866faffe2
@ -63,7 +63,6 @@ struct spdk_accel_task {
|
||||
struct iovec *iovs;
|
||||
uint32_t iovcnt;
|
||||
} s2;
|
||||
void *dst;
|
||||
};
|
||||
union {
|
||||
struct {
|
||||
@ -81,10 +80,7 @@ struct spdk_accel_task {
|
||||
};
|
||||
enum accel_opcode op_code;
|
||||
uint64_t nbytes;
|
||||
union {
|
||||
uint64_t nbytes_dst; /* for compress op */
|
||||
uint64_t iv; /* Initialization vector (tweak) for crypto op */
|
||||
};
|
||||
uint64_t iv; /* Initialization vector (tweak) for crypto op */
|
||||
int flags;
|
||||
int status;
|
||||
struct iovec aux_iovs[SPDK_ACCEL_AUX_IOV_MAX];
|
||||
|
@ -502,23 +502,19 @@ spdk_accel_submit_compress(struct spdk_io_channel *ch, void *dst, uint64_t nbyte
|
||||
struct spdk_accel_task *accel_task;
|
||||
struct spdk_accel_module_if *module = g_modules_opc[ACCEL_OPC_COMPRESS];
|
||||
struct spdk_io_channel *module_ch = accel_ch->module_ch[ACCEL_OPC_COMPRESS];
|
||||
size_t i, src_len = 0;
|
||||
|
||||
accel_task = _get_task(accel_ch, cb_fn, cb_arg);
|
||||
if (accel_task == NULL) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
for (i = 0; i < src_iovcnt; i++) {
|
||||
src_len += src_iovs[i].iov_len;
|
||||
}
|
||||
|
||||
accel_task->nbytes = src_len;
|
||||
accel_task->d.iovs = &accel_task->aux_iovs[SPDK_ACCEL_AUX_IOV_DST];
|
||||
accel_task->d.iovs[0].iov_base = dst;
|
||||
accel_task->d.iovs[0].iov_len = nbytes;
|
||||
accel_task->d.iovcnt = 1;
|
||||
accel_task->output_size = output_size;
|
||||
accel_task->s.iovs = src_iovs;
|
||||
accel_task->s.iovcnt = src_iovcnt;
|
||||
accel_task->dst = dst;
|
||||
accel_task->nbytes_dst = nbytes;
|
||||
accel_task->flags = flags;
|
||||
accel_task->op_code = ACCEL_OPC_COMPRESS;
|
||||
accel_task->src_domain = NULL;
|
||||
|
@ -239,13 +239,14 @@ _sw_accel_compress(struct sw_accel_io_channel *sw_ch, struct spdk_accel_task *ac
|
||||
size_t last_seglen = accel_task->s.iovs[accel_task->s.iovcnt - 1].iov_len;
|
||||
struct iovec *siov = accel_task->s.iovs;
|
||||
struct iovec *diov = accel_task->d.iovs;
|
||||
size_t remaining = accel_task->nbytes;
|
||||
uint32_t s = 0, d = 0;
|
||||
size_t remaining;
|
||||
uint32_t i, s = 0, d = 0;
|
||||
int rc = 0;
|
||||
|
||||
accel_task->d.iovcnt = 1;
|
||||
diov[0].iov_base = accel_task->dst;
|
||||
diov[0].iov_len = accel_task->nbytes_dst;
|
||||
remaining = 0;
|
||||
for (i = 0; i < accel_task->s.iovcnt; ++i) {
|
||||
remaining += accel_task->s.iovs[i].iov_len;
|
||||
}
|
||||
|
||||
isal_deflate_reset(&sw_ch->stream);
|
||||
sw_ch->stream.end_of_stream = 0;
|
||||
|
@ -137,8 +137,9 @@ _process_single_task(struct spdk_io_channel *ch, struct spdk_accel_task *task)
|
||||
|
||||
switch (task->op_code) {
|
||||
case ACCEL_OPC_COMPRESS:
|
||||
rc = spdk_idxd_submit_compress(chan->chan, task->dst, task->nbytes_dst, task->s.iovs,
|
||||
task->s.iovcnt, task->output_size, flags, iaa_done, idxd_task);
|
||||
rc = spdk_idxd_submit_compress(chan->chan, task->d.iovs[0].iov_base, task->d.iovs[0].iov_len,
|
||||
task->s.iovs, task->s.iovcnt, task->output_size, flags,
|
||||
iaa_done, idxd_task);
|
||||
break;
|
||||
case ACCEL_OPC_DECOMPRESS:
|
||||
rc = spdk_idxd_submit_decompress(chan->chan, task->d.iovs, task->d.iovcnt, task->s.iovs,
|
||||
|
@ -395,7 +395,6 @@ test_spdk_accel_submit_crc32cv(void)
|
||||
iov[i].iov_len = TEST_SUBMIT_SIZE;
|
||||
}
|
||||
|
||||
task.nbytes = TEST_SUBMIT_SIZE;
|
||||
TAILQ_INSERT_TAIL(&g_accel_ch->task_pool, &task, link);
|
||||
|
||||
/* accel submission OK. */
|
||||
@ -407,7 +406,6 @@ test_spdk_accel_submit_crc32cv(void)
|
||||
CU_ASSERT(task.seed == seed);
|
||||
CU_ASSERT(task.op_code == ACCEL_OPC_CRC32C);
|
||||
CU_ASSERT(task.cb_arg == cb_arg);
|
||||
CU_ASSERT(task.nbytes == iov[0].iov_len);
|
||||
expected_accel_task = TAILQ_FIRST(&g_sw_ch->tasks_to_complete);
|
||||
TAILQ_REMOVE(&g_sw_ch->tasks_to_complete, expected_accel_task, link);
|
||||
CU_ASSERT(expected_accel_task == &task);
|
||||
|
Loading…
Reference in New Issue
Block a user