From a6531d58b41516aa88d2703fea1447bcac9b5c03 Mon Sep 17 00:00:00 2001 From: Pablo de Lara Date: Fri, 6 Jul 2018 06:28:00 +0100 Subject: [PATCH] compressdev: replace mbuf scatter gather flag The current mbuf scatter gather feature flag is too ambiguous, as it is not clear if input and/or output buffers can be scatter gather mbufs or not. Therefore, three new flags will replace this flag: - RTE_COMP_FF_OOP_SGL_IN_SGL_OUT - RTE_COMP_FF_OOP_SGL_IN_FB_OUT - RTE_COMP_FF_OOP_LB_IN_SGL_OUT Note that out-of-place flat buffers is supported by default and in-place is not supported by the library. Signed-off-by: Pablo de Lara Acked-by: Fiona Trahe Acked-by: Shally Verma --- doc/guides/compressdevs/features/default.ini | 34 +++++++++++--------- doc/guides/compressdevs/overview.rst | 14 ++++++++ doc/guides/rel_notes/release_18_08.rst | 6 ++++ lib/librte_compressdev/rte_comp.c | 8 +++-- lib/librte_compressdev/rte_comp.h | 31 ++++++++++++------ 5 files changed, 65 insertions(+), 28 deletions(-) diff --git a/doc/guides/compressdevs/features/default.ini b/doc/guides/compressdevs/features/default.ini index a88414d233..829e4df61b 100644 --- a/doc/guides/compressdevs/features/default.ini +++ b/doc/guides/compressdevs/features/default.ini @@ -6,19 +6,21 @@ ; the features table in the documentation. ; [Features] -HW Accelerated = -CPU SSE = -CPU AVX = -CPU AVX2 = -CPU AVX512 = -CPU NEON = -Stateful = -Pass-through = -Chained mbufs = -Deflate = -LZS = -Adler32 = -Crc32 = -Adler32&Crc32 = -Fixed = -Dynamic = +HW Accelerated = +CPU SSE = +CPU AVX = +CPU AVX2 = +CPU AVX512 = +CPU NEON = +Stateful = +Pass-through = +OOP SGL In SGL Out = +OOP SGL In LB Out = +OOP LB In SGL Out = +Deflate = +LZS = +Adler32 = +Crc32 = +Adler32&Crc32 = +Fixed = +Dynamic = diff --git a/doc/guides/compressdevs/overview.rst b/doc/guides/compressdevs/overview.rst index d01c1a9665..70bbe82b77 100644 --- a/doc/guides/compressdevs/overview.rst +++ b/doc/guides/compressdevs/overview.rst @@ -16,3 +16,17 @@ Supported Feature Flags - "Pass-through" feature flag refers to the ability of the PMD to let input buffers pass-through it, copying the input to the output, without making any modifications to it (no compression done). + + - "OOP SGL In SGL Out" feature flag stands for + "Out-of-place Scatter-gather list Input, Scatter-gater list Output", + which means PMD supports different scatter-gather styled input and output buffers + (i.e. both can consists of multiple segments). + + - "OOP SGL In LB Out" feature flag stands for + "Out-of-place Scatter-gather list Input, Linear Buffers Output", + which means PMD supports input from scatter-gathered styled buffers, outputting linear buffers + (i.e. single segment). + + - "OOP LB In SGL Out" feature flag stands for + "Out-of-place Linear Buffers Input, Scatter-gather list Output", + which means PMD supports input from linear buffer, outputting scatter-gathered styled buffers. diff --git a/doc/guides/rel_notes/release_18_08.rst b/doc/guides/rel_notes/release_18_08.rst index da6a329e34..943163422f 100644 --- a/doc/guides/rel_notes/release_18_08.rst +++ b/doc/guides/rel_notes/release_18_08.rst @@ -82,6 +82,12 @@ API Changes Also, make sure to start the actual text at the margin. ========================================================= +* compressdev: Feature flag ``RTE_COMP_FF_MBUF_SCATTER_GATHER`` is + replaced with the following more explicit flags: + - ``RTE_COMP_FF_OOP_SGL_IN_SGL_OUT`` + - ``RTE_COMP_FF_OOP_SGL_IN_LB_OUT`` + - ``RTE_COMP_FF_OOP_LB_IN_SGL_OUT`` + ABI Changes ----------- diff --git a/lib/librte_compressdev/rte_comp.c b/lib/librte_compressdev/rte_comp.c index d596ba872b..97ea0d9226 100644 --- a/lib/librte_compressdev/rte_comp.c +++ b/lib/librte_compressdev/rte_comp.c @@ -14,8 +14,12 @@ rte_comp_get_feature_name(uint64_t flag) return "STATEFUL_COMPRESSION"; case RTE_COMP_FF_STATEFUL_DECOMPRESSION: return "STATEFUL_DECOMPRESSION"; - case RTE_COMP_FF_MBUF_SCATTER_GATHER: - return "MBUF_SCATTER_GATHER"; + 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: diff --git a/lib/librte_compressdev/rte_comp.h b/lib/librte_compressdev/rte_comp.h index 5b513c77ea..c72207ac66 100644 --- a/lib/librte_compressdev/rte_comp.h +++ b/lib/librte_compressdev/rte_comp.h @@ -30,23 +30,34 @@ extern "C" { /**< Stateful compression is supported */ #define RTE_COMP_FF_STATEFUL_DECOMPRESSION (1ULL << 1) /**< Stateful decompression is supported */ -#define RTE_COMP_FF_MBUF_SCATTER_GATHER (1ULL << 2) -/**< Scatter-gather mbufs are supported */ -#define RTE_COMP_FF_ADLER32_CHECKSUM (1ULL << 3) +#define RTE_COMP_FF_OOP_SGL_IN_SGL_OUT (1ULL << 2) +/**< Out-of-place Scatter-gather (SGL) buffers, + * with multiple segments, are supported in input and output + */ +#define RTE_COMP_FF_OOP_SGL_IN_LB_OUT (1ULL << 3) +/**< Out-of-place Scatter-gather (SGL) buffers are supported + * in input, combined with linear buffers (LB), with a + * single segment, in output + */ +#define RTE_COMP_FF_OOP_LB_IN_SGL_OUT (1ULL << 4) +/**< Out-of-place Scatter-gather (SGL) buffers are supported + * in output, combined with linear buffers (LB) in input + */ +#define RTE_COMP_FF_ADLER32_CHECKSUM (1ULL << 5) /**< Adler-32 Checksum is supported */ -#define RTE_COMP_FF_CRC32_CHECKSUM (1ULL << 4) +#define RTE_COMP_FF_CRC32_CHECKSUM (1ULL << 6) /**< CRC32 Checksum is supported */ -#define RTE_COMP_FF_CRC32_ADLER32_CHECKSUM (1ULL << 5) +#define RTE_COMP_FF_CRC32_ADLER32_CHECKSUM (1ULL << 7) /**< Adler-32/CRC32 Checksum is supported */ -#define RTE_COMP_FF_MULTI_PKT_CHECKSUM (1ULL << 6) +#define RTE_COMP_FF_MULTI_PKT_CHECKSUM (1ULL << 8) /**< Generation of checksum across multiple stateless packets is supported */ -#define RTE_COMP_FF_SHA1_HASH (1ULL << 7) +#define RTE_COMP_FF_SHA1_HASH (1ULL << 9) /**< SHA1 Hash is supported */ -#define RTE_COMP_FF_SHA2_SHA256_HASH (1ULL << 8) +#define RTE_COMP_FF_SHA2_SHA256_HASH (1ULL << 10) /**< SHA256 Hash of SHA2 family is supported */ -#define RTE_COMP_FF_NONCOMPRESSED_BLOCKS (1ULL << 9) +#define RTE_COMP_FF_NONCOMPRESSED_BLOCKS (1ULL << 11) /**< Creation of non-compressed blocks using RTE_COMP_LEVEL_NONE is supported */ -#define RTE_COMP_FF_SHAREABLE_PRIV_XFORM (1ULL << 10) +#define RTE_COMP_FF_SHAREABLE_PRIV_XFORM (1ULL << 12) /**< Private xforms created by the PMD can be shared * across multiple stateless operations. If not set, then app needs * to create as many priv_xforms as it expects to have stateless -- 2.20.1