[dpdk-dev] [dpdk-dev v9 1/4] cryptodev: add crypto data-path service APIs

Akhil Goyal akhil.goyal at nxp.com
Mon Sep 21 17:49:19 CEST 2020


Hi Fan,
> Hi AKhil
> 
> ...
> > 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 was your previous structure. Was it not tested before?

> So we have to use something like
> 
> struct {
> 	void **cipher_iv_ptr;

You can even drop _ptr from the name of each of them.

> 	rtei_iova_t *cipher_iv_iova;
> 	...
> } hw_chain;
> struct {
> 	void **iv_ptr;
> 	rte_iova_t *iv_iova;
> 	...
> } hw_aead;
> 
> Is it ok?
> 
> Regards,
> Fan


More information about the dev mailing list