NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_erasure_coding.h File Reference
#include <inttypes.h>
#include <doca_compat.h>
#include <doca_error.h>
#include <doca_types.h>
Include dependency graph for doca_erasure_coding.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef void(* doca_ec_task_galois_mul_completion_cb_t) (struct doca_ec_task_galois_mul *task, union doca_data task_user_data, union doca_data ctx_user_data)
 Function to execute on completion of a Galois multiplication task. More...
 
typedef void(* doca_ec_task_create_completion_cb_t) (struct doca_ec_task_create *task, union doca_data task_user_data, union doca_data ctx_user_data)
 Function to execute on completion of a create task. More...
 
typedef void(* doca_ec_task_update_completion_cb_t) (struct doca_ec_task_update *task, union doca_data task_user_data, union doca_data ctx_user_data)
 Function to execute on completion of an update task. More...
 
typedef void(* doca_ec_task_recover_completion_cb_t) (struct doca_ec_task_recover *task, union doca_data task_user_data, union doca_data ctx_user_data)
 Function to execute on completion of a recover task. More...
 

Enumerations

enum  doca_ec_matrix_type { DOCA_EC_MATRIX_TYPE_CAUCHY = 1 , DOCA_EC_MATRIX_TYPE_VANDERMONDE = 2 }
 Types of coding matrix used for erasure codes. More...
 

Functions

DOCA_EXPERIMENTAL doca_error_t doca_ec_cap_task_galois_mul_is_supported (const struct doca_devinfo *devinfo)
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_task_galois_mul_set_conf (struct doca_ec *ec, doca_ec_task_galois_mul_completion_cb_t successful_task_completion_cb, doca_ec_task_galois_mul_completion_cb_t error_task_completion_cb, uint32_t num_tasks)
 This method sets the Galois multiplication tasks configuration. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_task_galois_mul_allocate_init (struct doca_ec *ec, const struct doca_ec_matrix *coding_matrix, const struct doca_buf *src_buf, struct doca_buf *dst_buf, union doca_data user_data, struct doca_ec_task_galois_mul **task)
 This method allocates and initializes a Galois multiplication task. More...
 
DOCA_EXPERIMENTAL struct doca_task * doca_ec_task_galois_mul_as_task (struct doca_ec_task_galois_mul *task)
 This method converts an EC Galois multiplication task to a doca_task. More...
 
DOCA_EXPERIMENTAL void doca_ec_task_galois_mul_set_coding_matrix (struct doca_ec_task_galois_mul *task, const struct doca_ec_matrix *coding_matrix)
 This method sets the coding_matrix of a Galois multiplication task. More...
 
DOCA_EXPERIMENTAL const struct doca_ec_matrix * doca_ec_task_galois_mul_get_coding_matrix (const struct doca_ec_task_galois_mul *task)
 This method gets the coding matrix of a Galois multiplication task. More...
 
DOCA_EXPERIMENTAL void doca_ec_task_galois_mul_set_src_buf (struct doca_ec_task_galois_mul *task, const struct doca_buf *src_buf)
 This method sets the source buffer of a Galois multiplication task. More...
 
DOCA_EXPERIMENTAL const struct doca_buf * doca_ec_task_galois_mul_get_src_buf (const struct doca_ec_task_galois_mul *task)
 This method gets the source buffer of a Galois multiplication task. More...
 
DOCA_EXPERIMENTAL void doca_ec_task_galois_mul_set_dst_buf (struct doca_ec_task_galois_mul *task, struct doca_buf *dst_buf)
 This method sets the destination buffer of a Galois multiplication task. More...
 
DOCA_EXPERIMENTAL struct doca_buf * doca_ec_task_galois_mul_get_dst_buf (const struct doca_ec_task_galois_mul *task)
 This method gets the destination buffer of a Galois multiplication task. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_cap_task_create_is_supported (const struct doca_devinfo *devinfo)
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_task_create_set_conf (struct doca_ec *ec, doca_ec_task_create_completion_cb_t successful_task_completion_cb, doca_ec_task_create_completion_cb_t error_task_completion_cb, uint32_t num_tasks)
 This method sets the create tasks configuration. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_task_create_allocate_init (struct doca_ec *ec, const struct doca_ec_matrix *coding_matrix, const struct doca_buf *original_data_blocks, struct doca_buf *rdnc_blocks, union doca_data user_data, struct doca_ec_task_create **task)
 This method allocates and initializes a create task. More...
 
DOCA_EXPERIMENTAL struct doca_task * doca_ec_task_create_as_task (struct doca_ec_task_create *task)
 This method converts an EC create task to a doca_task. More...
 
