Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_cryptodev.h(3)		      DPDK		      rte_cryptodev.h(3)

NAME
     rte_cryptodev.h

SYNOPSIS
     #include <rte_compat.h>
     #include 'rte_kvargs.h'
     #include 'rte_crypto.h'
     #include <rte_common.h>
     #include <rte_rcu_qsbr.h>
     #include 'rte_cryptodev_trace_fp.h'
     #include 'rte_cryptodev_core.h'

   Data Structures
     struct rte_crypto_param_range
     struct rte_cryptodev_symmetric_capability
     struct rte_cryptodev_asymmetric_xform_capability
     struct rte_cryptodev_asymmetric_capability
     struct rte_cryptodev_capabilities
     struct rte_cryptodev_sym_capability_idx
     struct rte_cryptodev_asym_capability_idx
     struct rte_cryptodev_info
     struct rte_cryptodev_qp_conf
     struct rte_cryptodev_stats
     struct rte_cryptodev_config
     struct rte_cryptodev_cb
     union rte_cryptodev_session_ctx
     struct rte_crypto_raw_dp_ctx

   Macros
     #define rte_crypto_op_ctod_offset(c,  t,  o)      ((t)((char *)(c) + (o)))
     #define		     rte_crypto_op_ctophys_offset(c,		      o)
	     (rte_iova_t)((c)->phys_addr + (o))
     #define RTE_CRYPTO_CIPHER_DATA_UNIT_LEN_512_BYTES	 RTE_BIT32(0)
     #define	      RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()		       {
	 RTE_CRYPTO_OP_TYPE_UNDEFINED }
     #define RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO	 (1ULL << 0)
     #define RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO   (1ULL << 1)
     #define RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING   (1ULL << 2)
     #define RTE_CRYPTODEV_FF_CPU_SSE	(1ULL << 3)
     #define RTE_CRYPTODEV_FF_CPU_AVX	(1ULL << 4)
     #define RTE_CRYPTODEV_FF_CPU_AVX2	 (1ULL << 5)
     #define RTE_CRYPTODEV_FF_CPU_AESNI   (1ULL << 6)
     #define RTE_CRYPTODEV_FF_HW_ACCELERATED   (1ULL << 7)
     #define RTE_CRYPTODEV_FF_CPU_AVX512   (1ULL << 8)
     #define RTE_CRYPTODEV_FF_IN_PLACE_SGL   (1ULL << 9)
     #define RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT   (1ULL << 10)
     #define RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT   (1ULL << 11)
     #define RTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT   (1ULL << 12)
     #define RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT	 (1ULL << 13)
     #define RTE_CRYPTODEV_FF_CPU_NEON	 (1ULL << 14)
     #define RTE_CRYPTODEV_FF_CPU_ARM_CE   (1ULL << 15)
     #define RTE_CRYPTODEV_FF_SECURITY	 (1ULL << 16)
     #define RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_EXP   (1ULL << 17)
     #define RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT   (1ULL << 18)
     #define RTE_CRYPTODEV_FF_DIGEST_ENCRYPTED	 (1ULL << 19)
     #define RTE_CRYPTODEV_FF_ASYM_SESSIONLESS	 (1ULL << 20)
     #define RTE_CRYPTODEV_FF_SYM_CPU_CRYPTO   (1ULL << 21)
     #define RTE_CRYPTODEV_FF_SYM_SESSIONLESS	(1ULL << 22)
     #define RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA   (1ULL << 23)
     #define RTE_CRYPTODEV_FF_SYM_RAW_DP   (1ULL << 24)
     #define RTE_CRYPTODEV_FF_CIPHER_MULTIPLE_DATA_UNITS   (1ULL << 25)
     #define RTE_CRYPTODEV_FF_CIPHER_WRAPPED_KEY   (1ULL << 26)
     #define RTE_CRYPTODEV_FF_SECURITY_INNER_CSUM   (1ULL << 27)
     #define RTE_CRYPTODEV_FF_SECURITY_RX_INJECT   (1ULL << 28)
     #define RTE_CRYPTODEV_FF_MLDSA_SIGN_PREHASH   (1ULL << 29)
     #define RTE_CRYPTODEV_QP_PRIORITY_HIGHEST	 0
     #define RTE_CRYPTODEV_QP_PRIORITY_NORMAL	128
     #define RTE_CRYPTODEV_QP_PRIORITY_LOWEST	255
     #define RTE_CRYPTODEV_NAME_MAX_LEN   (64)

   Typedefs
     typedef  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)
     typedef  void(*  rte_cryptodev_cb_fn)  (uint8_t  dev_id,	enum   rte_cryp-
	 todev_event_type event, void *cb_arg)
     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)
     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)
     typedef  int(*  cryptodev_sym_raw_operation_done_t)  (void   *qp,	 uint8_t
	 *drv_ctx, uint32_t n)
     typedef uint32_t(* rte_cryptodev_raw_get_dequeue_count_t) (void *user_data)
     typedef void(* rte_cryptodev_raw_post_dequeue_t) (void *user_data, uint32_t
	 index, uint8_t is_op_success)
     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_de-
	 queue,  void  **out_user_data,  uint8_t  is_user_data_array,	uint32_t
	 *n_success, int *dequeue_status)
     typedef  void *(* cryptodev_sym_raw_dequeue_t) (void *qp, uint8_t *drv_ctx,
	 int *dequeue_status, enum rte_crypto_op_status *op_status)

   Enumerations
     enum  rte_cryptodev_event_type  {	RTE_CRYPTODEV_EVENT_UNKNOWN,   RTE_CRYP-
	 TODEV_EVENT_ERROR, RTE_CRYPTODEV_EVENT_MAX }

   Functions
     const  struct  rte_cryptodev_symmetric_capability * rte_cryptodev_sym_capa-
	 bility_get (uint8_t  dev_id,  const  struct  rte_cryptodev_sym_capabil-
	 ity_idx *idx)
     const    struct   rte_cryptodev_asymmetric_xform_capability   *   rte_cryp-
	 todev_asym_capability_get  (uint8_t  dev_id,  const  struct   rte_cryp-
	 todev_asym_capability_idx *idx)
     int   rte_cryptodev_sym_capability_check_cipher   (const  struct  rte_cryp-
	 todev_symmetric_capability  *capability,  uint16_t  key_size,	uint16_t
	 iv_size)
     int   rte_cryptodev_sym_capability_check_auth   (const   struct   rte_cryp-
	 todev_symmetric_capability *capability, uint16_t key_size, uint16_t di-
	 gest_size, uint16_t iv_size)
     int   rte_cryptodev_sym_capability_check_aead   (const   struct   rte_cryp-
	 todev_symmetric_capability *capability, uint16_t key_size, uint16_t di-
	 gest_size, uint16_t aad_size, uint16_t iv_size)
     int    rte_cryptodev_asym_xform_capability_check_optype	(const	  struct
	 rte_cryptodev_asymmetric_xform_capability	 *capability,	    enum
	 rte_crypto_asym_op_type op_type)
     int    rte_cryptodev_asym_xform_capability_check_modlen	(const	  struct
	 rte_cryptodev_asymmetric_xform_capability *capability, uint16_t modlen)
     bool rte_cryptodev_asym_xform_capability_check_hash (const struct rte_cryp-
	 todev_asymmetric_xform_capability *capability, enum rte_crypto_auth_al-
	 gorithm hash)
     __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)
     int  rte_cryptodev_get_cipher_algo_enum  (enum  rte_crypto_cipher_algorithm
	 *algo_enum, const char *algo_string)
     int    rte_cryptodev_get_auth_algo_enum   (enum   rte_crypto_auth_algorithm
	 *algo_enum, const char *algo_string)
     int   rte_cryptodev_get_aead_algo_enum   (enum    rte_crypto_aead_algorithm
	 *algo_enum, const char *algo_string)
     int   rte_cryptodev_asym_get_xform_enum   (enum  rte_crypto_asym_xform_type
	 *xform_enum, const char *xform_string)
     __rte_experimental const char * rte_cryptodev_get_cipher_algo_string  (enum
	 rte_crypto_cipher_algorithm algo_enum)
     __rte_experimental  const	char  * rte_cryptodev_get_auth_algo_string (enum
	 rte_crypto_auth_algorithm algo_enum)
     __rte_experimental const char  *  rte_cryptodev_get_aead_algo_string  (enum
	 rte_crypto_aead_algorithm algo_enum)
     __rte_experimental  const	char * rte_cryptodev_asym_get_xform_string (enum
	 rte_crypto_asym_xform_type xform_enum)
     const char * rte_cryptodev_get_feature_name (uint64_t flag)
     int rte_cryptodev_get_dev_id (const char *name)
     const char * rte_cryptodev_name_get (uint8_t dev_id)
     uint8_t rte_cryptodev_count (void)
     uint8_t rte_cryptodev_device_count_by_driver (uint8_t driver_id)
     uint8_t rte_cryptodev_devices_get (const char  *driver_name,  uint8_t  *de-
	 vices, uint8_t nb_devices)
     int  rte_cryptodev_configure  (uint8_t  dev_id, struct rte_cryptodev_config
	 *config)
     int rte_cryptodev_start (uint8_t dev_id)
     void rte_cryptodev_stop (uint8_t dev_id)
     int rte_cryptodev_close (uint8_t dev_id)
     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)
     __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)
     int rte_cryptodev_get_qp_status (uint8_t dev_id, uint16_t queue_pair_id)
     uint16_t rte_cryptodev_queue_pair_count (uint8_t dev_id)
     int rte_cryptodev_stats_get  (uint8_t  dev_id,  struct  rte_cryptodev_stats
	 *stats)
     void rte_cryptodev_stats_reset (uint8_t dev_id)
     void  rte_cryptodev_info_get  (uint8_t  dev_id,  struct  rte_cryptodev_info
	 *dev_info)
     int  rte_cryptodev_callback_register  (uint8_t   dev_id,	enum   rte_cryp-
	 todev_event_type event, rte_cryptodev_cb_fn cb_fn, void *cb_arg)
     int   rte_cryptodev_callback_unregister  (uint8_t	dev_id,  enum  rte_cryp-
	 todev_event_type event, rte_cryptodev_cb_fn cb_fn, void *cb_arg)
     __rte_experimental int rte_cryptodev_queue_pair_event_error_query	(uint8_t
	 dev_id, uint16_t qp_id)
     RTE_TAILQ_HEAD (rte_cryptodev_cb_list, rte_cryptodev_callback)
     void * rte_cryptodev_get_sec_ctx (uint8_t dev_id)
     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)
     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)
     void    *	  rte_cryptodev_sym_session_create   (uint8_t	dev_id,   struct
	 rte_crypto_sym_xform *xforms, struct rte_mempool *mp)
     int    rte_cryptodev_asym_session_create	 (uint8_t     dev_id,	  struct
	 rte_crypto_asym_xform *xforms, struct rte_mempool *mp, void **session)
     int rte_cryptodev_sym_session_free (uint8_t dev_id, void *sess)
     int rte_cryptodev_asym_session_free (uint8_t dev_id, void *sess)
     unsigned int rte_cryptodev_asym_get_header_session_size (void)
     unsigned int rte_cryptodev_sym_get_private_session_size (uint8_t dev_id)
     unsigned int rte_cryptodev_asym_get_private_session_size (uint8_t dev_id)
     unsigned int rte_cryptodev_is_valid_dev (uint8_t dev_id)
     int rte_cryptodev_driver_id_get (const char *name)
     const char * rte_cryptodev_driver_name_get (uint8_t driver_id)
     int   rte_cryptodev_sym_session_set_user_data   (void  *sess,  void  *data,
	 uint16_t size)
     static uint64_t rte_cryptodev_sym_session_opaque_data_get (void *sess)
     static void rte_cryptodev_sym_session_opaque_data_set (void *sess, uint64_t
	 opaque)
     void * rte_cryptodev_sym_session_get_user_data (void *sess)
     int  rte_cryptodev_asym_session_set_user_data  (void  *sess,  void   *data,
	 uint16_t size)
     void * rte_cryptodev_asym_session_get_user_data (void *sess)
     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)
     int rte_cryptodev_get_raw_dp_ctx_size (uint8_t dev_id)
     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)
     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_up-
	 date)
     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)
     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)
     int   rte_cryptodev_raw_enqueue_done  (struct  rte_crypto_raw_dp_ctx  *ctx,
	 uint32_t n)
     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)
     static  __rte_experimental __rte_always_inline void * rte_cryptodev_raw_de-
	 queue (struct rte_crypto_raw_dp_ctx  *ctx,  int  *dequeue_status,  enum
	 rte_crypto_op_status *op_status)
     int   rte_cryptodev_raw_dequeue_done  (struct  rte_crypto_raw_dp_ctx  *ctx,
	 uint32_t n)
     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)
     int  rte_cryptodev_remove_enq_callback  (uint8_t  dev_id,	uint16_t  qp_id,
	 struct rte_cryptodev_cb *cb)
     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)
     int  rte_cryptodev_remove_deq_callback  (uint8_t  dev_id,	uint16_t  qp_id,
	 struct rte_cryptodev_cb *cb)
     static  uint16_t  rte_cryptodev_dequeue_burst  (uint8_t  dev_id,	uint16_t
	 qp_id, struct rte_crypto_op **ops, uint16_t nb_ops)
     static   uint16_t	rte_cryptodev_enqueue_burst  (uint8_t  dev_id,	uint16_t
	 qp_id, struct rte_crypto_op **ops, uint16_t nb_ops)
     static __rte_experimental int rte_cryptodev_qp_depth_used (uint8_t  dev_id,
	 uint16_t qp_id)

