DPDK  23.03.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 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 #include <rte_compat.h>
20 #include <rte_mbuf.h>
21 
29 #define RTE_COMP_FF_STATEFUL_COMPRESSION (1ULL << 0)
30 
31 #define RTE_COMP_FF_STATEFUL_DECOMPRESSION (1ULL << 1)
32 
33 #define RTE_COMP_FF_OOP_SGL_IN_SGL_OUT (1ULL << 2)
34 
37 #define RTE_COMP_FF_OOP_SGL_IN_LB_OUT (1ULL << 3)
38 
42 #define RTE_COMP_FF_OOP_LB_IN_SGL_OUT (1ULL << 4)
43 
46 #define RTE_COMP_FF_ADLER32_CHECKSUM (1ULL << 5)
47 
48 #define RTE_COMP_FF_CRC32_CHECKSUM (1ULL << 6)
49 
50 #define RTE_COMP_FF_CRC32_ADLER32_CHECKSUM (1ULL << 7)
51 
52 #define RTE_COMP_FF_MULTI_PKT_CHECKSUM (1ULL << 8)
53 
54 #define RTE_COMP_FF_SHA1_HASH (1ULL << 9)
55 
56 #define RTE_COMP_FF_SHA2_SHA256_HASH (1ULL << 10)
57 
58 #define RTE_COMP_FF_NONCOMPRESSED_BLOCKS (1ULL << 11)
59 
60 #define RTE_COMP_FF_SHAREABLE_PRIV_XFORM (1ULL << 12)
61 
66 #define RTE_COMP_FF_HUFFMAN_FIXED (1ULL << 13)
67 
68 #define RTE_COMP_FF_HUFFMAN_DYNAMIC (1ULL << 14)
69 
70 #define RTE_COMP_FF_XXHASH32_CHECKSUM (1ULL << 15)
71 
72 #define RTE_COMP_FF_LZ4_DICT_ID (1ULL << 16)
73 
74 #define RTE_COMP_FF_LZ4_CONTENT_WITH_CHECKSUM (1ULL << 17)
75 
76 #define RTE_COMP_FF_LZ4_CONTENT_SIZE (1ULL << 18)
77 
78 #define RTE_COMP_FF_LZ4_BLOCK_INDEPENDENCE (1ULL << 19)
79 
80 #define RTE_COMP_FF_LZ4_BLOCK_WITH_CHECKSUM (1ULL << 20)
81 
105 };
106 
109  RTE_COMP_ALGO_UNSPECIFIED = 0,
128 };
129 
138 };
139 
145 #define RTE_COMP_LEVEL_PMD_DEFAULT (-1)
146 
147 #define RTE_COMP_LEVEL_NONE (0)
148 
149 #define RTE_COMP_LEVEL_MIN (1)
150 
151 #define RTE_COMP_LEVEL_MAX (9)
152 
170 };
171 
180 };
181 
203 };
204 
211 };
212 
226 };
227 
232 };
233 
239 #define RTE_COMP_LZ4_FLAG_DICT_ID (1 << 0)
240 
246 #define RTE_COMP_LZ4_FLAG_CONTENT_CHECKSUM (1 << 2)
247 
254 #define RTE_COMP_LZ4_FLAG_CONTENT_SIZE (1 << 3)
255 
264 #define RTE_COMP_LZ4_FLAG_BLOCK_CHECKSUM (1 << 4)
265 
275 #define RTE_COMP_LZ4_FLAG_BLOCK_INDEPENDENCE (1 << 5)
276 
279  uint8_t flags;
284 };
285 
290  union {
291  struct rte_comp_deflate_params deflate;
295  };
296  int level;
298  uint8_t window_size;
305  enum rte_comp_hash_algorithm hash_algo;
309 };
310 
319  uint8_t window_size;
324  union {
327  };
328  enum rte_comp_hash_algorithm hash_algo;
332 };
333 
344  union {
345  struct rte_comp_compress_xform compress;
347  struct rte_comp_decompress_xform decompress;
349  };
350 };
351 
361 struct rte_comp_op {
362  enum rte_comp_op_type op_type;
363  union {
369  void *stream;
378  };
379 
384  struct rte_mbuf *m_src;
392  struct rte_mbuf *m_dst;
408  struct {
409  uint32_t offset;
417  uint32_t length;
423  } src;
424  struct {
425  uint32_t offset;
434  } dst;
435  struct {
436  uint8_t *digest;
445  rte_iova_t iova_addr;
447  } hash;
448  enum rte_comp_flush_flag flush_flag;
452  uint64_t input_chksum;
457  uint64_t output_chksum;
461  uint32_t consumed;
465  uint32_t produced;
469  uint64_t debug_status;
475  uint8_t status;
484 
503 __rte_experimental
504 struct rte_mempool *
505 rte_comp_op_pool_create(const char *name,
506  unsigned int nb_elts, unsigned int cache_size,
507  uint16_t user_size, int socket_id);
508 
519 __rte_experimental
520 struct rte_comp_op *
522 
536 __rte_experimental
537 int
539  struct rte_comp_op **ops, uint16_t nb_ops);
540 
550 __rte_experimental
551 void
552 rte_comp_op_free(struct rte_comp_op *op);
553 
565 __rte_experimental
566 void
567 rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
568 
578 __rte_experimental
579 const char *
580 rte_comp_get_feature_name(uint64_t flag);
581 
582 #ifdef __cplusplus
583 }
584 #endif
585 
586 #endif /* _RTE_COMP_H_ */
struct rte_mempool * mempool
Definition: rte_comp.h:380
struct rte_mbuf * m_dst
Definition: rte_comp.h:392
rte_comp_op_status
Definition: rte_comp.h:84
uint64_t rte_iova_t
Definition: rte_common.h:458
rte_comp_xform_type
Definition: rte_comp.h:206
uint64_t debug_status
Definition: rte_comp.h:469
void * stream
Definition: rte_comp.h:369
rte_comp_op_type
Definition: rte_comp.h:214
rte_comp_algorithm
Definition: rte_comp.h:108
__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:131
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:155
__rte_experimental struct rte_comp_op * rte_comp_op_alloc(struct rte_mempool *mempool)
uint32_t length
Definition: rte_comp.h:417
uint32_t consumed
Definition: rte_comp.h:461
__rte_experimental void rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops)
uint8_t * digest
Definition: rte_comp.h:436
uint64_t output_chksum
Definition: rte_comp.h:457
enum rte_comp_huffman huffman
Definition: rte_comp.h:230
uint8_t status
Definition: rte_comp.h:475
rte_iova_t iova_addr
Definition: rte_comp.h:382
uint32_t produced
Definition: rte_comp.h:465
__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:384
void * private_xform
Definition: rte_comp.h:364
rte_comp_huffman
Definition: rte_comp.h:173
rte_comp_flush_flag
Definition: rte_comp.h:183
__rte_experimental void rte_comp_op_free(struct rte_comp_op *op)
uint64_t input_chksum
Definition: rte_comp.h:452
uint32_t offset
Definition: rte_comp.h:409
__rte_experimental int rte_comp_op_bulk_alloc(struct rte_mempool *mempool, struct rte_comp_op **ops, uint16_t nb_ops)