Hi AKhil > -----Original Message----- > From: Akhil Goyal <akhil.go...@nxp.com> > Sent: Monday, September 21, 2020 1:00 PM > To: Zhang, Roy Fan <roy.fan.zh...@intel.com>; dev@dpdk.org; Ananyev, > Konstantin <konstantin.anan...@intel.com>; Thomas Monjalon > <tho...@monjalon.net> > Cc: Trahe, Fiona <fiona.tr...@intel.com>; Kusztal, ArkadiuszX > <arkadiuszx.kusz...@intel.com>; Dybkowski, AdamX > <adamx.dybkow...@intel.com>; Bronowski, PiotrX > <piotrx.bronow...@intel.com>; Anoob Joseph <ano...@marvell.com> > Subject: RE: [dpdk-dev v9 1/4] cryptodev: add crypto data-path service APIs > ... > IMO, the following union can clarify all doubts. > @Ananyev, Konstantin: Any suggestions from your side? > > /** IV and aad information for various use cases. */ > union { > /** Supposed to be used with CPU crypto API call. */ > struct { > /** array of pointers to IV */ > void **iv; > /** array of pointers to AAD */ > void **aad; > /** array of pointers to digest */ > void **digest; > } cpu_crypto; < or any other useful name> > /* Supposed to be used with HW raw crypto API call. */ > struct { > void *cipher_iv_ptr; > rte_iova_t cipher_iv_iova; > void *auth_iv_ptr; > rte_iova_t auth_iv_iova; > void *digest_ptr; > rte_iova_t digest_iova; > } hw_chain; > /* Supposed to be used with HW raw crypto API call. */ > struct { > void *iv_ptr; > rte_iova_t iv_iova; > void *digest_ptr; > rte_iova_t digest_iova; > void *aad_ptr; > rte_iova_t aad_iova; > } hw_aead; > }; > >
The above structure cannot support the array of multiple jobs but a single job. So we have to use something like struct { void **cipher_iv_ptr; rtei_iova_t *cipher_iv_iova; ... } hw_chain; struct { void **iv_ptr; rte_iova_t *iv_iova; ... } hw_aead; Is it ok? Regards, Fan