crypto/qat: fix to small sgl oop min offset
Checks
Commit Message
This commit fixes problem with to small offset when both offsets
(auth, cipher) are non zero in digest encrypt case,
when using out-of-place and sgl.
Fixes: 40002f6c2a24 ("crypto/qat: extend support for digest-encrypted auth-cipher")
Cc: stable@dpdk.org
Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
---
drivers/crypto/qat/qat_sym.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Comments
On 18/03/2021 1:16 PM, Arek Kusztal wrote:
> This commit fixes problem with to small offset when both offsets
> (auth, cipher) are non zero in digest encrypt case,
> when using out-of-place and sgl.
>
> Fixes: 40002f6c2a24 ("crypto/qat: extend support for digest-encrypted auth-cipher")
> Cc: stable@dpdk.org
>
> Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
> ---
> drivers/crypto/qat/qat_sym.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/crypto/qat/qat_sym.c b/drivers/crypto/qat/qat_sym.c
> index 4b7676deb..a6cd33be3 100644
> --- a/drivers/crypto/qat/qat_sym.c
> +++ b/drivers/crypto/qat/qat_sym.c
> @@ -162,6 +162,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
> uint8_t do_sgl = 0;
> uint8_t in_place = 1;
> int alignment_adjustment = 0;
> + int oop_shift = 0;
> struct rte_crypto_op *op = (struct rte_crypto_op *)in_op;
> struct qat_sym_op_cookie *cookie =
> (struct qat_sym_op_cookie *)op_cookie;
> @@ -472,6 +473,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
> rte_pktmbuf_iova_offset(op->sym->m_src, min_ofs);
> dst_buf_start =
> rte_pktmbuf_iova_offset(op->sym->m_dst, min_ofs);
> + oop_shift = min_ofs;
>
> } else {
> /* In-place operation
> @@ -532,7 +534,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
> /* First find the end of the data */
> if (do_sgl) {
> uint32_t remaining_off = auth_param->auth_off +
> - auth_param->auth_len + alignment_adjustment;
> + auth_param->auth_len + alignment_adjustment + oop_shift;
> struct rte_mbuf *sgl_buf =
> (in_place ?
> op->sym->m_src : op->sym->m_dst);
>
Acked-by: Declan Doherty <declan.doherty@intel.com>
> On 18/03/2021 1:16 PM, Arek Kusztal wrote:
> > This commit fixes problem with to small offset when both offsets
> > (auth, cipher) are non zero in digest encrypt case,
> > when using out-of-place and sgl.
> >
> > Fixes: 40002f6c2a24 ("crypto/qat: extend support for digest-encrypted
> auth-cipher")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
> > ---
>
> Acked-by: Declan Doherty <declan.doherty@intel.com>
Applied to dpdk-next-crypto
Thanks.
@@ -162,6 +162,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
uint8_t do_sgl = 0;
uint8_t in_place = 1;
int alignment_adjustment = 0;
+ int oop_shift = 0;
struct rte_crypto_op *op = (struct rte_crypto_op *)in_op;
struct qat_sym_op_cookie *cookie =
(struct qat_sym_op_cookie *)op_cookie;
@@ -472,6 +473,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
rte_pktmbuf_iova_offset(op->sym->m_src, min_ofs);
dst_buf_start =
rte_pktmbuf_iova_offset(op->sym->m_dst, min_ofs);
+ oop_shift = min_ofs;
} else {
/* In-place operation
@@ -532,7 +534,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
/* First find the end of the data */
if (do_sgl) {
uint32_t remaining_off = auth_param->auth_off +
- auth_param->auth_len + alignment_adjustment;
+ auth_param->auth_len + alignment_adjustment + oop_shift;
struct rte_mbuf *sgl_buf =
(in_place ?
op->sym->m_src : op->sym->m_dst);