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::@25::@26::@28 cdev
 
struct dao_virtio_crypto_buffer::@25::@26::@29 virt
 
struct dao_virtio_crypto_buffer::@25 metadata
 
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