> -----Original Message-----
> From: Dybkowski, AdamX
> Sent: Monday, August 26, 2019 8:45 AM
> To: dev@dpdk.org; Trahe, Fiona <fiona.tr...@intel.com>; akhil.go...@nxp.com;
> Trybula, ArturX
> <arturx.tryb...@intel.com>
> Cc: Dybkowski, AdamX <adamx.dybkow...@intel.com>
> Subject: [PATCH 2/4] compress/qat: add stateful decompression
>
> This patch adds the stateful decompression feature
> to the DPDK QAT PMD.
>
> Signed-off-by: Adam Dybkowski <adamx.dybkow...@intel.com>
> ---
> drivers/compress/qat/qat_comp.c | 256 +++++++++++++++++++++++++---
> drivers/compress/qat/qat_comp.h | 32 ++++
> drivers/compress/qat/qat_comp_pmd.c | 166 ++++++++++++++++--
> drivers/compress/qat/qat_comp_pmd.h | 2 +
> 4 files changed, 423 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/compress/qat/qat_comp.c b/drivers/compress/qat/qat_comp.c
> index 835aaa838..a80cd6864 100644
> --- a/drivers/compress/qat/qat_comp.c
> +++ b/drivers/compress/qat/qat_comp.c
> @@ -27,22 +27,51 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg,
> struct rte_comp_op *op = in_op;
> struct qat_comp_op_cookie *cookie =
> (struct qat_comp_op_cookie *)op_cookie;
> - struct qat_comp_xform *qat_xform = op->private_xform;
> - const uint8_t *tmpl = (uint8_t *)&qat_xform->qat_comp_req_tmpl;
> + struct qat_comp_stream *stream;
> + struct qat_comp_xform *qat_xform;
> + const uint8_t *tmpl;
> struct icp_qat_fw_comp_req *comp_req =
> (struct icp_qat_fw_comp_req *)out_msg;
>
> - if (unlikely(op->op_type != RTE_COMP_OP_STATELESS)) {
> - QAT_DP_LOG(ERR, "QAT PMD only supports stateless compression "
> - "operation requests, op (%p) is not a "
> - "stateless operation.", op);
> - op->status = RTE_COMP_OP_STATUS_INVALID_ARGS;
> - return -EINVAL;
> + if (op->op_type == RTE_COMP_OP_STATEFUL) {
> + stream = op->stream;
> + qat_xform = &stream->qat_xform;
> + if (unlikely(qat_xform->qat_comp_request_type !=
> + QAT_COMP_REQUEST_DECOMPRESS)) {
> + QAT_DP_LOG(ERR, "QAT PMD does not support stateful
> compression");
> + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS;
> + return -EINVAL;
> + }
> + if (unlikely(stream->op_in_progress)) {
> + QAT_DP_LOG(ERR, "QAT PMD does not support running
> multiple stateless
> operations on the same stream at once");
[Fiona] typo - should be stateful