DOCA_EXPERIMENTAL void doca_ec_task_create_set_coding_matrix (struct doca_ec_task_create *task, const struct doca_ec_matrix *coding_matrix)
 This method sets the coding_matrix of a create task. More...
 
DOCA_EXPERIMENTAL const struct doca_ec_matrix * doca_ec_task_create_get_coding_matrix (const struct doca_ec_task_create *task)
 This method gets the coding matrix of a create task. More...
 
DOCA_EXPERIMENTAL void doca_ec_task_create_set_original_data_blocks (struct doca_ec_task_create *task, const struct doca_buf *original_data_blocks)
 This method sets the original_data_blocks buffer of a create task. More...
 
DOCA_EXPERIMENTAL const struct doca_buf * doca_ec_task_create_get_original_data_blocks (const struct doca_ec_task_create *task)
 This method gets the original_data_blocks buffer of a create task. The original_data_blocks buffer is a source buffer with data - A sequence containing all original data blocks - block_1, block_2 ,... More...
 
DOCA_EXPERIMENTAL void doca_ec_task_create_set_rdnc_blocks (struct doca_ec_task_create *task, struct doca_buf *rdnc_blocks)
 This method sets the rdnc_blocks buffer of a create task. More...
 
DOCA_EXPERIMENTAL struct doca_buf * doca_ec_task_create_get_rdnc_blocks (const struct doca_ec_task_create *task)
 This method gets the rdnc_blocks buffer of a create task. The rdnc_blocks buffer is a destination buffer for the redundancy blocks. On successful completion of this task, will hold a sequence containing all redundancy blocks - rdnc_block_1, rdnc_block_2 ,... More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_cap_task_update_is_supported (const struct doca_devinfo *devinfo)
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_task_update_set_conf (struct doca_ec *ec, doca_ec_task_update_completion_cb_t successful_task_completion_cb, doca_ec_task_update_completion_cb_t error_task_completion_cb, uint32_t num_tasks)
 This method sets the update tasks configuration. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_task_update_allocate_init (struct doca_ec *ec, const struct doca_ec_matrix *update_matrix, const struct doca_buf *original_updated_and_rdnc_blocks, struct doca_buf *updated_rdnc_blocks, union doca_data user_data, struct doca_ec_task_update **task)
 This method allocates and initializes an update task. More...
 
DOCA_EXPERIMENTAL struct doca_task * doca_ec_task_update_as_task (struct doca_ec_task_update *task)
 This method converts an EC update task to a doca_task. More...
 
DOCA_EXPERIMENTAL void doca_ec_task_update_set_update_matrix (struct doca_ec_task_update *task, const struct doca_ec_matrix *update_matrix)
 This method sets the update_matrix of an update task. More...
 
DOCA_EXPERIMENTAL const struct doca_ec_matrix * doca_ec_task_update_get_update_matrix (const struct doca_ec_task_update *task)
 This method gets the update_matrix of an update task. More...
 
DOCA_EXPERIMENTAL void doca_ec_task_update_set_original_updated_and_rdnc_blocks (struct doca_ec_task_update *task, const struct doca_buf *original_updated_and_rdnc_blocks)
 This method sets the original_updated_and_rdnc_blocks buffer of an update task. More...
 
DOCA_EXPERIMENTAL const struct doca_buf * doca_ec_task_update_get_original_updated_and_rdnc_blocks (const struct doca_ec_task_update *task)
 This method gets the original_updated_and_rdnc_blocks buffer of an update task. The original_data_blocks buffer is a source buffer with data - A sequence containing the original data block and it's updated data block, for each block that was updated, followed by the old redundancy blocks - old_data_block_i, updated_data_block_i, old_data_block_j, updated_data_block_j ,... ,rdnc_block_1, rdnc_block_2 ,... More...
 
DOCA_EXPERIMENTAL void doca_ec_task_update_set_updated_rdnc_blocks (struct doca_ec_task_update *task, struct doca_buf *updated_rdnc_blocks)
 This method sets the updated_rdnc_blocks buffer of an update task. More...
 
DOCA_EXPERIMENTAL struct doca_buf * doca_ec_task_update_get_updated_rdnc_blocks (const struct doca_ec_task_update *task)
 This method gets the updated_rdnc_blocks buffer of an update task. The rdnc_blocks buffer is a destination buffer for the redundancy blocks. On successful completion of this task, will hold a sequence containing all redundancy blocks - rdnc_block_1, rdnc_block_2 ,... More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_cap_task_recover_is_supported (const struct doca_devinfo *devinfo)
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_task_recover_set_conf (struct doca_ec *ec, doca_ec_task_recover_completion_cb_t successful_task_completion_cb, doca_ec_task_recover_completion_cb_t error_task_completion_cb, uint32_t num_tasks)
 This method sets the recover tasks configuration. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_task_recover_allocate_init (struct doca_ec *ec, const struct doca_ec_matrix *recover_matrix, const struct doca_buf *available_blocks, struct doca_buf *recovered_data_blocks, union doca_data user_data, struct doca_ec_task_recover **task)
 This method allocates and initializes a recover task. More...
 
