[dpdk-dev] crypto/scheduler: fix possible duplicated ring names
Checks
Commit Message
Fixes: 4c07e0552f0a ("crypto/scheduler: add multicore scheduling mode")
This patch fixes the possible duplicated ring names in multi-core
scheduler. Originally two or more multi-core schedulers may have
same worker ring names thus will cause initialization error.
Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
---
drivers/crypto/scheduler/scheduler_multicore.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Comments
Hi Fan,
> -----Original Message-----
> From: Zhang, Roy Fan
> Sent: Monday, May 14, 2018 11:09 AM
> To: dev@dpdk.org
> Cc: Zhang, Roy Fan <roy.fan.zhang@intel.com>; Rybalchenko, Kirill
> <kirill.rybalchenko@intel.com>; stable@dpdk.org; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> Subject: [PATCH] crypto/scheduler: fix possible duplicated ring names
>
> Fixes: 4c07e0552f0a ("crypto/scheduler: add multicore scheduling mode")
Fixes line goes before "Signed-off-by" and after the description of the patch.
Also, CC: stable@dpdk.org should go after Fixes line.
>
> This patch fixes the possible duplicated ring names in multi-core scheduler.
> Originally two or more multi-core schedulers may have same worker ring names
> thus will cause initialization error.
>
> Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
> ---
> drivers/crypto/scheduler/scheduler_multicore.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/crypto/scheduler/scheduler_multicore.c
> b/drivers/crypto/scheduler/scheduler_multicore.c
> index 644426e93..cd71d18ee 100644
> --- a/drivers/crypto/scheduler/scheduler_multicore.c
> +++ b/drivers/crypto/scheduler/scheduler_multicore.c
> @@ -347,14 +347,18 @@ scheduler_create_private_ctx(struct rte_cryptodev
> *dev)
> for (i = 0; i < sched_ctx->nb_wc; i++) {
> char r_name[16];
>
> - snprintf(r_name, sizeof(r_name),
> MC_SCHED_ENQ_RING_NAME_PREFIX "%u", i);
> + snprintf(r_name, sizeof(r_name),
> + MC_SCHED_ENQ_RING_NAME_PREFIX "%u",
> + sched_ctx->wc_pool[i]);
We could potentially have 2 scheduler sharing same cores, right?
I mean, performance wise, it doesn't make sense, but it should still work.
In this case, it wouldn't work, so we might need a different name.
I'd say using the scheduler id and the index "i" should work.
Thanks,
Pablo
@@ -347,14 +347,18 @@ scheduler_create_private_ctx(struct rte_cryptodev *dev)
for (i = 0; i < sched_ctx->nb_wc; i++) {
char r_name[16];
- snprintf(r_name, sizeof(r_name), MC_SCHED_ENQ_RING_NAME_PREFIX "%u", i);
+ snprintf(r_name, sizeof(r_name),
+ MC_SCHED_ENQ_RING_NAME_PREFIX "%u",
+ sched_ctx->wc_pool[i]);
mc_ctx->sched_enq_ring[i] = rte_ring_create(r_name, PER_SLAVE_BUFF_SIZE,
rte_socket_id(), RING_F_SC_DEQ | RING_F_SP_ENQ);
if (!mc_ctx->sched_enq_ring[i]) {
CS_LOG_ERR("Cannot create ring for worker %u", i);
goto exit;
}
- snprintf(r_name, sizeof(r_name), MC_SCHED_DEQ_RING_NAME_PREFIX "%u", i);
+ snprintf(r_name, sizeof(r_name),
+ MC_SCHED_DEQ_RING_NAME_PREFIX "%u",
+ sched_ctx->wc_pool[i]);
mc_ctx->sched_deq_ring[i] = rte_ring_create(r_name, PER_SLAVE_BUFF_SIZE,
rte_socket_id(), RING_F_SC_DEQ | RING_F_SP_ENQ);
if (!mc_ctx->sched_deq_ring[i]) {