Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_comp.h(3)			      DPDK			   rte_comp.h(3)

NAME
     rte_comp.h

SYNOPSIS
     #include <rte_common.h>
     #include <rte_mbuf.h>

   Data Structures
     struct rte_comp_deflate_params
     struct rte_comp_inflate_params
     struct rte_comp_lz4_params
     struct rte_comp_compress_xform
     struct rte_comp_decompress_xform
     struct rte_comp_xform
     struct rte_comp_op

   Macros
     #define RTE_COMP_FF_STATEFUL_COMPRESSION	(1ULL << 0)
     #define RTE_COMP_FF_STATEFUL_DECOMPRESSION   (1ULL << 1)
     #define RTE_COMP_FF_OOP_SGL_IN_SGL_OUT   (1ULL << 2)
     #define RTE_COMP_FF_OOP_SGL_IN_LB_OUT   (1ULL << 3)
     #define RTE_COMP_FF_OOP_LB_IN_SGL_OUT   (1ULL << 4)
     #define RTE_COMP_FF_ADLER32_CHECKSUM   (1ULL << 5)
     #define RTE_COMP_FF_CRC32_CHECKSUM   (1ULL << 6)
     #define RTE_COMP_FF_CRC32_ADLER32_CHECKSUM   (1ULL << 7)
     #define RTE_COMP_FF_MULTI_PKT_CHECKSUM   (1ULL << 8)
     #define RTE_COMP_FF_SHA1_HASH   (1ULL << 9)
     #define RTE_COMP_FF_SHA2_SHA256_HASH   (1ULL << 10)
     #define RTE_COMP_FF_NONCOMPRESSED_BLOCKS	(1ULL << 11)
     #define RTE_COMP_FF_SHAREABLE_PRIV_XFORM	(1ULL << 12)
     #define RTE_COMP_FF_HUFFMAN_FIXED	 (1ULL << 13)
     #define RTE_COMP_FF_HUFFMAN_DYNAMIC   (1ULL << 14)
     #define RTE_COMP_FF_XXHASH32_CHECKSUM   (1ULL << 15)
     #define RTE_COMP_FF_LZ4_DICT_ID   (1ULL << 16)
     #define RTE_COMP_FF_LZ4_CONTENT_WITH_CHECKSUM   (1ULL << 17)
     #define RTE_COMP_FF_LZ4_CONTENT_SIZE   (1ULL << 18)
     #define RTE_COMP_FF_LZ4_BLOCK_INDEPENDENCE   (1ULL << 19)
     #define RTE_COMP_FF_LZ4_BLOCK_WITH_CHECKSUM   (1ULL << 20)
     #define RTE_COMP_LEVEL_NONE   (0)
     #define RTE_COMP_LEVEL_MIN   (1)
     #define RTE_COMP_LEVEL_MAX   (9)
     #define RTE_COMP_LZ4_FLAG_DICT_ID	 (1 << 0)
     #define RTE_COMP_LZ4_FLAG_CONTENT_CHECKSUM   (1 << 2)
     #define RTE_COMP_LZ4_FLAG_CONTENT_SIZE   (1 << 3)
     #define RTE_COMP_LZ4_FLAG_BLOCK_CHECKSUM	(1 << 4)
     #define RTE_COMP_LZ4_FLAG_BLOCK_INDEPENDENCE   (1 << 5)

   Enumerations
     enum  rte_comp_op_status { RTE_COMP_OP_STATUS_SUCCESS = 0, RTE_COMP_OP_STA-
	 TUS_NOT_PROCESSED,  RTE_COMP_OP_STATUS_INVALID_ARGS,	RTE_COMP_OP_STA-
	 TUS_ERROR,	 RTE_COMP_OP_STATUS_INVALID_STATE,	RTE_COMP_OP_STA-
	 TUS_OUT_OF_SPACE_TERMINATED,	RTE_COMP_OP_STATUS_OUT_OF_SPACE_RECOVER-
	 ABLE, RTE_COMP_OP_STATUS_CHECKSUM_VALIDATION_FAILED }
     enum rte_comp_algorithm {	}
     enum     rte_comp_hash_algorithm	 {    RTE_COMP_HASH_ALGO_NONE	 =    0,
	 RTE_COMP_HASH_ALGO_SHA1, RTE_COMP_HASH_ALGO_SHA2_256 }
     enum  rte_comp_checksum_type  {   RTE_COMP_CHECKSUM_NONE,	 RTE_COMP_CHECK-
	 SUM_CRC32,  RTE_COMP_CHECKSUM_ADLER32, RTE_COMP_CHECKSUM_CRC32_ADLER32,
	 RTE_COMP_CHECKSUM_XXHASH32, RTE_COMP_CHECKSUM_3GPP_PDCP_UDC }
     enum rte_comp_huffman {  RTE_COMP_HUFFMAN_DEFAULT,  RTE_COMP_HUFFMAN_FIXED,
	 RTE_COMP_HUFFMAN_DYNAMIC }
     enum   rte_comp_flush_flag   {   RTE_COMP_FLUSH_NONE,  RTE_COMP_FLUSH_SYNC,
	 RTE_COMP_FLUSH_FULL, RTE_COMP_FLUSH_FINAL }
     enum rte_comp_xform_type { RTE_COMP_COMPRESS, RTE_COMP_DECOMPRESS }
     enum rte_comp_op_type { RTE_COMP_OP_STATELESS, RTE_COMP_OP_STATEFUL }

   Functions
     void rte_comp_op_free (struct rte_comp_op *op)
     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) __rte_malloc __rte_dealloc(rte_comp_op_free
     struct rte_mempool struct rte_comp_op * rte_comp_op_alloc (struct	rte_mem-
	 pool *mempool)
     int rte_comp_op_bulk_alloc (struct rte_mempool *mempool, struct rte_comp_op
	 **ops, uint16_t nb_ops)
     void rte_comp_op_bulk_free (struct rte_comp_op **ops, uint16_t nb_ops)
     const char * rte_comp_get_feature_name (uint64_t flag)

Detailed Description
     RTE definitions for Data Compression Service

     Definition in file rte_comp.h.

Macro Definition Documentation
   #define RTE_COMP_FF_STATEFUL_COMPRESSION   (1ULL << 0)
     compression service feature flags

     Note
	 New features flags should be added to the end of the list

     Keep  these  flags  synchronised  with rte_comp_get_feature_name() Stateful
     compression is supported

     Definition at line 29 of file rte_comp.h.

   #define RTE_COMP_FF_STATEFUL_DECOMPRESSION	(1ULL << 1)
     Stateful decompression is supported

     Definition at line 31 of file rte_comp.h.

   #define RTE_COMP_FF_OOP_SGL_IN_SGL_OUT   (1ULL << 2)
     Out-of-place Scatter-gather (SGL) buffers, with multiple segments, are sup-
     ported in input and output

     Definition at line 35 of file rte_comp.h.

   #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

     Definition at line 40 of file rte_comp.h.

   #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

     Definition at line 44 of file rte_comp.h.

   #define RTE_COMP_FF_ADLER32_CHECKSUM   (1ULL << 5)
     Adler-32 Checksum is supported

     Definition at line 46 of file rte_comp.h.

   #define RTE_COMP_FF_CRC32_CHECKSUM	(1ULL << 6)
     CRC32 Checksum is supported

     Definition at line 48 of file rte_comp.h.

   #define RTE_COMP_FF_CRC32_ADLER32_CHECKSUM	(1ULL << 7)
     Adler-32/CRC32 Checksum is supported

     Definition at line 50 of file rte_comp.h.

   #define RTE_COMP_FF_MULTI_PKT_CHECKSUM   (1ULL << 8)
     Generation of checksum across multiple stateless packets is supported

     Definition at line 52 of file rte_comp.h.

   #define RTE_COMP_FF_SHA1_HASH   (1ULL << 9)
     SHA1 Hash is supported

     Definition at line 54 of file rte_comp.h.

   #define RTE_COMP_FF_SHA2_SHA256_HASH   (1ULL << 10)
     SHA256 Hash of SHA2 family is supported

     Definition at line 56 of file rte_comp.h.

   #define RTE_COMP_FF_NONCOMPRESSED_BLOCKS   (1ULL << 11)
     Creation of non-compressed blocks using RTE_COMP_LEVEL_NONE is supported

     Definition at line 58 of file rte_comp.h.

   #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 operations in-flight.

     Definition at line 64 of file rte_comp.h.

   #define RTE_COMP_FF_HUFFMAN_FIXED   (1ULL << 13)
     Fixed huffman encoding is supported

     Definition at line 66 of file rte_comp.h.

   #define RTE_COMP_FF_HUFFMAN_DYNAMIC	 (1ULL << 14)
     Dynamic huffman encoding is supported

     Definition at line 68 of file rte_comp.h.

   #define RTE_COMP_FF_XXHASH32_CHECKSUM   (1ULL << 15)
     xxHash-32 Checksum is supported

     Definition at line 70 of file rte_comp.h.

   #define RTE_COMP_FF_LZ4_DICT_ID   (1ULL << 16)
     LZ4 dictionary ID is supported

     Definition at line 72 of file rte_comp.h.

   #define RTE_COMP_FF_LZ4_CONTENT_WITH_CHECKSUM   (1ULL << 17)
     LZ4 content with checksum is supported

     Definition at line 74 of file rte_comp.h.

   #define RTE_COMP_FF_LZ4_CONTENT_SIZE   (1ULL << 18)
     LZ4 content size is supported

     Definition at line 76 of file rte_comp.h.

   #define RTE_COMP_FF_LZ4_BLOCK_INDEPENDENCE	(1ULL << 19)
     LZ4 block independent is supported

     Definition at line 78 of file rte_comp.h.

   #define RTE_COMP_FF_LZ4_BLOCK_WITH_CHECKSUM	 (1ULL << 20)
     LZ4 block with checksum is supported

     Definition at line 80 of file rte_comp.h.

   #define RTE_COMP_LEVEL_NONE	 (0)
     Use PMD Default

     Definition at line 150 of file rte_comp.h.

   #define RTE_COMP_LEVEL_MIN	(1)
     Output uncompressed blocks if supported by the specified algorithm

     Definition at line 152 of file rte_comp.h.

   #define RTE_COMP_LEVEL_MAX	(9)
     Use minimum compression level supported by the PMD

     Definition at line 154 of file rte_comp.h.

   #define RTE_COMP_LZ4_FLAG_DICT_ID   (1 << 0)
     Dictionary  ID  flag  If  this  flag is set, a 4-byte dict-ID field will be
     present, after the descriptor flags and the content size.

     Definition at line 258 of file rte_comp.h.

   #define RTE_COMP_LZ4_FLAG_CONTENT_CHECKSUM	(1 << 2)
     Content checksum flag If this flag is set, a 32-bit content  checksum  will
     be appended after the end mark.

     Definition at line 265 of file rte_comp.h.

   #define RTE_COMP_LZ4_FLAG_CONTENT_SIZE   (1 << 3)
     Content  size  flag  If this flag is set, the uncompressed size of data in-
     cluded within the frame will be present as an 8-byte unsigned little-endian
     value, after the flags. Content size usage is optional.

     Definition at line 273 of file rte_comp.h.

   #define RTE_COMP_LZ4_FLAG_BLOCK_CHECKSUM   (1 << 4)
     Block checksum flag. If this flag is set, each data block will be	followed
     by  a  4-byte  checksum, calculated with the xxHash-32 algorithm on the raw
     (compressed) data block. The intent is to detect data  corruption	(storage
     or  transmission errors) immediately, before decoding. Block checksum usage
     is optional.

     Definition at line 283 of file rte_comp.h.

   #define RTE_COMP_LZ4_FLAG_BLOCK_INDEPENDENCE   (1 << 5)
     Block independence flag. If this flag is set to 1, blocks are  independent.
     If  this  flag  is set to 0, each block depends on previous ones (up to LZ4
     window size, which is 64 KB). In such case, it is necessary to  decode  all
     blocks in sequence. Block dependency improves compression ratio, especially
     for  small  blocks.  On  the  other  hand, it makes random access or multi-
     threaded decoding impossible.

     Definition at line 294 of file rte_comp.h.

Enumeration Type Documentation
   enum rte_comp_op_status
     Status of comp operation

     Enumerator

     RTE_COMP_OP_STATUS_SUCCESS
	    Operation completed successfully

     RTE_COMP_OP_STATUS_NOT_PROCESSED
	    Operation has not yet been processed by the device

     RTE_COMP_OP_STATUS_INVALID_ARGS
	    Operation failed due to invalid arguments in request

     RTE_COMP_OP_STATUS_ERROR
	    Error handling operation

     RTE_COMP_OP_STATUS_INVALID_STATE
	    Operation is invoked in invalid state

     RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED
	    Output buffer ran out of space  before  operation  completed.  Error
	    case.  Application	must  resubmit	all  data  with  a larger output
	    buffer.

     RTE_COMP_OP_STATUS_OUT_OF_SPACE_RECOVERABLE
	    Output buffer ran out of space before operation completed, but  this
	    is	not an error case. Output data up to op.produced can be used and
	    next op in the stream should continue on from op.consumed+1.

     RTE_COMP_OP_STATUS_CHECKSUM_VALIDATION_FAILED
	    Checksum validation failed.  Either  calculated  does  checksum  not
	    match  the one provided or there was an error calculating the check-
	    sum

     Definition at line 83 of file rte_comp.h.

   enum rte_comp_algorithm
     Compression Algorithms

     Enumerator

     RTE_COMP_ALGO_NULL
	    No Compression  algorithm  No  compression.  Pass-through,	data  is
	    copied unchanged from source buffer to destination buffer.

     RTE_COMP_ALGO_DEFLATE
	    DEFLATE compression algorithm https://tools.ietf.org/html/rfc1951

     RTE_COMP_ALGO_LZS
	    LZS compression algorithm https://tools.ietf.org/html/rfc2395

     RTE_COMP_ALGO_LZ4
	    LZ4 compression algorithm https://github.com/lz4/lz4

     Definition at line 111 of file rte_comp.h.

   enum rte_comp_hash_algorithm
     Compression Hash Algorithms

     Enumerator

     RTE_COMP_HASH_ALGO_NONE
	    No hash

     RTE_COMP_HASH_ALGO_SHA1
	    SHA1 hash algorithm

     RTE_COMP_HASH_ALGO_SHA2_256
	    SHA256 hash algorithm of SHA2 family

     Definition at line 134 of file rte_comp.h.

   enum rte_comp_checksum_type
     Use  maximum  compression	level  supported by the PMD Compression checksum
     types

     Enumerator

     RTE_COMP_CHECKSUM_NONE
	    No checksum generated

     RTE_COMP_CHECKSUM_CRC32
	    Generates a CRC32 checksum, as used by gzip

     RTE_COMP_CHECKSUM_ADLER32
	    Generates an Adler-32 checksum, as used by zlib

     RTE_COMP_CHECKSUM_CRC32_ADLER32
	    Generates both Adler-32 and CRC32 checksums, concatenated. CRC32  is
	    in the lower 32bits, Adler-32 in the upper 32 bits.

     RTE_COMP_CHECKSUM_XXHASH32
	    Generates	 a    xxHash-32    checksum,	as    used    by    LZ4.
	    https://github.com/Cyan4973/xxHash/blob/dev/doc/xxhash_spec.md

     RTE_COMP_CHECKSUM_3GPP_PDCP_UDC
	    Generates checksum as defined under Uplink Data Compression checksum
	    as defined in the 3GPP PDCP specification

     Definition at line 158 of file rte_comp.h.

   enum rte_comp_huffman
     Compression Huffman Type - used by DEFLATE algorithm

     Enumerator

     RTE_COMP_HUFFMAN_DEFAULT
	    PMD may choose which Huffman codes to use

     RTE_COMP_HUFFMAN_FIXED
	    Use Fixed Huffman codes

     RTE_COMP_HUFFMAN_DYNAMIC
	    Use Dynamic Huffman codes

     Definition at line 180 of file rte_comp.h.

   enum rte_comp_flush_flag
     Compression flush flags

     Enumerator

     RTE_COMP_FLUSH_NONE
	    Data is not flushed. Output may remain  in	the  compressor  and  be
	    processed  during  a  following op. It may not be possible to decom-
	    press output until a later op with some other flush  flag  has  been
	    sent.

     RTE_COMP_FLUSH_SYNC
	    All  data should be flushed to output buffer. Output data can be de-
	    compressed. However state and history is not cleared, so future  op-
	    erations may use history from this operation.

     RTE_COMP_FLUSH_FULL
	    All  data should be flushed to output buffer. Output data can be de-
	    compressed. State and history data is cleared, so future ops will be
	    independent of ops processed before this.

     RTE_COMP_FLUSH_FINAL
	    Same as RTE_COMP_FLUSH_FULL but if op.algo is  RTE_COMP_ALGO_DEFLATE
	    then bfinal bit is set in the last block.

     Definition at line 190 of file rte_comp.h.

   enum rte_comp_xform_type
     Compression transform types

     Enumerator

     RTE_COMP_COMPRESS
	    Compression service - compress

     RTE_COMP_DECOMPRESS
	    Compression service - decompress

     Definition at line 213 of file rte_comp.h.

   enum rte_comp_op_type
     Compression operation type

     Enumerator

     RTE_COMP_OP_STATELESS
	    All data to be processed is submitted in the op, no state or history
	    from  previous  ops  is used and none will be stored for future ops.
	    Flush flag must be set to either FLUSH_FULL or FLUSH_FINAL.

     RTE_COMP_OP_STATEFUL
	    There may be more data to be processed after this op, it's part of a
	    stream of data. State and history from previous ops can be used  and
	    resulting  state and history can be stored for future ops, depending
	    on flush flag.

     Definition at line 221 of file rte_comp.h.

Function Documentation
   void rte_comp_op_free (struct rte_comp_op * op)
     Free operation structure If operation has been allocate from a rte_mempool,
     then the operation will be returned to the mempool.

     Parameters
	 op Compress operation pointer allocated from rte_comp_op_alloc() If  op
	 is NULL, no operation is performed.

   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)
     Creates an operation pool

     Parameters
	 name Compress pool name
	 nb_elts Number of elements in pool
	 cache_size Number of elements to cache on lcore, see rte_mempool_create
	 for further details about cache size
	 user_size Size of private data to allocate for user with each operation
	 socket_id Socket to identifier allocate memory on

     Returns

	 * On success pointer to mempool

	 * On failure NULL

   struct rte_mempool struct rte_comp_op * rte_comp_op_alloc (struct rte_mempool
     * mempool)
     Allocate an operation from a mempool with default parameters set

     Parameters
	 mempool Compress operation mempool

     Returns

	 * On success returns a valid rte_comp_op structure

	 * On failure returns NULL

   int	rte_comp_op_bulk_alloc (struct rte_mempool * mempool, struct rte_comp_op
     ** ops, uint16_t nb_ops)
     Bulk allocate operations from a mempool with default parameters set

     Parameters
	 mempool Compress operation mempool
	 ops Array to place allocated operations
	 nb_ops Number of operations to allocate

     Returns

	 * nb_ops: Success, the nb_ops requested was allocated

	 * 0: Not enough entries in the mempool; no ops are retrieved.

   void rte_comp_op_bulk_free (struct rte_comp_op ** ops, uint16_t nb_ops)
     Bulk free operation structures If operations have been  allocated	from  an
     rte_mempool, then the operations will be returned to the mempool. The array
     entry will be cleared.

     Parameters
	 ops Array of Compress operations
	 nb_ops Number of operations to free

   const char * rte_comp_get_feature_name (uint64_t flag)
     Get the name of a compress service feature flag

     Parameters
	 flag The mask describing the flag

     Returns
	 The name of this flag, or NULL if it's not a valid feature flag.

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026		   rte_comp.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rte_comp.h&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help