X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_compressdev%2Frte_comp.c;h=3b0e46f96ef076df8a7c7e2ab0df660568868401;hb=30f9f9f451531e41a1c51fe93ca965adb5a12e27;hp=eb99e99d29c7215aa285843548f3f1eb43dc2172;hpb=96086db5a3690e5dac670f3a2c90d3078ca92ad1;p=dpdk.git diff --git a/lib/librte_compressdev/rte_comp.c b/lib/librte_compressdev/rte_comp.c index eb99e99d29..3b0e46f96e 100644 --- a/lib/librte_compressdev/rte_comp.c +++ b/lib/librte_compressdev/rte_comp.c @@ -6,6 +6,45 @@ #include "rte_compressdev.h" #include "rte_compressdev_internal.h" +const char * +rte_comp_get_feature_name(uint64_t flag) +{ + switch (flag) { + case RTE_COMP_FF_STATEFUL_COMPRESSION: + return "STATEFUL_COMPRESSION"; + case RTE_COMP_FF_STATEFUL_DECOMPRESSION: + return "STATEFUL_DECOMPRESSION"; + case RTE_COMP_FF_OOP_SGL_IN_SGL_OUT: + return "OOP_SGL_IN_SGL_OUT"; + case RTE_COMP_FF_OOP_SGL_IN_LB_OUT: + return "OOP_SGL_IN_LB_OUT"; + case RTE_COMP_FF_OOP_LB_IN_SGL_OUT: + return "OOP_LB_IN_SGL_OUT"; + case RTE_COMP_FF_MULTI_PKT_CHECKSUM: + return "MULTI_PKT_CHECKSUM"; + case RTE_COMP_FF_ADLER32_CHECKSUM: + return "ADLER32_CHECKSUM"; + case RTE_COMP_FF_CRC32_CHECKSUM: + return "CRC32_CHECKSUM"; + case RTE_COMP_FF_CRC32_ADLER32_CHECKSUM: + return "CRC32_ADLER32_CHECKSUM"; + case RTE_COMP_FF_NONCOMPRESSED_BLOCKS: + return "NONCOMPRESSED_BLOCKS"; + case RTE_COMP_FF_SHA1_HASH: + return "SHA1_HASH"; + case RTE_COMP_FF_SHA2_SHA256_HASH: + return "SHA2_SHA256_HASH"; + case RTE_COMP_FF_SHAREABLE_PRIV_XFORM: + return "SHAREABLE_PRIV_XFORM"; + case RTE_COMP_FF_HUFFMAN_FIXED: + return "HUFFMAN_FIXED"; + case RTE_COMP_FF_HUFFMAN_DYNAMIC: + return "HUFFMAN_DYNAMIC"; + default: + return NULL; + } +} + /** * Reset the fields of an operation to their default values. * @@ -44,8 +83,8 @@ struct rte_comp_op_pool_private { * @param nb_ops * Number of operations to allocate * @return - * - 0: Success - * - -ENOENT: Not enough entries in the mempool; no ops are retrieved. + * - nb_ops: Success, the nb_ops requested was allocated + * - 0: Not enough entries in the mempool; no ops are retrieved. */ static inline int rte_comp_op_raw_bulk_alloc(struct rte_mempool *mempool, @@ -73,7 +112,7 @@ rte_comp_op_init(struct rte_mempool *mempool, op->mempool = mempool; } -struct rte_mempool * __rte_experimental +struct rte_mempool * rte_comp_op_pool_create(const char *name, unsigned int nb_elts, unsigned int cache_size, uint16_t user_size, int socket_id) @@ -128,14 +167,14 @@ rte_comp_op_pool_create(const char *name, return mp; } -struct rte_comp_op * __rte_experimental +struct rte_comp_op * rte_comp_op_alloc(struct rte_mempool *mempool) { struct rte_comp_op *op = NULL; int retval; retval = rte_comp_op_raw_bulk_alloc(mempool, &op, 1); - if (unlikely(retval < 0)) + if (unlikely(retval != 1)) return NULL; rte_comp_op_reset(op); @@ -143,16 +182,16 @@ rte_comp_op_alloc(struct rte_mempool *mempool) return op; } -int __rte_experimental +int rte_comp_op_bulk_alloc(struct rte_mempool *mempool, struct rte_comp_op **ops, uint16_t nb_ops) { - int ret; + int retval; uint16_t i; - ret = rte_comp_op_raw_bulk_alloc(mempool, ops, nb_ops); - if (unlikely(ret < nb_ops)) - return ret; + retval = rte_comp_op_raw_bulk_alloc(mempool, ops, nb_ops); + if (unlikely(retval != nb_ops)) + return 0; for (i = 0; i < nb_ops; i++) rte_comp_op_reset(ops[i]); @@ -168,9 +207,21 @@ rte_comp_op_bulk_alloc(struct rte_mempool *mempool, * @param op * Compress operation */ -void __rte_experimental +void rte_comp_op_free(struct rte_comp_op *op) { if (op != NULL && op->mempool != NULL) rte_mempool_put(op->mempool, op); } + +void +rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops) +{ + uint16_t i; + + for (i = 0; i < nb_ops; i++) { + if (ops[i] != NULL && ops[i]->mempool != NULL) + rte_mempool_put(ops[i]->mempool, ops[i]); + ops[i] = NULL; + } +}