Detailed Description
     RTE Cryptographic Device APIs

     Defines RTE Crypto Device APIs for the provisioning of cipher and authenti-
     cation 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  ad-
	 dress 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() Symmet-
     ric 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 sup-
     ported

     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   0
     Highest 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   128
     Normal 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   255
     Lowest 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 Documentation
   typedef  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  sup-
	 plied to rte_cryptodev_configure.
	 ops  The address of an array of nb_ops pointers to rte_crypto_op struc-
	 tures 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_cryp-
     todev_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_en-
     queue_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. Pos-
	 sible values:

	 * 1: The number of operations returned are enqueued successfully.

	 * 0: The number of operations returned are cached into  the  queue  but
	   are not processed until rte_cryptodev_raw_enqueue_done() is called.

	 * negative integer: Error occurred.

     Returns

	 * The	number	of operations in the descriptor successfully enqueued or
	   cached into the queue but not  enqueued  yet,  depends  on  the  'en-
	   queue_status' value.

     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

	 * 1: The data vector is enqueued successfully.

	 * 0:  The data vector is cached into the queue but is not processed un-
	   til rte_cryptodev_raw_enqueue_done() is called.

	 * negative integer: failure.

     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

	 * On success return 0.

	 * On failure return negative integer.

     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

	 * The number of operations to be dequeued.

     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 *de-
     queue_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 op-
	 eration 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  opera-
	 tions count.
	 dequeue_status Driver written value to specify the dequeue status. Pos-
	 sible values:

	 * 1:  Successfully dequeued the number of operations returned. The user
	   data previously set during enqueue is stored in the 'out_user_data'.

	 * 0: The number of operations returned are completed and the user  data
	   is  stored  in  the	'out_user_data', but they are not freed from the
	   queue until rte_cryptodev_raw_dequeue_done() is called.

	 * negative integer: Error occurred.

     Returns

	 * The number of operations dequeued or completed but not freed from the
	   queue, depends on 'dequeue_status' value.

     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. Pos-
	 sible values:

	 * 1: Successfully dequeued a operation. The user data is returned.

	 * 0:  The  first  operation in the queue is completed and the user data
	   previously set during enqueue is returned, but it is not  freed  from
	   the queue until rte_cryptodev_raw_dequeue_done() is called.

	 * negative integer: Error occurred.

	 op_status Driver written value to specify operation status.

     Returns

	 * The user data pointer retrieved from device queue or NULL if no oper-
	   ation is ready for dequeue.

     Definition at line 1593 of file rte_cryptodev.h.

