NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_compress.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES, ALL RIGHTS RESERVED.
3  *
4  * This software product is a proprietary product of NVIDIA CORPORATION &
5  * AFFILIATES (the "Company") and all right, title, and interest in and to the
6  * software product, including all associated intellectual property rights, are
7  * and shall remain exclusively with the Company.
8  *
9  * This software product is governed by the End User License Agreement
10  * provided with the software product.
11  *
12  */
13 
22 #ifndef DOCA_COMPRESS_H_
23 #define DOCA_COMPRESS_H_
24 
25 #include <inttypes.h>
26 
27 #include <doca_compat.h>
28 #include <doca_error.h>
29 #include <doca_types.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /**********************************************************************************************************************
36  * DOCA core opaque types
37  *********************************************************************************************************************/
38 
39 struct doca_buf;
40 struct doca_ctx;
41 struct doca_dev;
42 struct doca_devinfo;
43 
44 /*********************************************************************************************************************
45  * DOCA COMPRESS Context
46  *********************************************************************************************************************/
47 
51 struct doca_compress;
52 
69 doca_error_t doca_compress_create(struct doca_dev *dev, struct doca_compress **compress);
70 
83 doca_error_t doca_compress_destroy(struct doca_compress *compress);
84 
95 struct doca_ctx *doca_compress_as_ctx(struct doca_compress *compress);
96 
115 doca_error_t doca_compress_cap_get_max_num_tasks(struct doca_compress *compress, uint32_t *max_num_tasks);
116 
117 /************************************************************************/
118 /* COMPRESS DEFLATE TASK */
119 /************************************************************************/
120 
124 struct doca_compress_task_compress_deflate;
125 
137 typedef void (*doca_compress_task_compress_deflate_completion_cb_t)(struct doca_compress_task_compress_deflate *task,
138  union doca_data task_user_data,
139  union doca_data ctx_user_data);
140 
159 
179  uint64_t *max_buffer_size);
180 
197  uint32_t *max_buf_list_len);
198 
218  struct doca_compress *compress,
221  uint32_t num_tasks);
222 
249  struct doca_buf const *src_buff,
250  struct doca_buf *dst_buff,
251  union doca_data user_data,
252  struct doca_compress_task_compress_deflate **task);
253 
262 struct doca_task *doca_compress_task_compress_deflate_as_task(struct doca_compress_task_compress_deflate *task);
263 
273 void doca_compress_task_compress_deflate_set_src(struct doca_compress_task_compress_deflate *task,
274  struct doca_buf const *src_buff);
275 
286  const struct doca_compress_task_compress_deflate *task);
287 
297 void doca_compress_task_compress_deflate_set_dst(struct doca_compress_task_compress_deflate *task,
298  struct doca_buf *dst_buff);
299 
309 struct doca_buf *doca_compress_task_compress_deflate_get_dst(const struct doca_compress_task_compress_deflate *task);
310 
322 uint32_t doca_compress_task_compress_deflate_get_crc_cs(const struct doca_compress_task_compress_deflate *task);
323 
335 uint32_t doca_compress_task_compress_deflate_get_adler_cs(const struct doca_compress_task_compress_deflate *task);
336 
337 /************************************************************************/
338 /* DECOMPRESS DEFLATE TASK */
339 /************************************************************************/
340 
344 struct doca_compress_task_decompress_deflate;
345 
357 typedef void (*doca_compress_task_decompress_deflate_completion_cb_t)(struct doca_compress_task_decompress_deflate *task,
358  union doca_data task_user_data,
359  union doca_data ctx_user_data);
360 
379 
399  uint64_t *max_buffer_size);
400 
417  uint32_t *max_buf_list_len);
418 
439  struct doca_compress *compress,
442  uint32_t num_tasks);
443 
469  struct doca_buf const *src_buff,
470  struct doca_buf *dst_buff,
471  union doca_data user_data,
472  struct doca_compress_task_decompress_deflate **task);
473 
482 struct doca_task *doca_compress_task_decompress_deflate_as_task(struct doca_compress_task_decompress_deflate *task);
483 
493 void doca_compress_task_decompress_deflate_set_src(struct doca_compress_task_decompress_deflate *task,
494  struct doca_buf const *src_buff);
495 
506  const struct doca_compress_task_decompress_deflate *task);
507 
517 void doca_compress_task_decompress_deflate_set_dst(struct doca_compress_task_decompress_deflate *task,
518  struct doca_buf *dst_buff);
519 
529 struct doca_buf *doca_compress_task_decompress_deflate_get_dst(const struct doca_compress_task_decompress_deflate *task);
530 
542 uint32_t doca_compress_task_decompress_deflate_get_crc_cs(const struct doca_compress_task_decompress_deflate *task);
543 
555 uint32_t doca_compress_task_decompress_deflate_get_adler_cs(const struct doca_compress_task_decompress_deflate *task);
556 
557 /************************************************************************/
558 /* DECOMPRESS LZ4 STREAM TASK */
559 /************************************************************************/
560 
566 struct doca_compress_task_decompress_lz4_stream;
567 
580  struct doca_compress_task_decompress_lz4_stream *task,
581  union doca_data task_user_data,
582  union doca_data ctx_user_data);
583 
602 
622  uint64_t *max_buffer_size);
623 
640  uint32_t *max_buf_list_len);
641 
661  struct doca_compress *compress,
664  uint32_t num_tasks);
665 
696  uint8_t has_block_checksum,
697  uint8_t are_blocks_independent,
698  struct doca_buf const *src_buff,
699  struct doca_buf *dst_buff,
700  union doca_data user_data,
701  struct doca_compress_task_decompress_lz4_stream **task);
702 
712  struct doca_compress_task_decompress_lz4_stream *task);
713 
724  struct doca_compress_task_decompress_lz4_stream *task,
725  uint8_t has_block_checksum);
726 
738  const struct doca_compress_task_decompress_lz4_stream *task);
739 
750  struct doca_compress_task_decompress_lz4_stream *task,
751  uint8_t are_blocks_independent);
752 
763  const struct doca_compress_task_decompress_lz4_stream *task);
764 
774 void doca_compress_task_decompress_lz4_stream_set_src(struct doca_compress_task_decompress_lz4_stream *task,
775  struct doca_buf const *src_buff);
776 
787  const struct doca_compress_task_decompress_lz4_stream *task);
788 
798 void doca_compress_task_decompress_lz4_stream_set_dst(struct doca_compress_task_decompress_lz4_stream *task,
799  struct doca_buf *dst_buff);
800 
811  const struct doca_compress_task_decompress_lz4_stream *task);
812 
825  const struct doca_compress_task_decompress_lz4_stream *task);
826 
839  const struct doca_compress_task_decompress_lz4_stream *task);
840 
841 /************************************************************************/
842 /* DECOMPRESS LZ4 BLOCK TASK */
843 /************************************************************************/
844 
849 struct doca_compress_task_decompress_lz4_block;
850 
863  struct doca_compress_task_decompress_lz4_block *task,
864  union doca_data task_user_data,
865  union doca_data ctx_user_data);
866 
885 
905  uint64_t *max_buffer_size);
906 
923  uint32_t *max_buf_list_len);
924 
944  struct doca_compress *compress,
947  uint32_t num_tasks);
948 
975  struct doca_buf const *src_buff,
976  struct doca_buf *dst_buff,
977  union doca_data user_data,
978  struct doca_compress_task_decompress_lz4_block **task);
979 
988 struct doca_task *doca_compress_task_decompress_lz4_block_as_task(struct doca_compress_task_decompress_lz4_block *task);
989 
999 void doca_compress_task_decompress_lz4_block_set_src(struct doca_compress_task_decompress_lz4_block *task,
1000  struct doca_buf const *src_buff);
1001 
1012  const struct doca_compress_task_decompress_lz4_block *task);
1013 
1023 void doca_compress_task_decompress_lz4_block_set_dst(struct doca_compress_task_decompress_lz4_block *task,
1024  struct doca_buf *dst_buff);
1025 
1036  const struct doca_compress_task_decompress_lz4_block *task);
1037 
1049 uint32_t doca_compress_task_decompress_lz4_block_get_crc_cs(const struct doca_compress_task_decompress_lz4_block *task);
1050 
1062 uint32_t doca_compress_task_decompress_lz4_block_get_xxh_cs(const struct doca_compress_task_decompress_lz4_block *task);
1063 
1064 #ifdef __cplusplus
1065 } /* extern "C" */
1066 #endif
1067 
1068 #endif /* DOCA_COMPRESS_H_ */
1069 
static void task_error_cb(struct doca_task *se_task, union doca_data task_user_data, union doca_data ctx_user_data)
Definition: common_common.c:65
static void task_completion_cb(struct doca_task *se_task, union doca_data task_user_data, union doca_data ctx_user_data)
Definition: common_common.c:48
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
Definition: doca_compat.h:103
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_stream_get_xxh_cs(const struct doca_compress_task_decompress_lz4_stream *task)
get decompress LZ4 stream task xxHash-32 checksum
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_stream_get_max_buf_list_len(const struct doca_devinfo *devinfo, uint32_t *max_buf_list_len)
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_compress_deflate_set_conf(struct doca_compress *compress, doca_compress_task_compress_deflate_completion_cb_t task_completion_cb, doca_compress_task_compress_deflate_completion_cb_t task_error_cb, uint32_t num_tasks)
This method sets the compress deflate task configuration.
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_compress_deflate_get_max_buf_list_len(const struct doca_devinfo *devinfo, uint32_t *max_buf_list_len)
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_stream_get_max_buf_size(const struct doca_devinfo *devinfo, uint64_t *max_buffer_size)
Get decompress LZ4 stream max size.
DOCA_EXPERIMENTAL struct doca_buf const * doca_compress_task_decompress_lz4_stream_get_src(const struct doca_compress_task_decompress_lz4_stream *task)
get decompress LZ4 stream task source
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_stream_alloc_init(struct doca_compress *compress, uint8_t has_block_checksum, uint8_t are_blocks_independent, struct doca_buf const *src_buff, struct doca_buf *dst_buff, union doca_data user_data, struct doca_compress_task_decompress_lz4_stream **task)
Allocate decompress LZ4 stream task.
DOCA_EXPERIMENTAL struct doca_buf const * doca_compress_task_decompress_lz4_block_get_src(const struct doca_compress_task_decompress_lz4_block *task)
get decompress LZ4 block task source
void(* doca_compress_task_compress_deflate_completion_cb_t)(struct doca_compress_task_compress_deflate *task, union doca_data task_user_data, union doca_data ctx_user_data)
Function to execute on compress deflate task completion.
DOCA_EXPERIMENTAL doca_error_t doca_compress_destroy(struct doca_compress *compress)
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_deflate_set_conf(struct doca_compress *compress, doca_compress_task_decompress_deflate_completion_cb_t task_completion_cb, doca_compress_task_decompress_deflate_completion_cb_t task_error_cb, uint32_t num_tasks)
This method sets the decompress deflate task configuration.
DOCA_EXPERIMENTAL uint32_t doca_compress_task_compress_deflate_get_crc_cs(const struct doca_compress_task_compress_deflate *task)
get compress deflate task CRC checksum
DOCA_EXPERIMENTAL struct doca_buf * doca_compress_task_decompress_deflate_get_dst(const struct doca_compress_task_decompress_deflate *task)
get decompress deflate task destination
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_compress_deflate_is_supported(const struct doca_devinfo *devinfo)
Check if a compress deflate task is supported by a device.
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_block_get_max_buf_size(const struct doca_devinfo *devinfo, uint64_t *max_buffer_size)
Get decompress LZ4 block max size.
void(* doca_compress_task_decompress_deflate_completion_cb_t)(struct doca_compress_task_decompress_deflate *task, union doca_data task_user_data, union doca_data ctx_user_data)
Function to execute on decompress deflate task completion.
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_deflate_get_max_buf_size(const struct doca_devinfo *devinfo, uint64_t *max_buffer_size)
Get decompress deflate max size.
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_src(struct doca_compress_task_decompress_lz4_stream *task, struct doca_buf const *src_buff)
set decompress LZ4 stream task source
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_compress_deflate_get_max_buf_size(const struct doca_devinfo *devinfo, uint64_t *max_buffer_size)
Get compress deflate max size.
DOCA_EXPERIMENTAL struct doca_task * doca_compress_task_decompress_deflate_as_task(struct doca_compress_task_decompress_deflate *task)
convert decompress deflate task to doca_task
DOCA_EXPERIMENTAL void doca_compress_task_compress_deflate_set_src(struct doca_compress_task_compress_deflate *task, struct doca_buf const *src_buff)
set compress deflate task source
void(* doca_compress_task_decompress_lz4_block_completion_cb_t)(struct doca_compress_task_decompress_lz4_block *task, union doca_data task_user_data, union doca_data ctx_user_data)
Function to execute on decompress LZ4 block task completion.
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_deflate_get_adler_cs(const struct doca_compress_task_decompress_deflate *task)
get decompress deflate task adler checksum
DOCA_EXPERIMENTAL doca_error_t doca_compress_create(struct doca_dev *dev, struct doca_compress **compress)
DOCA_EXPERIMENTAL void doca_compress_task_compress_deflate_set_dst(struct doca_compress_task_compress_deflate *task, struct doca_buf *dst_buff)
set compress deflate task destination
DOCA_EXPERIMENTAL struct doca_task * doca_compress_task_decompress_lz4_block_as_task(struct doca_compress_task_decompress_lz4_block *task)
convert decompress LZ4 block task to doca_task
DOCA_EXPERIMENTAL struct doca_buf const * doca_compress_task_decompress_deflate_get_src(const struct doca_compress_task_decompress_deflate *task)
get decompress deflate task source
void(* doca_compress_task_decompress_lz4_stream_completion_cb_t)(struct doca_compress_task_decompress_lz4_stream *task, union doca_data task_user_data, union doca_data ctx_user_data)
Function to execute on decompress LZ4 stream task completion.
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_block_set_src(struct doca_compress_task_decompress_lz4_block *task, struct doca_buf const *src_buff)
set decompress LZ4 block task source
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_deflate_get_crc_cs(const struct doca_compress_task_decompress_deflate *task)
get decompress deflate task CRC checksum
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_block_is_supported(const struct doca_devinfo *devinfo)
Check if a decompress LZ4 block task is supported by a device.
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_block_get_crc_cs(const struct doca_compress_task_decompress_lz4_block *task)
get decompress LZ4 block task CRC checksum
DOCA_EXPERIMENTAL struct doca_buf * doca_compress_task_decompress_lz4_stream_get_dst(const struct doca_compress_task_decompress_lz4_stream *task)
get decompress LZ4 stream task destination
DOCA_EXPERIMENTAL struct doca_ctx * doca_compress_as_ctx(struct doca_compress *compress)
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_block_alloc_init(struct doca_compress *compress, struct doca_buf const *src_buff, struct doca_buf *dst_buff, union doca_data user_data, struct doca_compress_task_decompress_lz4_block **task)
Allocate decompress LZ4 block task.
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_are_blocks_independent(struct doca_compress_task_decompress_lz4_stream *task, uint8_t are_blocks_independent)
set decompress LZ4 stream task are_blocks_independent flag
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_block_get_xxh_cs(const struct doca_compress_task_decompress_lz4_block *task)
get decompress LZ4 block task xxHash-32 checksum
DOCA_EXPERIMENTAL struct doca_task * doca_compress_task_compress_deflate_as_task(struct doca_compress_task_compress_deflate *task)
convert compress deflate task to doca_task
DOCA_EXPERIMENTAL struct doca_buf * doca_compress_task_compress_deflate_get_dst(const struct doca_compress_task_compress_deflate *task)
get compress deflate task destination
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_get_max_num_tasks(struct doca_compress *compress, uint32_t *max_num_tasks)
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_stream_is_supported(const struct doca_devinfo *devinfo)
Check if a decompress LZ4 stream task is supported by a device.
DOCA_EXPERIMENTAL void doca_compress_task_decompress_deflate_set_src(struct doca_compress_task_decompress_deflate *task, struct doca_buf const *src_buff)
set decompress deflate task source
DOCA_EXPERIMENTAL struct doca_buf * doca_compress_task_decompress_lz4_block_get_dst(const struct doca_compress_task_decompress_lz4_block *task)
get decompress LZ4 block task destination
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_deflate_get_max_buf_list_len(const struct doca_devinfo *devinfo, uint32_t *max_buf_list_len)
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_stream_set_conf(struct doca_compress *compress, doca_compress_task_decompress_lz4_stream_completion_cb_t task_completion_cb, doca_compress_task_decompress_lz4_stream_completion_cb_t task_error_cb, uint32_t num_tasks)
This method sets the decompress LZ4 stream task configuration.
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_stream_get_crc_cs(const struct doca_compress_task_decompress_lz4_stream *task)
get decompress LZ4 stream task CRC checksum
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_has_block_checksum(struct doca_compress_task_decompress_lz4_stream *task, uint8_t has_block_checksum)
set decompress LZ4 stream task has_block_checksum flag
DOCA_EXPERIMENTAL struct doca_task * doca_compress_task_decompress_lz4_stream_as_task(struct doca_compress_task_decompress_lz4_stream *task)
convert decompress LZ4 stream task to doca_task
DOCA_EXPERIMENTAL uint8_t doca_compress_task_decompress_lz4_stream_get_has_block_checksum(const struct doca_compress_task_decompress_lz4_stream *task)
get decompress LZ4 stream task has_block_checksum flag
DOCA_EXPERIMENTAL uint32_t doca_compress_task_compress_deflate_get_adler_cs(const struct doca_compress_task_compress_deflate *task)
get compress deflate task adler checksum
DOCA_EXPERIMENTAL uint8_t doca_compress_task_decompress_lz4_stream_get_are_blocks_independent(const struct doca_compress_task_decompress_lz4_stream *task)
get decompress LZ4 stream task are_blocks_independent flag
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_deflate_is_supported(const struct doca_devinfo *devinfo)
Check if a decompress deflate task is supported by a device.
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_block_get_max_buf_list_len(const struct doca_devinfo *devinfo, uint32_t *max_buf_list_len)
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_compress_deflate_alloc_init(struct doca_compress *compress, struct doca_buf const *src_buff, struct doca_buf *dst_buff, union doca_data user_data, struct doca_compress_task_compress_deflate **task)
Allocate compress deflate task.
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_block_set_conf(struct doca_compress *compress, doca_compress_task_decompress_lz4_block_completion_cb_t task_completion_cb, doca_compress_task_decompress_lz4_block_completion_cb_t task_error_cb, uint32_t num_tasks)
This method sets the decompress LZ4 block task configuration.
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_block_set_dst(struct doca_compress_task_decompress_lz4_block *task, struct doca_buf *dst_buff)
set decompress LZ4 block task destination
DOCA_EXPERIMENTAL void doca_compress_task_decompress_deflate_set_dst(struct doca_compress_task_decompress_deflate *task, struct doca_buf *dst_buff)
set decompress deflate task destination
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_dst(struct doca_compress_task_decompress_lz4_stream *task, struct doca_buf *dst_buff)
set decompress LZ4 stream task destination
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_deflate_alloc_init(struct doca_compress *compress, struct doca_buf const *src_buff, struct doca_buf *dst_buff, union doca_data user_data, struct doca_compress_task_decompress_deflate **task)
Allocate decompress deflate task.
DOCA_EXPERIMENTAL struct doca_buf const * doca_compress_task_compress_deflate_get_src(const struct doca_compress_task_compress_deflate *task)
get compress deflate task source
enum doca_error doca_error_t
DOCA API return codes.
Convenience type for representing opaque data.
Definition: doca_types.h:56