> -----Original Message-----
> From: Zhang, Roy Fan
> Sent: Thursday, February 28, 2019 11:36 AM
> To: dev@dpdk.org
> Cc: akhil.go...@nxp.com; Zhang, Roy Fan <roy.fan.zh...@intel.com>; De
> Lara Guarch, Pablo <pablo.de.lara.gua...@intel.com>; Trahe, Fiona
> <fiona.tr...@intel.com>; Luse, Paul E <paul.e.l...@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.tr...@intel.com>
> Signed-off-by: Paul Luse <paul.e.l...@intel.com>
> Signed-off-by: Fan Zhang <roy.fan.zh...@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.gua...@intel.com>

Reply via email to