Enumeration Type Documentation
   enum rte_cryptodev_event_type
     Definitions of Crypto device event types

     Enumerator

     RTE_CRYPTODEV_EVENT_UNKNOWN
	    unknown event type

     RTE_CRYPTODEV_EVENT_ERROR
	    error interrupt event

     RTE_CRYPTODEV_EVENT_MAX
	    max value of this enum

     Definition at line 639 of file rte_cryptodev.h.

Function Documentation
   const  struct rte_cryptodev_symmetric_capability * rte_cryptodev_sym_capabil-
     ity_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

	 * Return description of the symmetric crypto capability if exist.

	 * Return NULL if the capability not exist.

   const    struct    rte_cryptodev_asymmetric_xform_capability    *   rte_cryp-
     todev_asym_capability_get	 (uint8_t   dev_id,   const   struct   rte_cryp-
     todev_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

	 * Return description of the asymmetric crypto capability if exist.

	 * Return NULL if the capability not exist.

   int	 rte_cryptodev_sym_capability_check_cipher   (const   struct   rte_cryp-
     todev_symmetric_capability  *  capability,  uint16_t   key_size,	uint16_t
     iv_size)
     Check  if	key size and initial vector are supported in crypto cipher capa-
     bility

     Parameters
	 capability Description of the symmetric crypto capability.
	 key_size Cipher key size.
	 iv_size Cipher initial vector size.

     Returns

	 * Return 0 if the parameters are in range of the capability.

	 * Return -1 if the parameters are out of range of the capability.

   int rte_cryptodev_sym_capability_check_auth (const struct  rte_cryptodev_sym-
     metric_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	capabil-
     ity

     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

	 * Return 0 if the parameters are in range of the capability.

	 * Return -1 if the parameters are out of range of the capability.

   int	rte_cryptodev_sym_capability_check_aead (const struct rte_cryptodev_sym-
     metric_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

	 * Return 0 if the parameters are in range of the capability.

	 * Return -1 if the parameters are out of range of the capability.

   int rte_cryptodev_asym_xform_capability_check_optype (const struct  rte_cryp-
     todev_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

	 * Return 1 if the op type is supported

	 * Return 0 if unsupported

   int rte_cryptodev_asym_xform_capability_check_modlen (const struct  rte_cryp-
     todev_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

	 * Return 0 if the parameters are in range of the capability.

	 * Return -1 if the parameters are out of range of the capability.

   bool  rte_cryptodev_asym_xform_capability_check_hash  (const struct rte_cryp-
     todev_asymmetric_xform_capability * capability, enum  rte_crypto_auth_algo-
     rithm hash)
     Check if hash algorithm is supported.

     Parameters
	 capability Asymmetric crypto capability.
	 hash Hash algorithm.

     Returns

	 * Return true if the hash algorithm is supported.

	 * Return false if the hash algorithm is not supported.

   __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

	 * Return 1 if the op capability is supported

	 * Return 0 if unsupported

   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

	 * Return -1 if string is not valid

	 * Return 0 is the string is valid

   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

	 * Return -1 if string is not valid

	 * Return 0 is the string is valid

   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

	 * Return -1 if string is not valid

	 * Return 0 is the string is valid

   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

	 * Return -1 if string is not valid

	 * Return 0 if the string is valid

   __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

	 * Return NULL if enum is not valid

	 * Return algo_string corresponding to enum

   __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

	 * Return NULL if enum is not valid

	 * Return algo_string corresponding to enum

   __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

	 * Return NULL if enum is not valid

	 * Return algo_string corresponding to enum

   __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

	 * Return NULL, if enum is not valid.

	 * Return xform string, for valid enum.

   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

	 * Returns crypto device identifier on success.

	 * Return -1 on failure to find named crypto device.

   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

	 * Returns crypto device name.

	 * Returns NULL if crypto device is not present.

   uint8_t rte_cryptodev_count (void)
     Get the total number of crypto devices that  have	been  successfully  ini-
     tialised.

     Returns

	 * The total number of usable crypto devices.

   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 * de-
     vices, 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

	 * 0: Success, device configured.

	 * <0: Error code returned by the driver configuration function.

   int rte_cryptodev_start (uint8_t dev_id)
     Start an device.

     The  device  start step is the last one and consists of setting the config-
     ured offload features and in starting the transmit and the receive units of
     the device. On success, all basic functions exported by the API (link  sta-
     tus, receive/transmit, and so on) can be invoked.

     Parameters
	 dev_id The identifier of the device.

     Returns

	 * 0: Success, device started.

	 * <0: Error code of the driver device start function.

   void rte_cryptodev_stop (uint8_t dev_id)
     Stop  an  device.	The  device  can  be  restarted with a call to rte_cryp-
     todev_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

	 * 0 on successfully closing device

	 * <0 on failure to close device

   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

	 * 1] previously supplied to rte_cryptodev_configure().

	 qp_conf  The pointer to the configuration data to be used for the queue
	 pair.
	 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 receive queue pair.

     Returns

	 * 0: Success, queue pair correctly set up.

	 * <0: Queue pair configuration failed

   __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  pack-
     ets  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_cryp-
	 todev_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  con-
	 text.
	 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

	 * 0: Queue pair is reset successfully.

	 * ENOTSUP: If the operation is not supported by the PMD.

	 * <0: Queue pair reset failed

   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

	 * 1] previously supplied to rte_cryptodev_configure().

     Returns

	 * 0: qp was not configured

	 * 1: qp was configured

	 * -EINVAL: device was not configured

   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

	 * The number of configured queue pairs.

   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

	 * Zero if successful.

	 * Non-zero otherwise.

   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_UNDE-
	 FINED.

   int	 rte_cryptodev_callback_register   (uint8_t   dev_id,	enum   rte_cryp-
     todev_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

	 * On success, zero.

	 * On failure, a negative value.

   int	 rte_cryptodev_callback_unregister   (uint8_t	dev_id,  enum  rte_cryp-
     todev_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

	 * On success, zero.

	 * On failure, a negative value.

   __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

	 * 1 if requested queue has a pending event.

	 * 0 if no pending event is found.

	 * a negative value on failure

   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

	 * NULL on error.

	 * Pointer to security context on success.

   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 cryp-
	 todev	 PMD   session	 private   data   obtained   through   rte_cryp-
	 todev_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

	 * On success returns the created session mempool pointer

	 * On failure returns NULL

   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

	 * On success return mempool

	 * On failure returns NULL

   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

	 * On success return pointer to sym-session.

	 * On failure returns NULL and rte_errno is set to the error code:

	   * EINVAL on invalid arguments.

	   * ENOMEM on memory error for session allocation.

	   * ENOTSUP if device doesn't support session configuration.

   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

	 * 0 on success.

	 * -EINVAL on invalid arguments.

	 * -ENOMEM on memory error for session allocation.

	 * -ENOTSUP if device doesn't support session configuration.

   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

	 * 0 if successful.

	 * -EINVAL if session is NULL or the mismatched device ids.

   int rte_cryptodev_asym_session_free (uint8_t dev_id, void * sess)
     Clears and frees asymmetric crypto session header and private data, return-
     ing it to its original mempool.

     Parameters
	 dev_id ID of device that uses the asymmetric session.
	 sess Session header to be freed.

     Returns

	 * 0 if successful.

	 * -EINVAL if device is invalid or session is NULL.

   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

	 * Size of the private data, if successful

	 * 0 if device is invalid or does not have private symmetric session

   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

	 * Size of the asymmetric private data, if successful

	 * 0 if device is invalid or does not have private session

   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

	 * If the device index is valid (1) or not (0).

   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

	 * On success, zero.

	 * On failure, a negative value.

   static uint64_t rte_cryptodev_sym_session_opaque_data_get (void * sess)  [in-
     line],  [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

	 * On success return pointer to user data.

	 * On failure returns NULL.

   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

	 * On success, zero.

	 * -EINVAL if the session pointer is invalid.

	 * -ENOMEM  if the available user data size is smaller than the size pa-
	   rameter.

   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

	 * On success return pointer to user data.

	 * On failure returns NULL.

   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

	 * Returns number of successfully processed packets.

   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

	 * If the device supports raw data-path APIs, return the context size.

	 * If the device does not support the APIs, return -1.

   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

	 * On success, zero.

	 * On failure, a negative value.

   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] previ-
	 ously 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  ini-
	 tialized and only to update session context data.

     Returns

	 * On success return 0.

	 * On failure return negative integer.

	   * -EINVAL if input parameters are invalid.

	   * -ENOTSUP  if  crypto device does not support raw DP operations with
	     the provided session.

   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_en-
     queue_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. Pos-
	 sible values:

	 * 1: The number of operations returned are enqueued successfully.

	 * 0:  The  number  of operations returned are cached into the queue but
	   are not processed until rte_cryptodev_raw_enqueue_done() is called.

	 * negative integer: Error occurred.

     Returns

	 * The number of operations in the descriptor successfully  enqueued  or
	   cached  into  the  queue  but  not  enqueued yet, depends on the 'en-
	   queue_status' value.

   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

	 * 1: The data vector is enqueued successfully.

	 * 0:  The data vector is cached into the queue but is not processed un-
	   til rte_cryptodev_raw_enqueue_done() is called.

	 * negative integer: failure.

     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_config-
     ure_raw_dp_ctx() call.

     Parameters
	 ctx The initialized raw data-path context data.
	 n The number of operations cached.

     Returns

	 * On success return 0.

	 * On failure return negative integer.

   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 *  de-
     queue_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 op-
	 eration 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 opera-
	 tions count.
	 dequeue_status Driver written value to specify the dequeue status. Pos-
	 sible values:

	 * 1: Successfully dequeued the number of operations returned. The  user
	   data previously set during enqueue is stored in the 'out_user_data'.

	 * 0:  The number of operations returned are completed and the user data
	   is stored in the 'out_user_data', but they are  not	freed  from  the
	   queue until rte_cryptodev_raw_dequeue_done() is called.

	 * negative integer: Error occurred.

     Returns

	 * The number of operations dequeued or completed but not freed from the
	   queue, depends on 'dequeue_status' value.

   static  __rte_experimental  __rte_always_inline  void * rte_cryptodev_raw_de-
     queue (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. Pos-
	 sible values:

	 * 1: Successfully dequeued a operation. The user data is returned.

	 * 0:  The  first  operation in the queue is completed and the user data
	   previously set during enqueue is returned, but it is not  freed  from
	   the queue until rte_cryptodev_raw_dequeue_done() is called.

	 * negative integer: Error occurred.

	 op_status Driver written value to specify operation status.

     Returns

	 * The user data pointer retrieved from device queue or NULL if no oper-
	   ation is ready for dequeue.

     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

	 * On success return 0.

	 * On failure return negative integer.

   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_re-
     move_enq_callback().

     Callbacks registered by application would not survive rte_cryptodev_config-
     ure() 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  af-
     ter 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] pre-
	 viously supplied to rte_cryptodev_configure.
	 cb_fn The callback function
	 cb_arg A generic pointer parameter which will be passed to each invoca-
	 tion of the callback function on this crypto device and queue pair.

     Returns

	 * NULL on error & rte_errno will contain the error code.

	 * On success, a pointer value which can later be  used  to  remove  the
	   callback.

   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_cryp-
	 todev_add_enq_callback().

     Returns

	 * 0: Success. Callback was removed.

	 * <0:	The dev_id or the qp_id is out of range, or the callback is NULL
	   or not found for the crypto device queue pair.

   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_re-
     move_deq_callback().

     Callbacks registered by application would not survive rte_cryptodev_config-
     ure() 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  af-
     ter 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 invoca-
	 tion of the callback function on this crypto device and queue pair.

     Returns

	 * NULL on error & rte_errno will contain the error code.

	 * On  success,  a  pointer  value which can later be used to remove the
	   callback.

   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_cryp-
	 todev_add_deq_callback().

     Returns

	 * 0: Success. Callback was removed.

	 * <0: The dev_id or the qp_id is out of range, or the callback is  NULL
	   or not found for the crypto device queue pair.

   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 actu-
     ally dequeued, which is the number of rte_crypto_op data structures  effec-
     tively 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 oper-
     ations remain in the devices output queue. Applications implementing a 're-
     trieve as many processed operations as possible' policy can check this spe-
     cific case and keep invoking the rte_cryptodev_dequeue_burst() function un-
     til a value less than nb_ops is returned.

     The rte_cryptodev_dequeue_burst() function does not provide any error noti-
     fication 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] previ-
	 ously 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

	 * The	number	of  operations actually dequeued, which is the number of
	   pointers to rte_crypto_op structures effectively supplied to the  ops
	   array.

     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 oper-
     ations 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  sup-
     plied 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] pre-
	 viously supplied to rte_cryptodev_configure.
	 ops  The address of an array of nb_ops pointers to rte_crypto_op struc-
	 tures 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:

	 * (-ENOTSUP) if the device does not support this function.

     Definition at line 2127 of file rte_cryptodev.h.

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026	      rte_cryptodev.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rte_cryptodev_raw_enqueue_burst&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help