> -----Original Message----- > From: Trahe, Fiona > Sent: Tuesday, June 19, 2018 2:20 PM > To: Tomasz Duszynski <t...@semihalf.com>; De Lara Guarch, Pablo > <pablo.de.lara.gua...@intel.com> > Cc: Doherty, Declan <declan.dohe...@intel.com>; akhil.go...@nxp.com; > ravi1.ku...@amd.com; jerin.ja...@caviumnetworks.com; Zhang, Roy Fan > <roy.fan.zh...@intel.com>; jianjay.z...@huawei.com; dev@dpdk.org; Trahe, > Fiona <fiona.tr...@intel.com> > Subject: RE: [PATCH 3/6] cryptodev: remove max number of sessions > > Hi Tomasz, Pablo, > > > -----Original Message----- > > From: Tomasz Duszynski [mailto:t...@semihalf.com] > > Sent: Wednesday, June 13, 2018 11:11 AM > > To: De Lara Guarch, Pablo <pablo.de.lara.gua...@intel.com> > > Cc: Tomasz Duszynski <t...@semihalf.com>; Doherty, Declan > > <declan.dohe...@intel.com>; akhil.go...@nxp.com; ravi1.ku...@amd.com; > > jerin.ja...@caviumnetworks.com; Zhang, Roy Fan > > <roy.fan.zh...@intel.com>; Trahe, Fiona <fiona.tr...@intel.com>; > > jianjay.z...@huawei.com; dev@dpdk.org > > Subject: Re: [PATCH 3/6] cryptodev: remove max number of sessions > > > > On Wed, Jun 13, 2018 at 08:23:36AM +0000, De Lara Guarch, Pablo wrote: > > > Hi Tomasz, > > > > > > > -----Original Message----- > > > > From: Tomasz Duszynski [mailto:t...@semihalf.com] > > > > Sent: Wednesday, June 13, 2018 7:12 AM > > > > To: De Lara Guarch, Pablo <pablo.de.lara.gua...@intel.com> > > > > Cc: Tomasz Duszynski <t...@semihalf.com>; Doherty, Declan > > > > <declan.dohe...@intel.com>; akhil.go...@nxp.com; > > > > ravi1.ku...@amd.com; jerin.ja...@caviumnetworks.com; Zhang, Roy > > > > Fan <roy.fan.zh...@intel.com>; Trahe, Fiona > > > > <fiona.tr...@intel.com>; jianjay.z...@huawei.com; dev@dpdk.org > > > > Subject: Re: [PATCH 3/6] cryptodev: remove max number of sessions > > > > > > > > On Tue, Jun 12, 2018 at 01:53:36PM +0000, De Lara Guarch, Pablo wrote: > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > From: Tomasz Duszynski [mailto:t...@semihalf.com] > > > > > > Sent: Tuesday, June 12, 2018 12:38 PM > > > > > > To: De Lara Guarch, Pablo <pablo.de.lara.gua...@intel.com> > > > > > > Cc: Doherty, Declan <declan.dohe...@intel.com>; > > > > > > akhil.go...@nxp.com; ravi1.ku...@amd.com; > > > > > > jerin.ja...@caviumnetworks.com; Zhang, Roy Fan > > > > > > <roy.fan.zh...@intel.com>; Trahe, Fiona > > > > > > <fiona.tr...@intel.com>; t...@semihalf.com; > > > > > > jianjay.z...@huawei.com; dev@dpdk.org > > > > > > Subject: Re: [PATCH 3/6] cryptodev: remove max number of > > > > > > sessions > > > > > > > > > > > > Hello Pablo, > > > > > > > > > > > > On Fri, Jun 08, 2018 at 11:02:31PM +0100, Pablo de Lara wrote: > > > > > > > Sessions are not created and stored in the crypto device > > > > > > > anymore, since now the session mempool is created at the > application level. > > > > > > > > > > > > > > Therefore the limitation of the maximum number of sessions > > > > > > > that can be created should not be dependent of the crypto device. > > > > > > > > > > > > > > Signed-off-by: Pablo de Lara > > > > > > > <pablo.de.lara.gua...@intel.com> > > > > > > > > > > ... > > > > > > > > > > > > diff --git a/drivers/crypto/mvsam/rte_mrvl_pmd.c > > > > > > b/drivers/crypto/mvsam/rte_mrvl_pmd.c > > > > > > > index 1b6029a56..822b6cac7 100644 > > > > > > > --- a/drivers/crypto/mvsam/rte_mrvl_pmd.c > > > > > > > +++ b/drivers/crypto/mvsam/rte_mrvl_pmd.c > > > > > > > @@ -719,7 +719,6 @@ cryptodev_mrvl_crypto_create(const char > *name, > > > > > > > internals = dev->data->dev_private; > > > > > > > > > > > > > > internals->max_nb_qpairs = init_params->max_nb_queue_pairs; > > > > > > > - internals->max_nb_sessions = init_params->max_nb_sessions; > > > > > > > > > > > > > > /* > > > > > > > * ret == -EEXIST is correct, it means DMA @@ -734,8 > > > > > > > +733,6 @@ cryptodev_mrvl_crypto_create(const char *name, > > > > > > > "DMA memory has been already initialized by a > > > > > > different driver."); > > > > > > > } > > > > > > > > > > > > > > - sam_params.max_num_sessions = internals->max_nb_sessions; > > > > > > > > > > > > This will not fly since library maintains separate list of sessions. > > > > > > We have to initialize this number to something sane. Since we > > > > > > cannot get it from userspace perhaps make that compile-time > > > > > > configurable by adding separate CONFIG_? > > > > > > > > > > Hi Tomasz, > > > > > > > > > > If you need to have an actual limit, you could define it > > > > > internally (not adding an external configuration option), but > > > > > bear in mind that This won't prevent an application from trying to > allocate more sessions. > > > > > > > > You can define arbitrary number of session on condition you have > > > > enough memory. So no hard limit here. What bothers me is the case > > > > where app wants to initialize more session than the library internally > > > > has. > > > > If this happens userspace will get an error. On the other hand > > > > requesting some arbitrary large number of session from library and > > > > hoping app will never use so many wastes memory (which might be > > > > valuable on resource constrained systems). > > > > > > > > That is why keeping the number of sessions in app and library in > > > > sync is important. > > > > > > > > Do we have any option in DPDK now to workaround this? > > > > > > Ok I see, so actually the MUSDK library needs a maximum number of > sessions. > > > I'd say then we should keep this field, but we can add a special case: 0. > > > In this case, the PMD does not have any maximum number of sessions > > > (which would be applicable to most PMDs). > > > > > > So, for this PMD, this special case is not supported. If 0 is > > > passed, either return that unlimited number of sessions is not > > > supported, or set it to a default value (defined inside the PMD, such as > > > 2048). > > > If no value is passed, this number can be set to the default value too. > > > > > > How does this sound? > > > > Who is going to pass that value? App? Or the old way is retained i.e > > PMD parameters? > > > > OK, my understanding is that we have 3 options: > > > > 1. 0 is passed which for most of the drivers translates to "you should > > not care about sessions number created by userspace application". In > > case PMD supports that it returns either success or failure. > > > > 2. Nothing is passed which means PMD should not care about number of > > sessions except mvsam which sets some default value. > > > > 3. Passing some arbitrary value which which sets number of sessions > > for PMDs that care about that (mvsam). In that case app would > > respect that number and not allocate more than specified? This is > > what DPDK has now. > > > > Right? Doesn't is sound like the mechanism that gets removed from DPDK > > with some extra handling added? > > > > Other solution might be to remove the old API as planned and change > > the PMD itself so that it defers library initialization until PMD is > > started. During session configuration necessary information would be > > saved and reused later on (i.e during PMD start). > > > [Fiona] I'd suggest we keep max_nb_sessions in the info struct. > mvsam - or any other PMD which wants an internal PMD limit - should set it via > hard-coding or a PMD-specific item in the config file. > For all other PMDs currently which don't have a limit the config file item > can be > removed. For these, 0, indicating No Limit, should be returned in the info > struct. > But I think it's optional what an app does with this max_nb_sessions. > It could take it into account and create a session pool of (max_nb_sessions * > num_PMDs) and be careful not to send more than max_nb_sessions to a PMD > with a limit. > Or it could just ignore it, create whatever size session pool it wants and if > it calls > rte_cryptodev_sym_session_init() too many times on a PMD handle the - > ENOMEM which I'd expect the PMD to return. Possibly route the session to a > different device with available resources. > Does that work for everyone?
I will send a new version of this patchset, addressing these comments. MVSAM PMD will still be able to set max_nb_sessions to a defined value and rest of the PMDs (except for DPAA) will set this value to 0, indicating that they have no limit in the amount of sessions. Thanks, Pablo i