[dpdk-dev] [PATCH v2 1/3] crypto/aesni_mb: enable out of place processing

De Lara Guarch, Pablo pablo.de.lara.guarch at intel.com
Wed Mar 20 18:52:32 CET 2019



> -----Original Message-----
> From: Zhang, Roy Fan
> Sent: Thursday, February 28, 2019 11:36 AM
> To: dev at dpdk.org
> Cc: akhil.goyal at nxp.com; Zhang, Roy Fan <roy.fan.zhang at intel.com>; De
> Lara Guarch, Pablo <pablo.de.lara.guarch at intel.com>; Trahe, Fiona
> <fiona.trahe at intel.com>; Luse, Paul E <paul.e.luse at intel.com>
> Subject: [PATCH v2 1/3] crypto/aesni_mb: enable out of place processing
> 
> Add out-of-place processing, i.e. different source and destination m_bufs,
> plus related capability update, tests and documentation.
> 
> Signed-off-by: Fiona Trahe <fiona.trahe at intel.com>
> Signed-off-by: Paul Luse <paul.e.luse at intel.com>
> Signed-off-by: Fan Zhang <roy.fan.zhang at intel.com>
> ---
>  drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 98
> ++++++++++++++++++++++--------
>  1 file changed, 71 insertions(+), 27 deletions(-)
> 
> diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> index 48d6ac002..9ff49b3fa 100644
> --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c
> @@ -739,6 +739,56 @@ get_session(struct aesni_mb_qp *qp, struct
> rte_crypto_op *op)
>  	return sess;
>  }
> 
> +static inline uint64_t
> +auth_start_offset(struct rte_crypto_op *op, struct aesni_mb_session
> *session,
> +		uint32_t oop)
> +{
> +	struct rte_mbuf *m_src, *m_dst;
> +	uint8_t *p_src, *p_dst;
> +	uint64_t u_src, u_dst;
> +	uint32_t cipher_end, auth_end;
> +
> +	/* Only cipher then hash needs special calculation. */
> +	if (!oop || session->chain_order != CIPHER_HASH)
> +		return op->sym->auth.data.offset;
> +
> +	m_src = op->sym->m_src;
> +	m_dst = op->sym->m_dst;
> +
> +	p_src = rte_pktmbuf_mtod(m_src, uint8_t *);
> +	p_dst = rte_pktmbuf_mtod(m_dst, uint8_t *);
> +	u_src = (uint64_t)p_src;
> +	u_dst = (uint64_t)p_dst + op->sym->auth.data.offset;

Better to use (uintptr_t) instead of uint64_t.


...

> -
> -		memcpy(odata, rte_pktmbuf_mtod(op->sym->m_src, void*),
> -				rte_pktmbuf_data_len(op->sym->m_src));
> -	} else {
> +	if (!op->sym->m_dst || op->sym->m_dst == op->sym->m_src) {

Better to add parenthesis on the second part of this "or" condition.

Apart from this:

Acked-by: Pablo de Lara <pablo.de.lara.guarch at intel.com>


More information about the dev mailing list