|
NAMErte_cryptodev.h SYNOPSIS#include <rte_compat.h>
Data Structuresstruct rte_crypto_param_range
Macros#define rte_crypto_op_ctod_offset(c, t, o) ((t)((char
*)(c) + (o)))
Typedefstypedef uint16_t(* rte_cryptodev_callback_fn)
(uint16_t dev_id, uint16_t qp_id, struct rte_crypto_op **ops,
uint16_t nb_ops, void *user_param)
Enumerationsenum rte_cryptodev_event_type {
RTE_CRYPTODEV_EVENT_UNKNOWN, RTE_CRYPTODEV_EVENT_ERROR,
RTE_CRYPTODEV_EVENT_MAX }
Functionsconst struct rte_cryptodev_symmetric_capability *
rte_cryptodev_sym_capability_get (uint8_t dev_id, const struct
rte_cryptodev_sym_capability_idx *idx)
Detailed DescriptionRTE Cryptographic Device APIs Defines RTE Crypto Device APIs for the provisioning of cipher and authentication operations. Definition in file rte_cryptodev.h. Macro Definition Documentation#define rte_crypto_op_ctod_offset(c, t, o) ((t)((char *)(c) + (o)))A macro that points to an offset from the start of the crypto operation structure (rte_crypto_op) The returned pointer is cast to type t. Parameters c The crypto operation.
o The offset from the start of the crypto operation. t The type to cast the result into. Definition at line 64 of file rte_cryptodev.h. #define rte_crypto_op_ctophys_offset(c, o) (rte_iova_t)((c)->phys_addr + (o))A macro that returns the physical address that points to an offset from the start of the crypto operation (rte_crypto_op) Parameters c The crypto operation.
o The offset from the start of the crypto operation to calculate address from. Definition at line 78 of file rte_cryptodev.h. #define RTE_CRYPTO_CIPHER_DATA_UNIT_LEN_512_BYTES RTE_BIT32(0)Data-unit supported lengths of cipher algorithms. A bit can represent any set of data-unit sizes (single size, multiple size, range, etc). Definition at line 100 of file rte_cryptodev.h. #define RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() { RTE_CRYPTO_OP_TYPE_UNDEFINED }Macro used at end of crypto PMD list Definition at line 508 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO (1ULL << 0)Crypto device supported feature flags Note: New features flags should be added to the end of the list Keep these flags synchronised with rte_cryptodev_get_feature_name() Symmetric crypto operations are supported Definition at line 521 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO (1ULL << 1)Asymmetric crypto operations are supported Definition at line 523 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING (1ULL << 2)Chaining symmetric crypto operations are supported Definition at line 525 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_CPU_SSE (1ULL << 3)Utilises CPU SIMD SSE instructions Definition at line 527 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_CPU_AVX (1ULL << 4)Utilises CPU SIMD AVX instructions Definition at line 529 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_CPU_AVX2 (1ULL << 5)Utilises CPU SIMD AVX2 instructions Definition at line 531 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_CPU_AESNI (1ULL << 6)Utilises CPU AES-NI instructions Definition at line 533 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_HW_ACCELERATED (1ULL << 7)Operations are off-loaded to an external hardware accelerator Definition at line 537 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_CPU_AVX512 (1ULL << 8)Utilises CPU SIMD AVX512 instructions Definition at line 539 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_IN_PLACE_SGL (1ULL << 9)In-place Scatter-gather (SGL) buffers, with multiple segments, are supported Definition at line 543 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT (1ULL << 10)Out-of-place Scatter-gather (SGL) buffers are supported in input and output Definition at line 547 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT (1ULL << 11)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 552 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT (1ULL << 12)Out-of-place Scatter-gather (SGL) buffers are supported in output, combined with linear buffers (LB) in input Definition at line 556 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT (1ULL << 13)Out-of-place linear buffers (LB) are supported in input and output Definition at line 558 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_CPU_NEON (1ULL << 14)Utilises CPU NEON instructions Definition at line 560 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_CPU_ARM_CE (1ULL << 15)Utilises ARM CPU Cryptographic Extensions Definition at line 562 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_SECURITY (1ULL << 16)Support Security Protocol Processing Definition at line 564 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_EXP (1ULL << 17)Support RSA Private Key OP with exponent Definition at line 566 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT (1ULL << 18)Support RSA Private Key OP with CRT (quintuple) Keys Definition at line 568 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_DIGEST_ENCRYPTED (1ULL << 19)Support encrypted-digest operations where digest is appended to data Definition at line 570 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_ASYM_SESSIONLESS (1ULL << 20)Support asymmetric session-less operations Definition at line 572 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_SYM_CPU_CRYPTO (1ULL << 21)Support symmetric cpu-crypto processing Definition at line 574 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_SYM_SESSIONLESS (1ULL << 22)Support symmetric session-less operations Definition at line 576 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA (1ULL << 23)Support operations on data which is not byte aligned Definition at line 578 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_SYM_RAW_DP (1ULL << 24)Support accelerator specific symmetric raw data-path APIs Definition at line 580 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_CIPHER_MULTIPLE_DATA_UNITS (1ULL << 25)Support operations on multiple data-units message Definition at line 582 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_CIPHER_WRAPPED_KEY (1ULL << 26)Support wrapped key in cipher xform Definition at line 584 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_SECURITY_INNER_CSUM (1ULL << 27)Support inner checksum computation/verification Definition at line 586 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_SECURITY_RX_INJECT (1ULL << 28)Support Rx injection after security processing Definition at line 588 of file rte_cryptodev.h. #define RTE_CRYPTODEV_FF_MLDSA_SIGN_PREHASH (1ULL << 29)Support Pre Hash ML-DSA Signature Generation Definition at line 590 of file rte_cryptodev.h. #define RTE_CRYPTODEV_QP_PRIORITY_HIGHEST 0Highest priority of a cryptodev queue pair See also rte_cryptodev_queue_pair_setup(),
rte_cryptodev_enqueue_burst()
Definition at line 649 of file rte_cryptodev.h. #define RTE_CRYPTODEV_QP_PRIORITY_NORMAL 128Normal priority of a cryptodev queue pair See also rte_cryptodev_queue_pair_setup(),
rte_cryptodev_enqueue_burst()
Definition at line 653 of file rte_cryptodev.h. #define RTE_CRYPTODEV_QP_PRIORITY_LOWEST 255Lowest priority of a cryptodev queue pair See also rte_cryptodev_queue_pair_setup(),
rte_cryptodev_enqueue_burst()
Definition at line 657 of file rte_cryptodev.h. #define RTE_CRYPTODEV_NAME_MAX_LEN (64)Max length of name of crypto PMD Definition at line 727 of file rte_cryptodev.h. Typedef Documentationtypedef uint16_t(* rte_cryptodev_callback_fn) (uint16_t dev_id, uint16_t qp_id, struct rte_crypto_op **ops, uint16_t nb_ops, void *user_param)Function type used for processing crypto ops when enqueue/dequeue burst is called. The callback function is called on enqueue/dequeue burst immediately. Parameters dev_id The identifier of the device.
qp_id The index of the queue pair on which ops are enqueued/dequeued. The value must be in the range [0, nb_queue_pairs - 1] previously supplied to rte_cryptodev_configure. ops The address of an array of nb_ops pointers to rte_crypto_op structures which contain the crypto operations to be processed. nb_ops The number of operations to process. user_param The arbitrary user parameter passed in by the application when the callback was originally registered. Returns The number of ops to be enqueued to the crypto
device.
Definition at line 697 of file rte_cryptodev.h. typedef void(* rte_cryptodev_cb_fn) (uint8_t dev_id, enum rte_cryptodev_event_type event, void *cb_arg)Typedef for application callback function to be registered by application software for notification of device events Parameters dev_id Crypto device identifier
event Crypto device event to register for notification of. cb_arg User specified parameter to be passed as to passed to users callback function. Definition at line 709 of file rte_cryptodev.h. typedef uint32_t(* cryptodev_sym_raw_enqueue_burst_t) (void *qp, uint8_t *drv_ctx, struct rte_crypto_sym_vec *vec, union rte_crypto_sym_ofs ofs, void *user_data[], int *enqueue_status)Enqueue a vectorized operation descriptor into the device queue but the driver may or may not start processing until rte_cryptodev_raw_enqueue_done() is called. Parameters qp Driver specific queue pair data.
drv_ctx Driver specific context data. vec Vectorized operation descriptor. ofs Start and stop offsets for auth and cipher operations. user_data The array of user data for dequeue later. enqueue_status Driver written value to specify the enqueue status. Possible values:
Returns
Definition at line 1452 of file rte_cryptodev.h. typedef int(* cryptodev_sym_raw_enqueue_t) (void *qp, uint8_t *drv_ctx, struct rte_crypto_vec *data_vec, uint16_t n_data_vecs, union rte_crypto_sym_ofs ofs, struct rte_crypto_va_iova_ptr *iv, struct rte_crypto_va_iova_ptr *digest, struct rte_crypto_va_iova_ptr *aad_or_auth_iv, void *user_data)Enqueue single raw data vector into the device queue but the driver may or may not start processing until rte_cryptodev_raw_enqueue_done() is called. Parameters qp Driver specific queue pair data.
drv_ctx Driver specific context data. data_vec The buffer data vector. n_data_vecs Number of buffer data vectors. ofs Start and stop offsets for auth and cipher operations. iv IV virtual and IOVA addresses digest digest virtual and IOVA addresses aad_or_auth_iv AAD or auth IV virtual and IOVA addresses, depends on the algorithm used. user_data The user data. Returns
Definition at line 1477 of file rte_cryptodev.h. typedef int(* cryptodev_sym_raw_operation_done_t) (void *qp, uint8_t *drv_ctx, uint32_t n)Inform the cryptodev queue pair to start processing or finish dequeuing all enqueued/dequeued operations. Parameters qp Driver specific queue pair data.
drv_ctx Driver specific context data. n The total number of processed operations. Returns
Definition at line 1496 of file rte_cryptodev.h. typedef uint32_t(* rte_cryptodev_raw_get_dequeue_count_t) (void *user_data)Typedef that the user provided for the driver to get the dequeue count. The function may return a fixed number or the number parsed from the user data stored in the first processed operation. Parameters user_data Dequeued user data.
Returns
Definition at line 1508 of file rte_cryptodev.h. typedef void(* rte_cryptodev_raw_post_dequeue_t) (void *user_data, uint32_t index, uint8_t is_op_success)Typedef that the user provided to deal with post dequeue operation, such as filling status. Parameters user_data Dequeued user data.
index Index number of the processed descriptor. is_op_success Operation status provided by the driver. Definition at line 1518 of file rte_cryptodev.h. typedef uint32_t(* cryptodev_sym_raw_dequeue_burst_t) (void *qp, uint8_t *drv_ctx, rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count, uint32_t max_nb_to_dequeue, rte_cryptodev_raw_post_dequeue_t post_dequeue, void **out_user_data, uint8_t is_user_data_array, uint32_t *n_success, int *dequeue_status)Dequeue a burst of symmetric crypto processing. Parameters qp Driver specific queue pair data.
drv_ctx Driver specific context data. get_dequeue_count User provided callback function to obtain dequeue operation count. max_nb_to_dequeue When get_dequeue_count is NULL this value is used to pass the maximum number of operations to be dequeued. post_dequeue User provided callback function to post-process a dequeued operation. out_user_data User data pointer array to be retrieve from device queue. In case of is_user_data_array is set there should be enough room to store all user data. is_user_data_array Set 1 if every dequeued user data will be written into out_user_data array. Set 0 if only the first user data will be written into out_user_data array. n_success Driver written value to specific the total successful operations count. dequeue_status Driver written value to specify the dequeue status. Possible values:
Returns
Definition at line 1562 of file rte_cryptodev.h. typedef void *(* cryptodev_sym_raw_dequeue_t) (void *qp, uint8_t *drv_ctx, int *dequeue_status, enum rte_crypto_op_status *op_status)Dequeue a symmetric crypto processing. Parameters qp Driver specific queue pair data.
drv_ctx Driver specific context data. dequeue_status Driver written value to specify the dequeue status. Possible values:
op_status Driver written value to specify operation status. Returns
Definition at line 1593 of file rte_cryptodev.h. Enumeration Type Documentationenum rte_cryptodev_event_typeDefinitions of Crypto device event types Enumerator
Definition at line 639 of file rte_cryptodev.h. Function Documentationconst struct rte_cryptodev_symmetric_capability * rte_cryptodev_sym_capability_get (uint8_t dev_id, const struct rte_cryptodev_sym_capability_idx * idx)Provide capabilities available for defined device and algorithm Parameters dev_id The identifier of the device.
idx Description of crypto algorithms. Returns
const struct rte_cryptodev_asymmetric_xform_capability * rte_cryptodev_asym_capability_get (uint8_t dev_id, const struct rte_cryptodev_asym_capability_idx * idx)Provide capabilities available for defined device and xform Parameters dev_id The identifier of the device.
idx Description of asym crypto xform. Returns
int rte_cryptodev_sym_capability_check_cipher (const struct rte_cryptodev_symmetric_capability * capability, uint16_t key_size, uint16_t iv_size)Check if key size and initial vector are supported in crypto cipher capability Parameters capability Description of the symmetric crypto
capability.
key_size Cipher key size. iv_size Cipher initial vector size. Returns
int rte_cryptodev_sym_capability_check_auth (const struct rte_cryptodev_symmetric_capability * capability, uint16_t key_size, uint16_t digest_size, uint16_t iv_size)Check if key size and initial vector are supported in crypto auth capability Parameters capability Description of the symmetric crypto
capability.
key_size Auth key size. digest_size Auth digest size. iv_size Auth initial vector size. Returns
int rte_cryptodev_sym_capability_check_aead (const struct rte_cryptodev_symmetric_capability * capability, uint16_t key_size, uint16_t digest_size, uint16_t aad_size, uint16_t iv_size)Check if key, digest, AAD and initial vector sizes are supported in crypto AEAD capability Parameters capability Description of the symmetric crypto
capability.
key_size AEAD key size. digest_size AEAD digest size. aad_size AEAD AAD size. iv_size AEAD IV size. Returns
int rte_cryptodev_asym_xform_capability_check_optype (const struct rte_cryptodev_asymmetric_xform_capability * capability, enum rte_crypto_asym_op_type op_type)Check if op type is supported Parameters capability Description of the asymmetric crypto
capability.
op_type op type Returns
int rte_cryptodev_asym_xform_capability_check_modlen (const struct rte_cryptodev_asymmetric_xform_capability * capability, uint16_t modlen)Check if modulus length is in supported range Parameters capability Description of the asymmetric crypto
capability.
modlen modulus length. Returns
bool rte_cryptodev_asym_xform_capability_check_hash (const struct rte_cryptodev_asymmetric_xform_capability * capability, enum rte_crypto_auth_algorithm hash)Check if hash algorithm is supported. Parameters capability Asymmetric crypto capability.
hash Hash algorithm. Returns
__rte_experimental int rte_cryptodev_asym_xform_capability_check_opcap (const struct rte_cryptodev_asymmetric_xform_capability * capability, enum rte_crypto_asym_op_type op_type, uint8_t cap)Warning EXPERIMENTAL: this API may change without prior
notice.
Check if op capability is supported Parameters capability Description of the asymmetric crypto
capability.
op_type op type cap op capability Returns
int rte_cryptodev_get_cipher_algo_enum (enum rte_crypto_cipher_algorithm * algo_enum, const char * algo_string)Provide the cipher algorithm enum, given an algorithm string Parameters algo_enum A pointer to the cipher algorithm enum
to be filled
algo_string Authentication algo string Returns
int rte_cryptodev_get_auth_algo_enum (enum rte_crypto_auth_algorithm * algo_enum, const char * algo_string)Provide the authentication algorithm enum, given an algorithm string Parameters algo_enum A pointer to the authentication
algorithm enum to be filled
algo_string Authentication algo string Returns
int rte_cryptodev_get_aead_algo_enum (enum rte_crypto_aead_algorithm * algo_enum, const char * algo_string)Provide the AEAD algorithm enum, given an algorithm string Parameters algo_enum A pointer to the AEAD algorithm enum to
be filled
algo_string AEAD algorithm string Returns
int rte_cryptodev_asym_get_xform_enum (enum rte_crypto_asym_xform_type * xform_enum, const char * xform_string)Provide the Asymmetric xform enum, given an xform string Parameters xform_enum A pointer to the xform type enum to be
filled
xform_string xform string Returns
__rte_experimental const char * rte_cryptodev_get_cipher_algo_string (enum rte_crypto_cipher_algorithm algo_enum)Provide the cipher algorithm string, given an algorithm enum. Parameters algo_enum cipher algorithm enum
Returns
__rte_experimental const char * rte_cryptodev_get_auth_algo_string (enum rte_crypto_auth_algorithm algo_enum)Provide the authentication algorithm string, given an algorithm enum. Parameters algo_enum auth algorithm enum
Returns
__rte_experimental const char * rte_cryptodev_get_aead_algo_string (enum rte_crypto_aead_algorithm algo_enum)Provide the AEAD algorithm string, given an algorithm enum. Parameters algo_enum AEAD algorithm enum
Returns
__rte_experimental const char * rte_cryptodev_asym_get_xform_string (enum rte_crypto_asym_xform_type xform_enum)Provide the Asymmetric xform string, given an xform enum. Parameters xform_enum xform type enum
Returns
const char * rte_cryptodev_get_feature_name (uint64_t flag)Get the name of a crypto device 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.
int rte_cryptodev_get_dev_id (const char * name)Get the device identifier for the named crypto device. Parameters name device name to select the device
structure.
Returns
const char * rte_cryptodev_name_get (uint8_t dev_id)Get the crypto device name given a device identifier. Parameters dev_id The identifier of the device
Returns
uint8_t rte_cryptodev_count (void)Get the total number of crypto devices that have been successfully initialised. Returns
uint8_t rte_cryptodev_device_count_by_driver (uint8_t driver_id)Get number of crypto device defined type. Parameters driver_id driver identifier.
Returns Returns number of crypto device.
uint8_t rte_cryptodev_devices_get (const char * driver_name, uint8_t * devices, uint8_t nb_devices)Get number and identifiers of attached crypto devices that use the same crypto driver. Parameters driver_name driver name.
devices output devices identifiers. nb_devices maximal number of devices. Returns Returns number of attached crypto device.
int rte_cryptodev_configure (uint8_t dev_id, struct rte_cryptodev_config * config)Configure a device. This function must be invoked first before any other function in the API. This function can also be re-invoked when a device is in the stopped state. Parameters dev_id The identifier of the device to configure.
config The crypto device configuration structure. Returns
int rte_cryptodev_start (uint8_t dev_id)Start an device. The device start step is the last one and consists of setting the configured offload features and in starting the transmit and the receive units of the device. On success, all basic functions exported by the API (link status, receive/transmit, and so on) can be invoked. Parameters dev_id The identifier of the device.
Returns
void rte_cryptodev_stop (uint8_t dev_id)Stop an device. The device can be restarted with a call to rte_cryptodev_start() Parameters dev_id The identifier of the device.
int rte_cryptodev_close (uint8_t dev_id)Close an device. The device cannot be restarted! Parameters dev_id The identifier of the device.
Returns
int rte_cryptodev_queue_pair_setup (uint8_t dev_id, uint16_t queue_pair_id, const struct rte_cryptodev_qp_conf * qp_conf, int socket_id)Allocate and set up a receive queue pair for a device. Parameters dev_id The identifier of the device.
queue_pair_id The index of the queue pairs to set up. The value must be in the range [0, nb_queue_pair
qp_conf The pointer to the configuration data to be used
for the queue pair.
Returns
__rte_experimental int rte_cryptodev_queue_pair_reset (uint8_t dev_id, uint16_t queue_pair_id, const struct rte_cryptodev_qp_conf * qp_conf, int socket_id)Warning EXPERIMENTAL: this API may change without prior
notice.
Reset a queue pair for a device. The caller of this API must ensure that, there are no enqueues to the queue and there are no pending/inflight packets in the queue when the API is called. The API can reconfigure the queue pair when the queue pair configuration data is provided. Parameters dev_id The identifier of the device.
queue_pair_id The index of the queue pairs to set up. The value must be in the range [0, nb_queue_pair - 1] previously supplied to rte_cryptodev_configure(). qp_conf The pointer to configuration data to be used for the queue pair. It should be NULL, if the API is called from an interrupt context. socket_id The socket_id argument is the socket identifier in case of NUMA. The value can be SOCKET_ID_ANY if there is no NUMA constraint for the DMA memory allocated for the queue pair. Returns
int rte_cryptodev_get_qp_status (uint8_t dev_id, uint16_t queue_pair_id)Get the status of queue pairs setup on a specific crypto device Parameters dev_id Crypto device identifier.
queue_pair_id The index of the queue pairs to set up. The value must be in the range [0, nb_queue_pair
Returns
uint16_t rte_cryptodev_queue_pair_count (uint8_t dev_id)Get the number of queue pairs on a specific crypto device Parameters dev_id Crypto device identifier.
Returns
int rte_cryptodev_stats_get (uint8_t dev_id, struct rte_cryptodev_stats * stats)Retrieve the general I/O statistics of a device. Parameters dev_id The identifier of the device.
stats A pointer to a structure of type rte_cryptodev_stats to be filled with the values of device counters. Returns
void rte_cryptodev_stats_reset (uint8_t dev_id)Reset the general I/O statistics of a device. Parameters dev_id The identifier of the device.
void rte_cryptodev_info_get (uint8_t dev_id, struct rte_cryptodev_info * dev_info)Retrieve the contextual information of a device. Parameters dev_id The identifier of the device.
dev_info A pointer to a structure of type rte_cryptodev_info to be filled with the contextual information of the device. Note The capabilities field of dev_info is set to point to the
first element of an array of struct rte_cryptodev_capabilities. The
element after the last valid element has it's op field set to
RTE_CRYPTO_OP_TYPE_UNDEFINED.
int rte_cryptodev_callback_register (uint8_t dev_id, enum rte_cryptodev_event_type event, rte_cryptodev_cb_fn cb_fn, void * cb_arg)Register a callback function for specific device id. Parameters dev_id Device id.
event Event interested. cb_fn User supplied callback function to be called. cb_arg Pointer to the parameters for the registered callback. Returns
int rte_cryptodev_callback_unregister (uint8_t dev_id, enum rte_cryptodev_event_type event, rte_cryptodev_cb_fn cb_fn, void * cb_arg)Unregister a callback function for specific device id. Parameters dev_id The device identifier.
event Event interested. cb_fn User supplied callback function to be called. cb_arg Pointer to the parameters for the registered callback. Returns
__rte_experimental int rte_cryptodev_queue_pair_event_error_query (uint8_t dev_id, uint16_t qp_id)Warning EXPERIMENTAL: this API may change without prior
notice.
Query a cryptodev queue pair if there are pending RTE_CRYPTODEV_EVENT_ERROR events. Parameters dev_id The device identifier.
qp_id Queue pair index to be queried. Returns
RTE_TAILQ_HEAD (rte_cryptodev_cb_list, rte_cryptodev_callback)Structure to keep track of registered callbacks void * rte_cryptodev_get_sec_ctx (uint8_t dev_id)Get the security context for the cryptodev. Parameters dev_id The device identifier.
Returns
struct rte_mempool * rte_cryptodev_sym_session_pool_create (const char * name, uint32_t nb_elts, uint32_t elt_size, uint32_t cache_size, uint16_t priv_size, int socket_id)Create a symmetric session mempool. Parameters name The unique mempool name.
nb_elts The number of elements in the mempool. elt_size The size of the element. This should be the size of the cryptodev PMD session private data obtained through rte_cryptodev_sym_get_private_session_size() function call. For the user who wants to use the same mempool for heterogeneous PMDs this value should be the maximum value of their private session sizes. Please note the created mempool will have bigger elt size than this value as necessary session header and the possible padding are filled into each elt. cache_size The number of per-lcore cache elements priv_size The private data size of each session. socket_id The socket_id argument is the socket identifier in the case of NUMA. The value can be SOCKET_ID_ANY if there is no NUMA constraint for the reserved zone. Returns
struct rte_mempool * rte_cryptodev_asym_session_pool_create (const char * name, uint32_t nb_elts, uint32_t cache_size, uint16_t user_data_size, int socket_id)Create an asymmetric session mempool. Parameters name The unique mempool name.
nb_elts The number of elements in the mempool. cache_size The number of per-lcore cache elements user_data_size The size of user data to be placed after session private data. socket_id The socket_id argument is the socket identifier in the case of NUMA. The value can be SOCKET_ID_ANY if there is no NUMA constraint for the reserved zone. Returns
void * rte_cryptodev_sym_session_create (uint8_t dev_id, struct rte_crypto_sym_xform * xforms, struct rte_mempool * mp)Create symmetric crypto session and fill out private data for the device id, based on its device type. Parameters dev_id ID of device that we want the session to be
used on
xforms Symmetric crypto transform operations to apply on flow processed with this session mp Mempool to allocate symmetric session objects from Returns
int rte_cryptodev_asym_session_create (uint8_t dev_id, struct rte_crypto_asym_xform * xforms, struct rte_mempool * mp, void ** session)Create and initialise an asymmetric crypto session structure. Calls the PMD to configure the private session data. Parameters dev_id ID of device that we want the session to be
used on
xforms Asymmetric crypto transform operations to apply on flow processed with this session mp mempool to allocate asymmetric session objects from session void ** for session to be used Returns
int rte_cryptodev_sym_session_free (uint8_t dev_id, void * sess)Frees session for the device id and returning it to its mempool. It is the application's responsibility to ensure that the session is not still in-flight operations using it. Parameters dev_id ID of device that uses the session.
sess Session header to be freed. Returns
int rte_cryptodev_asym_session_free (uint8_t dev_id, void * sess)Clears and frees asymmetric crypto session header and private data, returning it to its original mempool. Parameters dev_id ID of device that uses the asymmetric
session.
sess Session header to be freed. Returns
unsigned int rte_cryptodev_asym_get_header_session_size (void)Get the size of the asymmetric session header. Returns Size of the asymmetric header session.
unsigned int rte_cryptodev_sym_get_private_session_size (uint8_t dev_id)Get the size of the private symmetric session data for a device. Parameters dev_id The device identifier.
Returns
unsigned int rte_cryptodev_asym_get_private_session_size (uint8_t dev_id)Get the size of the private data for asymmetric session on device Parameters dev_id The device identifier.
Returns
unsigned int rte_cryptodev_is_valid_dev (uint8_t dev_id)Validate if the crypto device index is valid attached crypto device. Parameters dev_id Crypto device index.
Returns
int rte_cryptodev_driver_id_get (const char * name)Provide driver identifier. Parameters name The pointer to a driver name.
Returns The driver type identifier or -1 if no driver found
const char * rte_cryptodev_driver_name_get (uint8_t driver_id)Provide driver name. Parameters driver_id The driver identifier.
Returns The driver name or null if no driver found
int rte_cryptodev_sym_session_set_user_data (void * sess, void * data, uint16_t size)Store user data in a session. Parameters sess Session pointer allocated by
rte_cryptodev_sym_session_create.
data Pointer to the user data. size Size of the user data. Returns
static uint64_t rte_cryptodev_sym_session_opaque_data_get (void * sess) [inline], [static]Get opaque data from session handle Definition at line 1310 of file rte_cryptodev.h. static void rte_cryptodev_sym_session_opaque_data_set (void * sess, uint64_t opaque) [inline], [static]Set opaque data in session handle Definition at line 1319 of file rte_cryptodev.h. void * rte_cryptodev_sym_session_get_user_data (void * sess)Get user data stored in a session. Parameters sess Session pointer allocated by
rte_cryptodev_sym_session_create.
Returns
int rte_cryptodev_asym_session_set_user_data (void * sess, void * data, uint16_t size)Store user data in an asymmetric session. Parameters sess Session pointer allocated by
rte_cryptodev_asym_session_create.
data Pointer to the user data. size Size of the user data. Returns
void * rte_cryptodev_asym_session_get_user_data (void * sess)Get user data stored in an asymmetric session. Parameters sess Session pointer allocated by
rte_cryptodev_asym_session_create.
Returns
uint32_t rte_cryptodev_sym_cpu_crypto_process (uint8_t dev_id, void * sess, union rte_crypto_sym_ofs ofs, struct rte_crypto_sym_vec * vec)Perform actual crypto processing (encrypt/digest or auth/decrypt) on user provided data. Parameters dev_id The device identifier.
sess Cryptodev session structure ofs Start and stop offsets for auth and cipher operations vec Vectorized operation descriptor Returns
int rte_cryptodev_get_raw_dp_ctx_size (uint8_t dev_id)Get the size of the raw data-path context buffer. Parameters dev_id The device identifier.
Returns
int rte_cryptodev_session_event_mdata_set (uint8_t dev_id, void * sess, enum rte_crypto_op_type op_type, enum rte_crypto_op_sess_type sess_type, void * ev_mdata, uint16_t size)Set session event meta data Parameters dev_id The device identifier.
sess Crypto or security session. op_type Operation type. sess_type Session type. ev_mdata Pointer to the event crypto meta data (aka union rte_event_crypto_metadata) size Size of ev_mdata. Returns
int rte_cryptodev_configure_raw_dp_ctx (uint8_t dev_id, uint16_t qp_id, struct rte_crypto_raw_dp_ctx * ctx, enum rte_crypto_op_sess_type sess_type, union rte_cryptodev_session_ctx session_ctx, uint8_t is_update)Configure raw data-path context data. Parameters dev_id The device identifier.
qp_id The index of the queue pair from which to retrieve processed packets. The value must be in the range [0, nb_queue_pair - 1] previously supplied to rte_cryptodev_configure(). ctx The raw data-path context data. sess_type Session type. session_ctx Session context data. is_update Set 0 if it is to initialize the ctx. Set 1 if ctx is initialized and only to update session context data. Returns
uint32_t rte_cryptodev_raw_enqueue_burst (struct rte_crypto_raw_dp_ctx * ctx, struct rte_crypto_sym_vec * vec, union rte_crypto_sym_ofs ofs, void ** user_data, int * enqueue_status)Enqueue a vectorized operation descriptor into the device queue but the driver may or may not start processing until rte_cryptodev_raw_enqueue_done() is called. Parameters ctx The initialized raw data-path context data.
vec Vectorized operation descriptor. ofs Start and stop offsets for auth and cipher operations. user_data The array of user data for dequeue later. enqueue_status Driver written value to specify the enqueue status. Possible values:
Returns
static __rte_experimental __rte_always_inline int rte_cryptodev_raw_enqueue (struct rte_crypto_raw_dp_ctx * ctx, struct rte_crypto_vec * data_vec, uint16_t n_data_vecs, union rte_crypto_sym_ofs ofs, struct rte_crypto_va_iova_ptr * iv, struct rte_crypto_va_iova_ptr * digest, struct rte_crypto_va_iova_ptr * aad_or_auth_iv, void * user_data) [static]Enqueue single raw data vector into the device queue but the driver may or may not start processing until rte_cryptodev_raw_enqueue_done() is called. Parameters ctx The initialized raw data-path context data.
data_vec The buffer data vector. n_data_vecs Number of buffer data vectors. ofs Start and stop offsets for auth and cipher operations. iv IV virtual and IOVA addresses digest digest virtual and IOVA addresses aad_or_auth_iv AAD or auth IV virtual and IOVA addresses, depends on the algorithm used. user_data The user data. Returns
Definition at line 1695 of file rte_cryptodev.h. int rte_cryptodev_raw_enqueue_done (struct rte_crypto_raw_dp_ctx * ctx, uint32_t n)Start processing all enqueued operations from last rte_cryptodev_configure_raw_dp_ctx() call. Parameters ctx The initialized raw data-path context data.
n The number of operations cached. Returns
uint32_t rte_cryptodev_raw_dequeue_burst (struct rte_crypto_raw_dp_ctx * ctx, rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count, uint32_t max_nb_to_dequeue, rte_cryptodev_raw_post_dequeue_t post_dequeue, void ** out_user_data, uint8_t is_user_data_array, uint32_t * n_success, int * dequeue_status)Dequeue a burst of symmetric crypto processing. Parameters ctx The initialized raw data-path context data.
get_dequeue_count User provided callback function to obtain dequeue operation count. max_nb_to_dequeue When get_dequeue_count is NULL this value is used to pass the maximum number of operations to be dequeued. post_dequeue User provided callback function to post-process a dequeued operation. out_user_data User data pointer array to be retrieve from device queue. In case of is_user_data_array is set there should be enough room to store all user data. is_user_data_array Set 1 if every dequeued user data will be written into out_user_data array. Set 0 if only the first user data will be written into out_user_data array. n_success Driver written value to specific the total successful operations count. dequeue_status Driver written value to specify the dequeue status. Possible values:
Returns
static __rte_experimental __rte_always_inline void * rte_cryptodev_raw_dequeue (struct rte_crypto_raw_dp_ctx * ctx, int * dequeue_status, enum rte_crypto_op_status * op_status) [static]Dequeue a symmetric crypto processing. Parameters ctx The initialized raw data-path context data.
dequeue_status Driver written value to specify the dequeue status. Possible values:
op_status Driver written value to specify operation status. Returns
Definition at line 1795 of file rte_cryptodev.h. int rte_cryptodev_raw_dequeue_done (struct rte_crypto_raw_dp_ctx * ctx, uint32_t n)Inform the queue pair dequeue operations is finished. Parameters ctx The initialized raw data-path context data.
n The number of operations. Returns
struct rte_cryptodev_cb * rte_cryptodev_add_enq_callback (uint8_t dev_id, uint16_t qp_id, rte_cryptodev_callback_fn cb_fn, void * cb_arg)Add a user callback for a given crypto device and queue pair which will be called on crypto ops enqueue. This API configures a function to be called for each burst of crypto ops received on a given crypto device queue pair. The return value is a pointer that can be used later to remove the callback using rte_cryptodev_remove_enq_callback(). Callbacks registered by application would not survive rte_cryptodev_configure() as it reinitializes the callback list. It is user responsibility to remove all installed callbacks before calling rte_cryptodev_configure() to avoid possible memory leakage. Application is expected to call add API after rte_cryptodev_configure(). Multiple functions can be registered per queue pair & they are called in the order they were added. The API does not restrict on maximum number of callbacks. Parameters dev_id The identifier of the device.
qp_id The index of the queue pair on which ops are to be enqueued for processing. The value must be in the range [0, nb_queue_pairs - 1] previously supplied to rte_cryptodev_configure. cb_fn The callback function cb_arg A generic pointer parameter which will be passed to each invocation of the callback function on this crypto device and queue pair. Returns
int rte_cryptodev_remove_enq_callback (uint8_t dev_id, uint16_t qp_id, struct rte_cryptodev_cb * cb)Remove a user callback function for given crypto device and queue pair. This function is used to remove enqueue callbacks that were added to a crypto device queue pair using rte_cryptodev_add_enq_callback(). Parameters dev_id The identifier of the device.
qp_id The index of the queue pair on which ops are to be enqueued. The value must be in the range [0, nb_queue_pairs - 1] previously supplied to rte_cryptodev_configure. cb Pointer to user supplied callback created via rte_cryptodev_add_enq_callback(). Returns
struct rte_cryptodev_cb * rte_cryptodev_add_deq_callback (uint8_t dev_id, uint16_t qp_id, rte_cryptodev_callback_fn cb_fn, void * cb_arg)Add a user callback for a given crypto device and queue pair which will be called on crypto ops dequeue. This API configures a function to be called for each burst of crypto ops received on a given crypto device queue pair. The return value is a pointer that can be used later to remove the callback using rte_cryptodev_remove_deq_callback(). Callbacks registered by application would not survive rte_cryptodev_configure() as it reinitializes the callback list. It is user responsibility to remove all installed callbacks before calling rte_cryptodev_configure() to avoid possible memory leakage. Application is expected to call add API after rte_cryptodev_configure(). Multiple functions can be registered per queue pair & they are called in the order they were added. The API does not restrict on maximum number of callbacks. Parameters dev_id The identifier of the device.
qp_id The index of the queue pair on which ops are to be dequeued. The value must be in the range [0, nb_queue_pairs - 1] previously supplied to rte_cryptodev_configure. cb_fn The callback function cb_arg A generic pointer parameter which will be passed to each invocation of the callback function on this crypto device and queue pair. Returns
int rte_cryptodev_remove_deq_callback (uint8_t dev_id, uint16_t qp_id, struct rte_cryptodev_cb * cb)Remove a user callback function for given crypto device and queue pair. This function is used to remove dequeue callbacks that were added to a crypto device queue pair using rte_cryptodev_add_deq_callback(). Parameters dev_id The identifier of the device.
qp_id The index of the queue pair on which ops are to be dequeued. The value must be in the range [0, nb_queue_pairs - 1] previously supplied to rte_cryptodev_configure. cb Pointer to user supplied callback created via rte_cryptodev_add_deq_callback(). Returns
static uint16_t rte_cryptodev_dequeue_burst (uint8_t dev_id, uint16_t qp_id, struct rte_crypto_op ** ops, uint16_t nb_ops) [inline], [static]Dequeue a burst of processed crypto operations from a queue on the crypto device. The dequeued operation are stored in rte_crypto_op structures whose pointers are supplied in the ops array. The rte_cryptodev_dequeue_burst() function returns the number of ops actually dequeued, which is the number of rte_crypto_op data structures effectively supplied into the ops array. A return value equal to nb_ops indicates that the queue contained at least nb_ops operations, and this is likely to signify that other processed operations remain in the devices output queue. Applications implementing a 'retrieve as many processed operations as possible' policy can check this specific case and keep invoking the rte_cryptodev_dequeue_burst() function until a value less than nb_ops is returned. The rte_cryptodev_dequeue_burst() function does not provide any error notification to avoid the corresponding overhead. Parameters dev_id The symmetric crypto device identifier
qp_id The index of the queue pair from which to retrieve processed packets. The value must be in the range [0, nb_queue_pair - 1] previously supplied to rte_cryptodev_configure(). ops The address of an array of pointers to rte_crypto_op structures that must be large enough to store nb_ops pointers in it. nb_ops The maximum number of operations to dequeue. Returns
Definition at line 1992 of file rte_cryptodev.h. static uint16_t rte_cryptodev_enqueue_burst (uint8_t dev_id, uint16_t qp_id, struct rte_crypto_op ** ops, uint16_t nb_ops) [inline], [static]Enqueue a burst of operations for processing on a crypto device. The rte_cryptodev_enqueue_burst() function is invoked to place crypto operations on the queue qp_id of the device designated by its dev_id. The nb_ops parameter is the number of operations to process which are supplied in the ops array of rte_crypto_op structures. The rte_cryptodev_enqueue_burst() function returns the number of operations it actually enqueued for processing. A return value equal to nb_ops means that all packets have been enqueued. Parameters dev_id The identifier of the device.
qp_id The index of the queue pair which packets are to be enqueued for processing. The value must be in the range [0, nb_queue_pairs - 1] previously supplied to rte_cryptodev_configure. ops The address of an array of nb_ops pointers to rte_crypto_op structures which contain the crypto operations to be processed. nb_ops The number of operations to process. Returns The number of operations actually enqueued on the crypto
device. The return value can be less than the value of the nb_ops
parameter when the crypto devices queue is full or if invalid parameters are
specified in a rte_crypto_op.
Definition at line 2064 of file rte_cryptodev.h. static __rte_experimental int rte_cryptodev_qp_depth_used (uint8_t dev_id, uint16_t qp_id) [inline], [static]Warning EXPERIMENTAL: this API may change, or be removed,
without prior notice
Get the number of used descriptors or depth of a cryptodev queue pair. This function retrieves the number of used descriptors in a crypto queue. Applications can use this API in the fast path to inspect QP occupancy and take appropriate action. Since it is a fast-path function, no check is performed on dev_id and qp_id. Caller must therefore ensure that the device is enabled and queue pair is setup. Parameters dev_id The identifier of the device.
qp_id The index of the queue pair for which used descriptor count is to be retrieved. The value must be in the range [0, nb_queue_pairs - 1] previously supplied to rte_cryptodev_configure. Returns The number of used descriptors on the specified queue
pair, or:
Definition at line 2127 of file rte_cryptodev.h. AuthorGenerated automatically by Doxygen for DPDK from the source code.
|