X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcompress%2Fisal%2Fisal_compress_pmd.c;h=7d2b05c91374ed7af84e92c825c0b9c05d369fc3;hb=727758576714ea4de4df01bca53978f321ae323a;hp=ca1d7035449249ce40c932bfe0344a85378fb7c1;hpb=ae1374e240ee3ad3392b0d798daec3ebf0b569e8;p=dpdk.git diff --git a/drivers/compress/isal/isal_compress_pmd.c b/drivers/compress/isal/isal_compress_pmd.c index ca1d703544..7d2b05c913 100644 --- a/drivers/compress/isal/isal_compress_pmd.c +++ b/drivers/compress/isal/isal_compress_pmd.c @@ -354,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; @@ -380,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) {