X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcompress%2Fisal%2Fisal_compress_pmd_ops.c;h=9b42147a0bd5082ee760944498a8846eb87261c0;hb=f01ca13fca6dde68fa3962269c5cddb7e8e7f1d7;hp=31c4559915504298421d6b1cf49448cae205f640;hpb=8a95d6bc931ae472f7ed4a552f1467efb763b484;p=dpdk.git diff --git a/drivers/compress/isal/isal_compress_pmd_ops.c b/drivers/compress/isal/isal_compress_pmd_ops.c index 31c4559915..9b42147a0b 100644 --- a/drivers/compress/isal/isal_compress_pmd_ops.c +++ b/drivers/compress/isal/isal_compress_pmd_ops.c @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -139,6 +140,7 @@ isal_comp_pmd_info_get(struct rte_compressdev *dev __rte_unused, /* Check CPU for supported vector instruction and set * feature_flags */ +#if defined(RTE_ARCH_X86) if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F)) dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX512; else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2)) @@ -147,6 +149,10 @@ isal_comp_pmd_info_get(struct rte_compressdev *dev __rte_unused, dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX; else dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_SSE; +#elif defined(RTE_ARCH_ARM) + if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_NEON)) + dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_NEON; +#endif } } @@ -249,16 +255,27 @@ isal_comp_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, qp->stream = rte_zmalloc_socket("Isa-l compression stream ", sizeof(struct isal_zstream), RTE_CACHE_LINE_SIZE, socket_id); - + if (qp->stream == NULL) { + ISAL_PMD_LOG(ERR, "Failed to allocate compression stream memory"); + goto qp_setup_cleanup; + } /* Initialize memory for compression level buffer */ qp->stream->level_buf = rte_zmalloc_socket("Isa-l compression lev_buf", ISAL_DEF_LVL3_DEFAULT, RTE_CACHE_LINE_SIZE, socket_id); + if (qp->stream->level_buf == NULL) { + ISAL_PMD_LOG(ERR, "Failed to allocate compression level_buf memory"); + goto qp_setup_cleanup; + } /* Initialize memory for decompression state structure */ qp->state = rte_zmalloc_socket("Isa-l decompression state", sizeof(struct inflate_state), RTE_CACHE_LINE_SIZE, socket_id); + if (qp->state == NULL) { + ISAL_PMD_LOG(ERR, "Failed to allocate decompression state memory"); + goto qp_setup_cleanup; + } qp->id = qp_id; dev->data->queue_pairs[qp_id] = qp; @@ -284,8 +301,11 @@ isal_comp_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, return 0; qp_setup_cleanup: - if (qp) - rte_free(qp); + if (qp->stream) + rte_free(qp->stream->level_buf); + rte_free(qp->stream); + rte_free(qp->state); + rte_free(qp); return -1; }