DOCA_EXPERIMENTAL struct doca_task * doca_ec_task_recover_as_task (struct doca_ec_task_recover *task)
 This method converts an EC recover task to a doca_task. More...
 
DOCA_EXPERIMENTAL void doca_ec_task_recover_set_recover_matrix (struct doca_ec_task_recover *task, const struct doca_ec_matrix *recover_matrix)
 This method sets the recover_matrix of a recover task. More...
 
DOCA_EXPERIMENTAL const struct doca_ec_matrix * doca_ec_task_recover_get_recover_matrix (const struct doca_ec_task_recover *task)
 This method gets the recover_matrix of a recover task. More...
 
DOCA_EXPERIMENTAL void doca_ec_task_recover_set_available_blocks (struct doca_ec_task_recover *task, const struct doca_buf *available_blocks)
 This method sets the available_blocks buffer of a recover task. More...
 
DOCA_EXPERIMENTAL const struct doca_buf * doca_ec_task_recover_get_available_blocks (const struct doca_ec_task_recover *task)
 This method gets the available_blocks buffer of a recover task. The available_blocks buffer is a source buffer with data - A sequence containing all available data blocks and redundancy blocks - data_block_a, data_block_b, data_block_c ,... ,rdnc_block_x, rdnc_block_y ,... More...
 
DOCA_EXPERIMENTAL void doca_ec_task_recover_set_recovered_data_blocks (struct doca_ec_task_recover *task, struct doca_buf *recovered_data_blocks)
 This method sets the recovered_data_blocks buffer of a recover task. More...
 
DOCA_EXPERIMENTAL struct doca_buf * doca_ec_task_recover_get_recovered_data (const struct doca_ec_task_recover *task)
 This method gets the recovered_data buffer of a recover task. The recovered_data buffer is a destination buffer for the recovered data blocks. On successful completion of this task, will hold a sequence containing all the recovered data blocks - data_block_i, data_block_j ,... More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_create (struct doca_dev *dev, struct doca_ec **ec)
 Create a DOCA EC instance. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_destroy (struct doca_ec *ec)
 Destroy a DOCA EC instance. More...
 
DOCA_EXPERIMENTAL struct doca_ctx * doca_ec_as_ctx (struct doca_ec *ec)
 Convert EC instance into context. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_cap_get_max_block_size (const struct doca_devinfo *devinfo, uint64_t *max_block_size)
 Get maximum block size supported for DOCA EC tasks. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_cap_get_max_buf_list_len (const struct doca_devinfo *devinfo, uint32_t *max_buf_list_len)
 Get the maximum supported number of elements in DOCA linked-list buffer used for EC tasks. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_matrix_create (struct doca_ec *ec, enum doca_ec_matrix_type type, size_t data_block_count, size_t rdnc_block_count, struct doca_ec_matrix **matrix)
 Generate coding matrix for Erasure Code encode i.e. most basic encode matrix. This is necessary for executing create tasks. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_matrix_create_from_raw (struct doca_ec *ec, uint8_t *data, size_t data_block_count, size_t rdnc_block_count, struct doca_ec_matrix **matrix)
 Create coding matrix for Erasure Code encode i.e. most basic encode matrix from char array. This is substitute for doca_ec_matrix_create which converts a char array to an DOCA EC matrix that can be used to execute different EC tasks. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_matrix_create_update (struct doca_ec *ec, const struct doca_ec_matrix *coding_matrix, uint32_t update_indices[], size_t n_updates, struct doca_ec_matrix **matrix)
 Generate coding matrix for Erasure Code update. To use this function must call doca_ec_matrix_create() or doca_ec_matrix_create_from_raw() before. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_matrix_create_recover (struct doca_ec *ec, const struct doca_ec_matrix *coding_matrix, uint32_t missing_indices[], size_t n_missing, struct doca_ec_matrix **matrix)
 Generate coding matrix for Erasure Code recovery from failure. To use this function must call doca_ec_matrix_create() or doca_ec_matrix_create_from_raw() before. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_ec_matrix_destroy (struct doca_ec_matrix *matrix)
 Destroy coding matrix. More...