[dpdk-dev,v2] crypto/scheduler: fix multicore rings re-use
Checks
Commit Message
When scheduler mode changed from multicore to roundrobin and
back to multicore, scheduler tries to create memory rings with
the same name and fails. The fix allows to lookup and re-use
previously allocated memory rings.
Fixes: 4c07e0552f0a ("crypto/scheduler: add multicore scheduling mode")
Cc: stable@dpdk.org
v2:
Rebase to head of dpdk-dev master branch
Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
---
drivers/crypto/scheduler/scheduler_multicore.c | 28 ++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
Comments
> -----Original Message-----
> From: stable [mailto:stable-bounces@dpdk.org] On Behalf Of Kirill Rybalchenko
> Sent: Wednesday, May 16, 2018 3:25 PM
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Rybalchenko, Kirill <kirill.rybalchenko@intel.com>; Zhang,
> Roy Fan <roy.fan.zhang@intel.com>
> Subject: [dpdk-stable] [PATCH v2] crypto/scheduler: fix multicore rings re-use
>
> When scheduler mode changed from multicore to roundrobin and back to
> multicore, scheduler tries to create memory rings with the same name and fails.
> The fix allows to lookup and re-use previously allocated memory rings.
>
> Fixes: 4c07e0552f0a ("crypto/scheduler: add multicore scheduling mode")
> Cc: stable@dpdk.org
>
> v2:
> Rebase to head of dpdk-dev master branch
The changelog should go after the three dashes, so it is not a part of the commit
when merged.
>
> Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
You forgot to include the two previous acks (if you send another revision, add them).
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Pablo
Hi,
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Kirill Rybalchenko
> Sent: Wednesday, May 16, 2018 3:25 PM
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Rybalchenko, Kirill <kirill.rybalchenko@intel.com>;
> Zhang, Roy Fan <roy.fan.zhang@intel.com>
> Subject: [dpdk-dev] [PATCH v2] crypto/scheduler: fix multicore rings re-use
>
> When scheduler mode changed from multicore to roundrobin and back to
> multicore, scheduler tries to create memory rings with the same name and
> fails. The fix allows to lookup and re-use previously allocated memory rings.
>
> Fixes: 4c07e0552f0a ("crypto/scheduler: add multicore scheduling mode")
> Cc: stable@dpdk.org
>
> v2:
> Rebase to head of dpdk-dev master branch
>
> Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Tested-by: Reshma Pattan <reshma.pattan@intel.com>
> -----Original Message-----
> From: stable [mailto:stable-bounces@dpdk.org] On Behalf Of Pattan, Reshma
> Sent: Thursday, May 17, 2018 12:24 PM
> To: Rybalchenko, Kirill <kirill.rybalchenko@intel.com>; dev@dpdk.org
> Cc: stable@dpdk.org; Rybalchenko, Kirill <kirill.rybalchenko@intel.com>; Zhang,
> Roy Fan <roy.fan.zhang@intel.com>
> Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH v2] crypto/scheduler: fix multicore
> rings re-use
>
> Hi,
>
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Kirill
> > Rybalchenko
> > Sent: Wednesday, May 16, 2018 3:25 PM
> > To: dev@dpdk.org
> > Cc: stable@dpdk.org; Rybalchenko, Kirill
> > <kirill.rybalchenko@intel.com>; Zhang, Roy Fan
> > <roy.fan.zhang@intel.com>
> > Subject: [dpdk-dev] [PATCH v2] crypto/scheduler: fix multicore rings
> > re-use
> >
> > When scheduler mode changed from multicore to roundrobin and back to
> > multicore, scheduler tries to create memory rings with the same name
> > and fails. The fix allows to lookup and re-use previously allocated memory
> rings.
> >
> > Fixes: 4c07e0552f0a ("crypto/scheduler: add multicore scheduling
> > mode")
> > Cc: stable@dpdk.org
> >
> > v2:
> > Rebase to head of dpdk-dev master branch
Removed this changelog.
> >
> > Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
>
> Tested-by: Reshma Pattan <reshma.pattan@intel.com>
Applied to dpdk-next-crypto.
Thanks,
Pablo
@@ -348,18 +348,30 @@ scheduler_create_private_ctx(struct rte_cryptodev *dev)
char r_name[16];
snprintf(r_name, sizeof(r_name), MC_SCHED_ENQ_RING_NAME_PREFIX "%u", 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);
+ mc_ctx->sched_enq_ring[i] = rte_ring_lookup(r_name);
if (!mc_ctx->sched_enq_ring[i]) {
- CS_LOG_ERR("Cannot create ring for worker %u", i);
- goto exit;
+ 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);
- 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);
+ mc_ctx->sched_deq_ring[i] = rte_ring_lookup(r_name);
if (!mc_ctx->sched_deq_ring[i]) {
- CS_LOG_ERR("Cannot create ring for worker %u", i);
- goto exit;
+ 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]) {
+ CS_LOG_ERR("Cannot create ring for worker %u",
+ i);
+ goto exit;
+ }
}
}