DPDK  23.07.0
rte_comp.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017-2018 Intel Corporation
3  */
4 
5 #ifndef _RTE_COMP_H_
6 #define _RTE_COMP_H_
7 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 #include <rte_compat.h>
19 #include <rte_mbuf.h>
20 
28 #define RTE_COMP_FF_STATEFUL_COMPRESSION (1ULL << 0)
29 
30 #define RTE_COMP_FF_STATEFUL_DECOMPRESSION (1ULL << 1)
31 
32 #define RTE_COMP_FF_OOP_SGL_IN_SGL_OUT (1ULL << 2)
33 
36 #define RTE_COMP_FF_OOP_SGL_IN_LB_OUT (1ULL << 3)
37 
41 #define RTE_COMP_FF_OOP_LB_IN_SGL_OUT (1ULL << 4)
42 
45 #define RTE_COMP_FF_ADLER32_CHECKSUM (1ULL << 5)
46 
47 #define RTE_COMP_FF_CRC32_CHECKSUM (1ULL << 6)
48 
49 #define RTE_COMP_FF_CRC32_ADLER32_CHECKSUM (1ULL << 7)
50 
51 #define RTE_COMP_FF_MULTI_PKT_CHECKSUM (1ULL << 8)
52 
53 #define RTE_COMP_FF_SHA1_HASH (1ULL << 9)
54 
55 #define RTE_COMP_FF_SHA2_SHA256_HASH (1ULL << 10)
56 
57 #define RTE_COMP_FF_NONCOMPRESSED_BLOCKS (1ULL << 11)
58 
59 #define RTE_COMP_FF_SHAREABLE_PRIV_XFORM (1ULL << 12)
60 
65 #define RTE_COMP_FF_HUFFMAN_FIXED (1ULL << 13)
66 
67 #define RTE_COMP_FF_HUFFMAN_DYNAMIC (1ULL << 14)
68 
69 #define RTE_COMP_FF_XXHASH32_CHECKSUM (1ULL << 15)
70 
71 #define RTE_COMP_FF_LZ4_DICT_ID (1ULL << 16)
72 
73 #define RTE_COMP_FF_LZ4_CONTENT_WITH_CHECKSUM (1ULL << 17)
74 
75 #define RTE_COMP_FF_LZ4_CONTENT_SIZE (1ULL << 18)
76 
77 #define RTE_COMP_FF_LZ4_BLOCK_INDEPENDENCE (1ULL << 19)
78 
79 #define RTE_COMP_FF_LZ4_BLOCK_WITH_CHECKSUM (1ULL << 20)
80 
104 };
105 
108  RTE_COMP_ALGO_UNSPECIFIED = 0,
127 };
128 
137 };
138 
144 #define RTE_COMP_LEVEL_PMD_DEFAULT (-1)
145 
146 #define RTE_COMP_LEVEL_NONE (0)
147 
148 #define RTE_COMP_LEVEL_MIN (1)
149 
150 #define RTE_COMP_LEVEL_MAX (9)
151 
169 };
170 
179 };
180 
202 };
203 
210 };
211 
225 };
226 
231 };
232 
238 #define RTE_COMP_LZ4_FLAG_DICT_ID (1 << 0)
239 
245 #define RTE_COMP_LZ4_FLAG_CONTENT_CHECKSUM (1 << 2)
246 
253 #define RTE_COMP_LZ4_FLAG_CONTENT_SIZE (1 << 3)
254 
263 #define RTE_COMP_LZ4_FLAG_BLOCK_CHECKSUM (1 << 4)
264 
274 #define RTE_COMP_LZ4_FLAG_BLOCK_INDEPENDENCE (1 << 5)
275 
278  uint8_t flags;
283 };
284 
289  union {
290  struct rte_comp_deflate_params deflate;
294  };
295  int level;
297  uint8_t window_size;
304  enum rte_comp_hash_algorithm hash_algo;
308 };
309 
318  uint8_t window_size;
323  union {
326  };
327  enum rte_comp_hash_algorithm hash_algo;
331 };
332 
343  union {
344  struct rte_comp_compress_xform compress;
346  struct rte_comp_decompress_xform decompress;
348  };
349 };
350 
360 struct rte_comp_op {
361  enum rte_comp_op_type op_type;
362  union {
368  void *stream;
377  };
378 
383  struct rte_mbuf *m_src;
391  struct rte_mbuf *m_dst;
407  struct {
408  uint32_t offset;
416  uint32_t length;
422  } src;
423  struct {
424  uint32_t offset;
433  } dst;
434  struct {
435  uint8_t *digest;
444  rte_iova_t iova_addr;
446  } hash;
447  enum rte_comp_flush_flag flush_flag;
451  uint64_t input_chksum;
456  uint64_t output_chksum;
460  uint32_t consumed;
464  uint32_t produced;
468  uint64_t debug_status;
474  uint8_t status;
483 
502 __rte_experimental
503 struct rte_mempool *
504 rte_comp_op_pool_create(const char *name,
505  unsigned int nb_elts, unsigned int cache_size,
506  uint16_t user_size, int socket_id);
507 
518 __rte_experimental
519 struct rte_comp_op *
521 
535 __rte_experimental
536 int
538  struct rte_comp_op **ops, uint16_t nb_ops);
539 
549 __rte_experimental
550 void
551 rte_comp_op_free(struct rte_comp_op *op);
552 
564 __rte_experimental
565 void
566 rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
567 
577 __rte_experimental
578 const char *
579 rte_comp_get_feature_name(uint64_t flag);
580 
581 #ifdef __cplusplus
582 }
583 #endif
584 
585 #endif /* _RTE_COMP_H_ */
struct rte_mempool * mempool
Definition: rte_comp.h:379
struct rte_mbuf * m_dst
Definition: rte_comp.h:391
rte_comp_op_status
Definition: rte_comp.h:83
uint64_t rte_iova_t
Definition: rte_common.h:458
rte_comp_xform_type
Definition: rte_comp.h:205
uint64_t debug_status
Definition: rte_comp.h:468
void * stream
Definition: rte_comp.h:368
rte_comp_op_type
Definition: rte_comp.h:213
rte_comp_algorithm
Definition: rte_comp.h:107
__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)
rte_comp_hash_algorithm
Definition: rte_comp.h:130
uint32_t cache_size
Definition: rte_mempool.h:231
char name[RTE_MEMPOOL_NAMESIZE]
Definition: rte_mempool.h:220
rte_comp_checksum_type
Definition: rte_comp.h:154
__rte_experimental struct rte_comp_op * rte_comp_op_alloc(struct rte_mempool *mempool)
uint32_t length
Definition: rte_comp.h:416
uint32_t consumed
Definition: rte_comp.h:460
__rte_experimental void rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops)
uint8_t * digest
Definition: rte_comp.h:435
uint64_t output_chksum
Definition: rte_comp.h:456
enum rte_comp_huffman huffman
Definition: rte_comp.h:229
uint8_t status
Definition: rte_comp.h:474
rte_iova_t iova_addr
Definition: rte_comp.h:381
uint32_t produced
Definition: rte_comp.h:464
__rte_experimental const char * rte_comp_get_feature_name(uint64_t flag)
#define __rte_cache_aligned
Definition: rte_common.h:440
struct rte_mbuf * m_src
Definition: rte_comp.h:383
void * private_xform
Definition: rte_comp.h:363
rte_comp_huffman
Definition: rte_comp.h:172
rte_comp_flush_flag
Definition: rte_comp.h:182
__rte_experimental void rte_comp_op_free(struct rte_comp_op *op)
uint64_t input_chksum
Definition: rte_comp.h:451
uint32_t offset
Definition: rte_comp.h:408
__rte_experimental int rte_comp_op_bulk_alloc(struct rte_mempool *mempool, struct rte_comp_op **ops, uint16_t nb_ops)