11#ifndef __INCLUDE_DAO_VIRTIO_CRYPTO_H__
12#define __INCLUDE_DAO_VIRTIO_CRYPTO_H__
14#include <rte_common.h>
15#include <rte_crypto.h>
16#include <rte_crypto_asym.h>
20#define DAO_VIRTIO_CRYPTO_DEV_MAX 1
22#define DAO_VIRTIO_CRYPTO_QP_MAX 128
24#define DAO_VIRTIO_INVALID_ID 0xFFFF
26#define DAO_VIRTIO_CRYPTO_RX_BUF_CACHE_SZ 128
27#define DAO_VIRTIO_CRYPTO_TX_BUF_CACHE_SZ 512
29#define DAO_VIRTIO_CRYPTO_MAX_CHAIN_READ_DESC 4
30#define DAO_VIRTIO_CRYPTO_MAX_CHAIN_WRITE_DESC 4
60#define DAO_VIRTIO_CRYPTODEV_MEM_SZ 8192
61 uint8_t reserved[DAO_VIRTIO_CRYPTODEV_MEM_SZ];
89 rte_iova_t output_addr;
90 struct rte_crypto_op cop;
91 struct rte_crypto_asym_op asym;
97 uint16_t virtio_dev_id;
98 uint16_t virtio_queue_id;
126 struct rte_crypto_sym_xform *x);
129 struct rte_crypto_asym_xform *x);
223 struct rte_mempool *mempool[]);
276 uint16_t *cdev_id, uint16_t *cdev_qp_id,
277 struct rte_mempool **mempool);
294 uint16_t *virt_dev_id, uint16_t *virt_queue_id);
321static __rte_always_inline
int
329 return (*mgmt_fn)(devid, qp_count);
346static __rte_always_inline uint16_t
352 void *q = cryptodev->qs[qid];
359 return (*deq_fn)(q, cops, nb_cops);
376static __rte_always_inline uint16_t
382 void *q = cryptodev->qs[qid];
384 if (unlikely(q == NULL))
389 return (*enq_fn)(q, cops, nb_cops);
402static __rte_always_inline uint16_t
422static __rte_always_inline uint16_t
#define DAO_VIRTIO_MAX_QUEUES
uint64_t(* dao_virtio_cryptodev_sym_sess_create_cb_t)(uint16_t dev_id, struct rte_crypto_sym_xform *x)
int dao_virtio_cryptodev_virt_dev_map_queue_get(uint16_t cdev_id, uint16_t cdev_qp_id, uint16_t *virt_dev_id, uint16_t *virt_queue_id)
void dao_virtio_cryptodev_common_cfg_init(void)
void dao_virtio_cryptodev_cb_register(struct dao_virtio_cryptodev_cbs *cbs)
int(* dao_virtio_cryptodev_status_cb_t)(uint16_t devid, uint8_t status)
void dao_virtio_crypto_tx_desc_dma_completion(uint16_t devid, uint16_t qid)
uint16_t dao_virtio_cryptodev_data_queue_cnt_get(uint16_t dev_id)
int dao_virtio_cryptodev_cdev_queue_release(uint16_t virt_dev_id, uint16_t virt_queue_id)
const struct dao_virtio_cryptodev_vdev_q * dao_virtio_cryptodev_cdev_map_all_queues_get(uint16_t cdev_id)
static __rte_always_inline uint16_t dao_virtio_crypto_host_rx(uint16_t devid, uint16_t qid, struct rte_crypto_op **cops, uint16_t nb_cops)
uint16_t dao_virtio_cryptodev_max_dataqueue_cnt_get(uint16_t dev_id)
int dao_virtio_cryptodev_cdev_remove(uint16_t dev_id)
dao_virtio_crypto_enq_fn_t dao_virtio_crypto_enq_fns[]
static __rte_always_inline uint16_t dao_virtio_cdev_qp_id_get(uint16_t virt_dev_id, uint16_t virt_q_id)
void(* dao_virtio_cryptodev_session_destroy_cb_t)(uint16_t dev_id, uint64_t session_id)
int(* dao_crypto_desc_manage_fn_t)(uint16_t devid, uint16_t qp_count)
int dao_virtio_cryptodev_cdev_queue_assign(uint16_t virt_dev_id, uint16_t virt_queue_id)
int dao_virtio_cryptodev_init(uint16_t devid, struct dao_virtio_cryptodev_conf *conf)
uint16_t(* dao_virtio_crypto_enq_fn_t)(void *q, struct rte_crypto_op **cops, uint16_t nb_cops)
uint16_t(* dao_virtio_crypto_deq_fn_t)(void *q, struct rte_crypto_op **cops, uint16_t nb_cops)
dao_virtio_crypto_deq_fn_t dao_virtio_crypto_deq_fns[]
int dao_virtio_cryptodev_cdev_add(uint16_t dev_id, uint16_t qp_count, struct rte_mempool *mempool[])
int dao_virtio_cryptodev_cdev_map_queue_get(uint16_t virt_dev_id, uint16_t virt_queue_id, uint16_t *cdev_id, uint16_t *cdev_qp_id, struct rte_mempool **mempool)
dao_crypto_desc_manage_fn_t dao_crypto_desc_manage_fns[]
static __rte_always_inline uint16_t dao_virtio_cdev_id_get(uint16_t virt_dev_id)
struct dao_virtio_cryptodev dao_virtio_cryptodevs[]
static __rte_always_inline uint16_t dao_virtio_crypto_host_tx(uint16_t devid, uint16_t qid, struct rte_crypto_op **cops, uint16_t nb_cops)
static __rte_always_inline int dao_virtio_crypto_desc_manage(uint16_t devid, uint16_t qp_count)
void dao_virtio_cryptodev_cb_unregister(void)
int dao_virtio_cryptodev_fini(uint16_t devid)
uint64_t(* dao_virtio_cryptodev_asym_sess_create_cb_t)(uint16_t dev_id, struct rte_crypto_asym_xform *x)
struct dao_virtio_crypto_buffer::@17 metadata
struct dao_virtio_crypto_buffer::@17::@18::@20 cdev
struct dao_virtio_crypto_buffer::@17::@18::@21 virt
dao_virtio_cryptodev_session_destroy_cb_t sym_sess_destroy_cb
dao_virtio_cryptodev_status_cb_t status_cb
dao_virtio_cryptodev_session_destroy_cb_t asym_sess_destroy_cb
dao_virtio_cryptodev_sym_sess_create_cb_t sym_sess_create_cb
dao_virtio_cryptodev_asym_sess_create_cb_t asym_sess_create_cb
struct rte_mempool * pool
uint8_t cdev_qp_id_map[DAO_VIRTIO_CRYPTO_QP_MAX]
void *qs[DAO_VIRTIO_MAX_QUEUES] __rte_cache_aligned