compressdev: add huffman encoding flags
authorPablo de Lara <pablo.de.lara.guarch@intel.com>
Fri, 6 Jul 2018 05:28:01 +0000 (06:28 +0100)
committerPablo de Lara <pablo.de.lara.guarch@intel.com>
Tue, 10 Jul 2018 22:57:51 +0000 (00:57 +0200)
Added Huffman fixed and dynamic encoding feature flags,
so an application can query if a device supports
these two types, when performing DEFLATE compression.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Shally Verma <shally.verma@caviumnetworks.com>
drivers/compress/isal/isal_compress_pmd_ops.c
lib/librte_compressdev/rte_comp.c
lib/librte_compressdev/rte_comp.h
test/test/test_compressdev.c

index 970a041..585f228 100644 (file)
@@ -12,7 +12,9 @@
 static const struct rte_compressdev_capabilities isal_pmd_capabilities[] = {
        {
                .algo = RTE_COMP_ALGO_DEFLATE,
-               .comp_feature_flags =   RTE_COMP_FF_SHAREABLE_PRIV_XFORM,
+               .comp_feature_flags =   RTE_COMP_FF_SHAREABLE_PRIV_XFORM |
+                                       RTE_COMP_FF_HUFFMAN_FIXED |
+                                       RTE_COMP_FF_HUFFMAN_DYNAMIC,
                .window_size = {
                        .min = 15,
                        .max = 15,
index 97ea0d9..98ad0cf 100644 (file)
@@ -36,6 +36,10 @@ rte_comp_get_feature_name(uint64_t flag)
                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;
        }
index c72207a..ee9056e 100644 (file)
@@ -63,6 +63,10 @@ extern "C" {
  * to create as many priv_xforms as it expects to have stateless
  * operations in-flight.
  */
+#define RTE_COMP_FF_HUFFMAN_FIXED              (1ULL << 13)
+/**< Fixed huffman encoding is supported */
+#define RTE_COMP_FF_HUFFMAN_DYNAMIC            (1ULL << 14)
+/**< Dynamic huffman encoding is supported */
 
 /** Status of comp operation */
 enum rte_comp_op_status {
index 640942b..f960963 100644 (file)
@@ -846,6 +846,14 @@ test_compressdev_deflate_stateless_fixed(void)
        const char *test_buffer;
        uint16_t i;
        int ret;
+       const struct rte_compressdev_capabilities *capab;
+
+       capab = rte_compressdev_capability_get(0, RTE_COMP_ALGO_DEFLATE);
+       TEST_ASSERT(capab != NULL, "Failed to retrieve device capabilities");
+
+       if ((capab->comp_feature_flags & RTE_COMP_FF_HUFFMAN_FIXED) == 0)
+               return -ENOTSUP;
+
        struct rte_comp_xform *compress_xform =
                        rte_malloc(NULL, sizeof(struct rte_comp_xform), 0);
 
@@ -905,6 +913,14 @@ test_compressdev_deflate_stateless_dynamic(void)
        struct rte_comp_xform *compress_xform =
                        rte_malloc(NULL, sizeof(struct rte_comp_xform), 0);
 
+       const struct rte_compressdev_capabilities *capab;
+
+       capab = rte_compressdev_capability_get(0, RTE_COMP_ALGO_DEFLATE);
+       TEST_ASSERT(capab != NULL, "Failed to retrieve device capabilities");
+
+       if ((capab->comp_feature_flags & RTE_COMP_FF_HUFFMAN_DYNAMIC) == 0)
+               return -ENOTSUP;
+
        if (compress_xform == NULL) {
                RTE_LOG(ERR, USER1,
                        "Compress xform could not be created\n");