X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcompress%2Fisal%2Fisal_compress_pmd.c;h=7d2b05c91374ed7af84e92c825c0b9c05d369fc3;hb=02afed59258d159c3fa653f91a3faa4905c68702;hp=b610e90433433bd8d857d752d418d5f6f6b9f323;hpb=bd03d3f1e4f1734c70bf6be32cdeb5e3ae6fa611;p=dpdk.git diff --git a/drivers/compress/isal/isal_compress_pmd.c b/drivers/compress/isal/isal_compress_pmd.c index b610e90433..7d2b05c913 100644 --- a/drivers/compress/isal/isal_compress_pmd.c +++ b/drivers/compress/isal/isal_compress_pmd.c @@ -19,6 +19,12 @@ #define CHKSUM_SZ_CRC 8 #define CHKSUM_SZ_ADLER 4 +#define STRINGIFY(s) #s +#define ISAL_TOSTRING(maj, min, patch) \ + STRINGIFY(maj)"."STRINGIFY(min)"."STRINGIFY(patch) +#define ISAL_VERSION_STRING \ + ISAL_TOSTRING(ISAL_MAJOR_VERSION, ISAL_MINOR_VERSION, ISAL_PATCH_VERSION) + int isal_logtype_driver; /* Verify and set private xform parameters */ @@ -195,10 +201,10 @@ isal_comp_set_priv_xform_parameters(struct isal_priv_xform *priv_xform, priv_xform->decompress.chksum = ISAL_DEFLATE; break; case(RTE_COMP_CHECKSUM_CRC32): - priv_xform->decompress.chksum = ISAL_GZIP_NO_HDR_VER; + priv_xform->decompress.chksum = ISAL_GZIP_NO_HDR; break; case(RTE_COMP_CHECKSUM_ADLER32): - priv_xform->decompress.chksum = ISAL_ZLIB_NO_HDR_VER; + priv_xform->decompress.chksum = ISAL_ZLIB_NO_HDR; break; case(RTE_COMP_CHECKSUM_CRC32_ADLER32): ISAL_PMD_LOG(ERR, "Combined CRC and ADLER checksum not" @@ -348,12 +354,6 @@ chained_mbuf_decompression(struct rte_comp_op *op, struct isal_comp_qp *qp) ret = isal_inflate(qp->state); - if (ret != ISAL_DECOMP_OK) { - ISAL_PMD_LOG(ERR, "Decompression operation failed\n"); - op->status = RTE_COMP_OP_STATUS_ERROR; - return ret; - } - /* Check for first segment, offset needs to be accounted for */ if (remaining_data == op->src.length) { consumed_data = src->data_len - src_remaining_offset; @@ -374,6 +374,20 @@ chained_mbuf_decompression(struct rte_comp_op *op, struct isal_comp_qp *qp) } } + if (ret == ISAL_OUT_OVERFLOW) { + ISAL_PMD_LOG(ERR, "Decompression operation ran " + "out of space, but can be recovered.\n%d bytes " + "consumed\t%d bytes produced\n", + consumed_data, qp->state->total_out); + op->status = + RTE_COMP_OP_STATUS_OUT_OF_SPACE_RECOVERABLE; + return ret; + } else if (ret < 0) { + ISAL_PMD_LOG(ERR, "Decompression operation failed\n"); + op->status = RTE_COMP_OP_STATUS_ERROR; + return ret; + } + if (qp->state->avail_out == 0 && qp->state->block_state != ISAL_BLOCK_FINISH) { if (dst->next != NULL) { @@ -406,7 +420,7 @@ process_isal_deflate(struct rte_comp_op *op, struct isal_comp_qp *qp, uint8_t *temp_level_buf = qp->stream->level_buf; /* Initialize compression stream */ - isal_deflate_stateless_init(qp->stream); + isal_deflate_init(qp->stream); qp->stream->level_buf = temp_level_buf; @@ -508,8 +522,6 @@ process_isal_deflate(struct rte_comp_op *op, struct isal_comp_qp *qp, op->output_chksum = qp->stream->internal_state.crc; } - isal_deflate_reset(qp->stream); - return ret; } @@ -592,8 +604,6 @@ process_isal_inflate(struct rte_comp_op *op, struct isal_comp_qp *qp, op->produced = qp->state->total_out; op->output_chksum = qp->state->crc; - isal_inflate_reset(qp->state); - return ret; } @@ -684,6 +694,8 @@ compdev_isal_create(const char *name, struct rte_vdev_device *vdev, dev->dequeue_burst = isal_comp_pmd_dequeue_burst; dev->enqueue_burst = isal_comp_pmd_enqueue_burst; + ISAL_PMD_LOG(INFO, "\nISA-L library version used: "ISAL_VERSION_STRING); + return 0; }