lib/accel: rename iovec elements with src prefix
In prep for adding both src and dst iovec support for compression. Signed-off-by: paul luse <paul.e.luse@intel.com> Change-Id: I704b8d2bd459de03deb7f8ee45d76261910a3727 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13746 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
100c53718d
commit
28886ac352
@ -49,8 +49,8 @@ struct display_info {
|
|||||||
|
|
||||||
struct ap_task {
|
struct ap_task {
|
||||||
void *src;
|
void *src;
|
||||||
struct iovec *iovs;
|
struct iovec *src_iovs;
|
||||||
uint32_t iov_cnt;
|
uint32_t src_iovcnt;
|
||||||
void *dst;
|
void *dst;
|
||||||
void *dst2;
|
void *dst2;
|
||||||
uint32_t crc_dst;
|
uint32_t crc_dst;
|
||||||
@ -252,10 +252,10 @@ _get_task_data_bufs(struct ap_task *task)
|
|||||||
|
|
||||||
if (g_workload_selection == ACCEL_OPC_CRC32C || g_workload_selection == ACCEL_OPC_COPY_CRC32C) {
|
if (g_workload_selection == ACCEL_OPC_CRC32C || g_workload_selection == ACCEL_OPC_COPY_CRC32C) {
|
||||||
assert(g_crc32c_chained_count > 0);
|
assert(g_crc32c_chained_count > 0);
|
||||||
task->iov_cnt = g_crc32c_chained_count;
|
task->src_iovcnt = g_crc32c_chained_count;
|
||||||
task->iovs = calloc(task->iov_cnt, sizeof(struct iovec));
|
task->src_iovs = calloc(task->src_iovcnt, sizeof(struct iovec));
|
||||||
if (!task->iovs) {
|
if (!task->src_iovs) {
|
||||||
fprintf(stderr, "cannot allocated task->iovs fot task=%p\n", task);
|
fprintf(stderr, "cannot allocated task->src_iovs fot task=%p\n", task);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,13 +263,13 @@ _get_task_data_bufs(struct ap_task *task)
|
|||||||
dst_buff_len = g_xfer_size_bytes * g_crc32c_chained_count;
|
dst_buff_len = g_xfer_size_bytes * g_crc32c_chained_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < task->iov_cnt; i++) {
|
for (i = 0; i < task->src_iovcnt; i++) {
|
||||||
task->iovs[i].iov_base = spdk_dma_zmalloc(g_xfer_size_bytes, 0, NULL);
|
task->src_iovs[i].iov_base = spdk_dma_zmalloc(g_xfer_size_bytes, 0, NULL);
|
||||||
if (task->iovs[i].iov_base == NULL) {
|
if (task->src_iovs[i].iov_base == NULL) {
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
memset(task->iovs[i].iov_base, DATA_PATTERN, g_xfer_size_bytes);
|
memset(task->src_iovs[i].iov_base, DATA_PATTERN, g_xfer_size_bytes);
|
||||||
task->iovs[i].iov_len = g_xfer_size_bytes;
|
task->src_iovs[i].iov_len = g_xfer_size_bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -353,11 +353,11 @@ _submit_single(struct worker_thread *worker, struct ap_task *task)
|
|||||||
break;
|
break;
|
||||||
case ACCEL_OPC_CRC32C:
|
case ACCEL_OPC_CRC32C:
|
||||||
rc = spdk_accel_submit_crc32cv(worker->ch, &task->crc_dst,
|
rc = spdk_accel_submit_crc32cv(worker->ch, &task->crc_dst,
|
||||||
task->iovs, task->iov_cnt, g_crc32c_seed,
|
task->src_iovs, task->src_iovcnt, g_crc32c_seed,
|
||||||
accel_done, task);
|
accel_done, task);
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_COPY_CRC32C:
|
case ACCEL_OPC_COPY_CRC32C:
|
||||||
rc = spdk_accel_submit_copy_crc32cv(worker->ch, task->dst, task->iovs, task->iov_cnt,
|
rc = spdk_accel_submit_copy_crc32cv(worker->ch, task->dst, task->src_iovs, task->src_iovcnt,
|
||||||
&task->crc_dst, g_crc32c_seed, flags, accel_done, task);
|
&task->crc_dst, g_crc32c_seed, flags, accel_done, task);
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_COMPARE:
|
case ACCEL_OPC_COMPARE:
|
||||||
@ -394,13 +394,13 @@ _free_task_buffers(struct ap_task *task)
|
|||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
if (g_workload_selection == ACCEL_OPC_CRC32C || g_workload_selection == ACCEL_OPC_COPY_CRC32C) {
|
if (g_workload_selection == ACCEL_OPC_CRC32C || g_workload_selection == ACCEL_OPC_COPY_CRC32C) {
|
||||||
if (task->iovs) {
|
if (task->src_iovs) {
|
||||||
for (i = 0; i < task->iov_cnt; i++) {
|
for (i = 0; i < task->src_iovcnt; i++) {
|
||||||
if (task->iovs[i].iov_base) {
|
if (task->src_iovs[i].iov_base) {
|
||||||
spdk_dma_free(task->iovs[i].iov_base);
|
spdk_dma_free(task->src_iovs[i].iov_base);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(task->iovs);
|
free(task->src_iovs);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
spdk_dma_free(task->src);
|
spdk_dma_free(task->src);
|
||||||
@ -413,18 +413,18 @@ _free_task_buffers(struct ap_task *task)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_vector_memcmp(void *_dst, struct iovec *src_iovs, uint32_t iovcnt)
|
_vector_memcmp(void *_dst, struct iovec *src_src_iovs, uint32_t iovcnt)
|
||||||
{
|
{
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
uint32_t ttl_len = 0;
|
uint32_t ttl_len = 0;
|
||||||
uint8_t *dst = (uint8_t *)_dst;
|
uint8_t *dst = (uint8_t *)_dst;
|
||||||
|
|
||||||
for (i = 0; i < iovcnt; i++) {
|
for (i = 0; i < iovcnt; i++) {
|
||||||
if (memcmp(dst, src_iovs[i].iov_base, src_iovs[i].iov_len)) {
|
if (memcmp(dst, src_src_iovs[i].iov_base, src_src_iovs[i].iov_len)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
dst += src_iovs[i].iov_len;
|
dst += src_src_iovs[i].iov_len;
|
||||||
ttl_len += src_iovs[i].iov_len;
|
ttl_len += src_src_iovs[i].iov_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ttl_len != iovcnt * g_xfer_size_bytes) {
|
if (ttl_len != iovcnt * g_xfer_size_bytes) {
|
||||||
@ -449,18 +449,18 @@ accel_done(void *arg1, int status)
|
|||||||
if (g_verify && status == 0) {
|
if (g_verify && status == 0) {
|
||||||
switch (worker->workload) {
|
switch (worker->workload) {
|
||||||
case ACCEL_OPC_COPY_CRC32C:
|
case ACCEL_OPC_COPY_CRC32C:
|
||||||
sw_crc32c = spdk_crc32c_iov_update(task->iovs, task->iov_cnt, ~g_crc32c_seed);
|
sw_crc32c = spdk_crc32c_iov_update(task->src_iovs, task->src_iovcnt, ~g_crc32c_seed);
|
||||||
if (task->crc_dst != sw_crc32c) {
|
if (task->crc_dst != sw_crc32c) {
|
||||||
SPDK_NOTICELOG("CRC-32C miscompare\n");
|
SPDK_NOTICELOG("CRC-32C miscompare\n");
|
||||||
worker->xfer_failed++;
|
worker->xfer_failed++;
|
||||||
}
|
}
|
||||||
if (_vector_memcmp(task->dst, task->iovs, task->iov_cnt)) {
|
if (_vector_memcmp(task->dst, task->src_iovs, task->src_iovcnt)) {
|
||||||
SPDK_NOTICELOG("Data miscompare\n");
|
SPDK_NOTICELOG("Data miscompare\n");
|
||||||
worker->xfer_failed++;
|
worker->xfer_failed++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_CRC32C:
|
case ACCEL_OPC_CRC32C:
|
||||||
sw_crc32c = spdk_crc32c_iov_update(task->iovs, task->iov_cnt, ~g_crc32c_seed);
|
sw_crc32c = spdk_crc32c_iov_update(task->src_iovs, task->src_iovcnt, ~g_crc32c_seed);
|
||||||
if (task->crc_dst != sw_crc32c) {
|
if (task->crc_dst != sw_crc32c) {
|
||||||
SPDK_NOTICELOG("CRC-32C miscompare\n");
|
SPDK_NOTICELOG("CRC-32C miscompare\n");
|
||||||
worker->xfer_failed++;
|
worker->xfer_failed++;
|
||||||
|
@ -24,7 +24,7 @@ struct spdk_accel_task {
|
|||||||
struct {
|
struct {
|
||||||
struct iovec *iovs; /* iovs passed by the caller */
|
struct iovec *iovs; /* iovs passed by the caller */
|
||||||
uint32_t iovcnt; /* iovcnt passed by the caller */
|
uint32_t iovcnt; /* iovcnt passed by the caller */
|
||||||
} v;
|
} s;
|
||||||
void *src;
|
void *src;
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
|
@ -267,7 +267,7 @@ spdk_accel_submit_crc32c(struct spdk_io_channel *ch, uint32_t *crc_dst,
|
|||||||
|
|
||||||
accel_task->crc_dst = crc_dst;
|
accel_task->crc_dst = crc_dst;
|
||||||
accel_task->src = src;
|
accel_task->src = src;
|
||||||
accel_task->v.iovcnt = 0;
|
accel_task->s.iovcnt = 0;
|
||||||
accel_task->seed = seed;
|
accel_task->seed = seed;
|
||||||
accel_task->nbytes = nbytes;
|
accel_task->nbytes = nbytes;
|
||||||
accel_task->op_code = ACCEL_OPC_CRC32C;
|
accel_task->op_code = ACCEL_OPC_CRC32C;
|
||||||
@ -303,8 +303,8 @@ spdk_accel_submit_crc32cv(struct spdk_io_channel *ch, uint32_t *crc_dst,
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
accel_task->v.iovs = iov;
|
accel_task->s.iovs = iov;
|
||||||
accel_task->v.iovcnt = iov_cnt;
|
accel_task->s.iovcnt = iov_cnt;
|
||||||
accel_task->crc_dst = crc_dst;
|
accel_task->crc_dst = crc_dst;
|
||||||
accel_task->seed = seed;
|
accel_task->seed = seed;
|
||||||
accel_task->op_code = ACCEL_OPC_CRC32C;
|
accel_task->op_code = ACCEL_OPC_CRC32C;
|
||||||
@ -331,7 +331,7 @@ spdk_accel_submit_copy_crc32c(struct spdk_io_channel *ch, void *dst,
|
|||||||
accel_task->dst = dst;
|
accel_task->dst = dst;
|
||||||
accel_task->src = src;
|
accel_task->src = src;
|
||||||
accel_task->crc_dst = crc_dst;
|
accel_task->crc_dst = crc_dst;
|
||||||
accel_task->v.iovcnt = 0;
|
accel_task->s.iovcnt = 0;
|
||||||
accel_task->seed = seed;
|
accel_task->seed = seed;
|
||||||
accel_task->nbytes = nbytes;
|
accel_task->nbytes = nbytes;
|
||||||
accel_task->flags = flags;
|
accel_task->flags = flags;
|
||||||
@ -375,8 +375,8 @@ spdk_accel_submit_copy_crc32cv(struct spdk_io_channel *ch, void *dst,
|
|||||||
nbytes += src_iovs[i].iov_len;
|
nbytes += src_iovs[i].iov_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
accel_task->v.iovs = src_iovs;
|
accel_task->s.iovs = src_iovs;
|
||||||
accel_task->v.iovcnt = iov_cnt;
|
accel_task->s.iovcnt = iov_cnt;
|
||||||
accel_task->dst = (void *)dst;
|
accel_task->dst = (void *)dst;
|
||||||
accel_task->crc_dst = crc_dst;
|
accel_task->crc_dst = crc_dst;
|
||||||
accel_task->seed = seed;
|
accel_task->seed = seed;
|
||||||
|
@ -247,21 +247,21 @@ sw_accel_submit_tasks(struct spdk_io_channel *ch, struct spdk_accel_task *accel_
|
|||||||
rc = _sw_accel_compare(accel_task->src, accel_task->src2, accel_task->nbytes);
|
rc = _sw_accel_compare(accel_task->src, accel_task->src2, accel_task->nbytes);
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_CRC32C:
|
case ACCEL_OPC_CRC32C:
|
||||||
if (accel_task->v.iovcnt == 0) {
|
if (accel_task->s.iovcnt == 0) {
|
||||||
_sw_accel_crc32c(accel_task->crc_dst, accel_task->src, accel_task->seed, accel_task->nbytes);
|
_sw_accel_crc32c(accel_task->crc_dst, accel_task->src, accel_task->seed, accel_task->nbytes);
|
||||||
} else {
|
} else {
|
||||||
_sw_accel_crc32cv(accel_task->crc_dst, accel_task->v.iovs, accel_task->v.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);
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
if (accel_task->v.iovcnt == 0) {
|
if (accel_task->s.iovcnt == 0) {
|
||||||
_sw_accel_copy(accel_task->dst, accel_task->src, accel_task->nbytes, accel_task->flags);
|
_sw_accel_copy(accel_task->dst, accel_task->src, accel_task->nbytes, accel_task->flags);
|
||||||
_sw_accel_crc32c(accel_task->crc_dst, accel_task->src, accel_task->seed, accel_task->nbytes);
|
_sw_accel_crc32c(accel_task->crc_dst, accel_task->src, accel_task->seed, accel_task->nbytes);
|
||||||
} else {
|
} else {
|
||||||
_sw_accel_copyv(accel_task->dst, accel_task->v.iovs, accel_task->v.iovcnt, accel_task->flags);
|
_sw_accel_copyv(accel_task->dst, accel_task->s.iovs, accel_task->s.iovcnt, accel_task->flags);
|
||||||
_sw_accel_crc32cv(accel_task->crc_dst, accel_task->v.iovs, accel_task->v.iovcnt, accel_task->seed);
|
_sw_accel_crc32cv(accel_task->crc_dst, accel_task->s.iovs, accel_task->s.iovcnt, accel_task->seed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -171,27 +171,27 @@ _process_single_task(struct spdk_io_channel *ch, struct spdk_accel_task *task)
|
|||||||
idxd_task);
|
idxd_task);
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_CRC32C:
|
case ACCEL_OPC_CRC32C:
|
||||||
if (task->v.iovcnt == 0) {
|
if (task->s.iovcnt == 0) {
|
||||||
siov.iov_base = task->src;
|
siov.iov_base = task->src;
|
||||||
siov.iov_len = task->nbytes;
|
siov.iov_len = task->nbytes;
|
||||||
iov = &siov;
|
iov = &siov;
|
||||||
iovcnt = 1;
|
iovcnt = 1;
|
||||||
} else {
|
} else {
|
||||||
iov = task->v.iovs;
|
iov = task->s.iovs;
|
||||||
iovcnt = task->v.iovcnt;
|
iovcnt = task->s.iovcnt;
|
||||||
}
|
}
|
||||||
rc = spdk_idxd_submit_crc32c(chan->chan, iov, iovcnt, task->seed, task->crc_dst,
|
rc = spdk_idxd_submit_crc32c(chan->chan, iov, iovcnt, task->seed, task->crc_dst,
|
||||||
flags, dsa_done, idxd_task);
|
flags, dsa_done, idxd_task);
|
||||||
break;
|
break;
|
||||||
case ACCEL_OPC_COPY_CRC32C:
|
case ACCEL_OPC_COPY_CRC32C:
|
||||||
if (task->v.iovcnt == 0) {
|
if (task->s.iovcnt == 0) {
|
||||||
siov.iov_base = task->src;
|
siov.iov_base = task->src;
|
||||||
siov.iov_len = task->nbytes;
|
siov.iov_len = task->nbytes;
|
||||||
iov = &siov;
|
iov = &siov;
|
||||||
iovcnt = 1;
|
iovcnt = 1;
|
||||||
} else {
|
} else {
|
||||||
iov = task->v.iovs;
|
iov = task->s.iovs;
|
||||||
iovcnt = task->v.iovcnt;
|
iovcnt = task->s.iovcnt;
|
||||||
}
|
}
|
||||||
diov.iov_base = task->dst;
|
diov.iov_base = task->dst;
|
||||||
diov.iov_len = task->nbytes;
|
diov.iov_len = task->nbytes;
|
||||||
|
@ -360,7 +360,7 @@ test_spdk_accel_submit_crc32c(void)
|
|||||||
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.src == src);
|
||||||
CU_ASSERT(task.v.iovcnt == 0);
|
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);
|
CU_ASSERT(task.nbytes == nbytes);
|
||||||
@ -396,8 +396,8 @@ test_spdk_accel_submit_crc32cv(void)
|
|||||||
/* accel submission OK. */
|
/* accel submission OK. */
|
||||||
rc = spdk_accel_submit_crc32cv(g_ch, &crc_dst, iov, iov_cnt, seed, NULL, cb_arg);
|
rc = spdk_accel_submit_crc32cv(g_ch, &crc_dst, iov, iov_cnt, seed, NULL, cb_arg);
|
||||||
CU_ASSERT(rc == 0);
|
CU_ASSERT(rc == 0);
|
||||||
CU_ASSERT(task.v.iovs == iov);
|
CU_ASSERT(task.s.iovs == iov);
|
||||||
CU_ASSERT(task.v.iovcnt == iov_cnt);
|
CU_ASSERT(task.s.iovcnt == iov_cnt);
|
||||||
CU_ASSERT(task.crc_dst == &crc_dst);
|
CU_ASSERT(task.crc_dst == &crc_dst);
|
||||||
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);
|
||||||
@ -442,7 +442,7 @@ test_spdk_accel_submit_copy_crc32c(void)
|
|||||||
CU_ASSERT(task.dst == dst);
|
CU_ASSERT(task.dst == dst);
|
||||||
CU_ASSERT(task.src == src);
|
CU_ASSERT(task.src == src);
|
||||||
CU_ASSERT(task.crc_dst == &crc_dst);
|
CU_ASSERT(task.crc_dst == &crc_dst);
|
||||||
CU_ASSERT(task.v.iovcnt == 0);
|
CU_ASSERT(task.s.iovcnt == 0);
|
||||||
CU_ASSERT(task.seed == seed);
|
CU_ASSERT(task.seed == seed);
|
||||||
CU_ASSERT(task.nbytes == nbytes);
|
CU_ASSERT(task.nbytes == nbytes);
|
||||||
CU_ASSERT(task.flags == 0);
|
CU_ASSERT(task.flags == 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user