Data Accelerator Offload
Loading...
Searching...
No Matches
Data Structures | Typedefs | Functions | Variables
dao_virtio_cryptodev.h File Reference
#include <rte_common.h>
#include <rte_crypto.h>
#include <rte_crypto_asym.h>
#include <dao_virtio.h>

Go to the source code of this file.

Data Structures

struct  dao_virtio_cryptodev_conf
 
struct  dao_virtio_cryptodev
 
struct  dao_virtio_crypto_buffer
 
struct  dao_virtio_cryptodev_vdev_q
 
struct  dao_virtio_cryptodev_cbs
 

Typedefs

typedef uint16_t(* dao_virtio_crypto_deq_fn_t) (void *q, struct rte_crypto_op **cops, uint16_t nb_cops)
 
typedef uint16_t(* dao_virtio_crypto_enq_fn_t) (void *q, struct rte_crypto_op **cops, uint16_t nb_cops)
 
typedef int(* dao_crypto_desc_manage_fn_t) (uint16_t devid, uint16_t qp_count)
 
typedef int(* dao_virtio_cryptodev_status_cb_t) (uint16_t devid, uint8_t status)
 
typedef uint64_t(* dao_virtio_cryptodev_sym_sess_create_cb_t) (uint16_t dev_id, struct rte_crypto_sym_xform *x)
 
typedef uint64_t(* dao_virtio_cryptodev_asym_sess_create_cb_t) (uint16_t dev_id, struct rte_crypto_asym_xform *x)
 
typedef void(* dao_virtio_cryptodev_session_destroy_cb_t) (uint16_t dev_id, uint64_t session_id)
 

Functions

int dao_virtio_cryptodev_init (uint16_t devid, struct dao_virtio_cryptodev_conf *conf)
 
int dao_virtio_cryptodev_fini (uint16_t devid)
 
void dao_virtio_cryptodev_cb_register (struct dao_virtio_cryptodev_cbs *cbs)
 
void dao_virtio_cryptodev_cb_unregister (void)
 
uint16_t dao_virtio_cryptodev_data_queue_cnt_get (uint16_t dev_id)
 
uint16_t dao_virtio_cryptodev_max_dataqueue_cnt_get (uint16_t dev_id)
 
void dao_virtio_cryptodev_common_cfg_init (void)
 
int dao_virtio_cryptodev_cdev_add (uint16_t dev_id, uint16_t qp_count, struct rte_mempool *mempool[])
 
int dao_virtio_cryptodev_cdev_remove (uint16_t dev_id)
 
int dao_virtio_cryptodev_cdev_queue_assign (uint16_t virt_dev_id, uint16_t virt_queue_id)
 
int dao_virtio_cryptodev_cdev_queue_release (uint16_t virt_dev_id, uint16_t virt_queue_id)
 
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)
 
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)
 
const struct dao_virtio_cryptodev_vdev_qdao_virtio_cryptodev_cdev_map_all_queues_get (uint16_t cdev_id)
 
static __rte_always_inline int dao_virtio_crypto_desc_manage (uint16_t devid, uint16_t qp_count)
 
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)
 
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 uint16_t dao_virtio_cdev_id_get (uint16_t virt_dev_id)
 
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_crypto_tx_desc_dma_completion (uint16_t devid, uint16_t qid)
 

Variables

struct dao_virtio_cryptodev dao_virtio_cryptodevs []
 
dao_virtio_crypto_deq_fn_t dao_virtio_crypto_deq_fns []
 
dao_virtio_crypto_enq_fn_t dao_virtio_crypto_enq_fns []
 
dao_crypto_desc_manage_fn_t dao_crypto_desc_manage_fns []
 

Detailed Description

DAO virtio crypto library

Definition in file dao_virtio_cryptodev.h.

Typedef Documentation

◆ dao_virtio_crypto_deq_fn_t

typedef uint16_t(* dao_virtio_crypto_deq_fn_t) (void *q, struct rte_crypto_op **cops, uint16_t nb_cops)

Dequeue function

Definition at line 106 of file dao_virtio_cryptodev.h.

◆ dao_virtio_crypto_enq_fn_t

typedef uint16_t(* dao_virtio_crypto_enq_fn_t) (void *q, struct rte_crypto_op **cops, uint16_t nb_cops)

Enqueue function

Definition at line 109 of file dao_virtio_cryptodev.h.

◆ dao_crypto_desc_manage_fn_t

typedef int(* dao_crypto_desc_manage_fn_t) (uint16_t devid, uint16_t qp_count)

Management function

Definition at line 112 of file dao_virtio_cryptodev.h.

◆ dao_virtio_cryptodev_status_cb_t

typedef int(* dao_virtio_cryptodev_status_cb_t) (uint16_t devid, uint8_t status)

Device status callback

Definition at line 122 of file dao_virtio_cryptodev.h.

◆ dao_virtio_cryptodev_sym_sess_create_cb_t

typedef uint64_t(* dao_virtio_cryptodev_sym_sess_create_cb_t) (uint16_t dev_id, struct rte_crypto_sym_xform *x)

Crypto symmetric session create callback

Definition at line 125 of file dao_virtio_cryptodev.h.

◆ dao_virtio_cryptodev_asym_sess_create_cb_t

typedef uint64_t(* dao_virtio_cryptodev_asym_sess_create_cb_t) (uint16_t dev_id, struct rte_crypto_asym_xform *x)

Crypto asymmetric session create callback

Definition at line 128 of file dao_virtio_cryptodev.h.

◆ dao_virtio_cryptodev_session_destroy_cb_t

typedef void(* dao_virtio_cryptodev_session_destroy_cb_t) (uint16_t dev_id, uint64_t session_id)

Crypto session destroy callback

Definition at line 131 of file dao_virtio_cryptodev.h.

Function Documentation

◆ dao_virtio_cryptodev_init()

int dao_virtio_cryptodev_init ( uint16_t  devid,
struct dao_virtio_cryptodev_conf conf 
)

Virtio crypto device initialize.

Parameters
devidVirtio crypto device ID
confVirtio crypto device config.
Returns
Zero on success.

◆ dao_virtio_cryptodev_fini()

int dao_virtio_cryptodev_fini ( uint16_t  devid)

Virtio crypto device cleanup.

Parameters
devidVirtio crypto device ID
Returns
Zero on success.

◆ dao_virtio_cryptodev_cb_register()

void dao_virtio_cryptodev_cb_register ( struct dao_virtio_cryptodev_cbs cbs)

Virtio crypto device callback register

Parameters
cbsApplication callbacks for virtio crypto devices

◆ dao_virtio_cryptodev_cb_unregister()

void dao_virtio_cryptodev_cb_unregister ( void  )

Virtio crypto device callback unregister

◆ dao_virtio_cryptodev_data_queue_cnt_get()

uint16_t dao_virtio_cryptodev_data_queue_cnt_get ( uint16_t  dev_id)

Get number of data queues for a virtio crypto device

Parameters
dev_idVirtio crypto device ID
Returns
Number of data queues

◆ dao_virtio_cryptodev_max_dataqueue_cnt_get()

uint16_t dao_virtio_cryptodev_max_dataqueue_cnt_get ( uint16_t  dev_id)

Get max number of data queues for a virtio crypto device

Parameters
dev_idVirtio crypto device ID
Returns
Max number of data queues

◆ dao_virtio_cryptodev_common_cfg_init()

void dao_virtio_cryptodev_common_cfg_init ( void  )

Initialize common configuration for virtio crypto devices.

◆ dao_virtio_cryptodev_cdev_add()

int dao_virtio_cryptodev_cdev_add ( uint16_t  dev_id,
uint16_t  qp_count,
struct rte_mempool *  mempool[] 
)

Add crypto device to the map.

Parameters
dev_idVirtio crypto device ID.
qp_countNumber of queue pairs.
mempoolArray of mempools for each queue pair.
Returns
Zero on success.

◆ dao_virtio_cryptodev_cdev_remove()

int dao_virtio_cryptodev_cdev_remove ( uint16_t  dev_id)

Remove crypto device from the map.

Parameters
dev_idVirtio crypto device ID.
Returns
Zero on success.

◆ dao_virtio_cryptodev_cdev_queue_assign()

int dao_virtio_cryptodev_cdev_queue_assign ( uint16_t  virt_dev_id,
uint16_t  virt_queue_id 
)

Assign a crypto queue for a virtio device ID and queue ID.

Parameters
virt_dev_idVirtio device ID.
virt_queue_idVirtio queue ID.
Returns
Zero on success.

◆ dao_virtio_cryptodev_cdev_queue_release()

int dao_virtio_cryptodev_cdev_queue_release ( uint16_t  virt_dev_id,
uint16_t  virt_queue_id 
)

Release a crypto queue for a virtio device ID and queue ID.

Parameters
virt_dev_idVirtio device ID.
virt_queue_idVirtio queue ID.
Returns
Zero on success.

◆ dao_virtio_cryptodev_cdev_map_queue_get()

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 
)

Get crypto device ID and queue ID from virtio device ID and queue ID.

Parameters
virt_dev_idVirtio device ID.
virt_queue_idVirtio queue ID.
cdev_id[out] Crypto device ID.
cdev_qp_id[out] Crypto queue ID.
mempool[out] Mempool for the queue.
Returns
Zero on success.

◆ dao_virtio_cryptodev_virt_dev_map_queue_get()

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 
)

Get virtio device ID and queue ID from crypto device ID and queue ID.

Parameters
cdev_idCrypto device ID.
cdev_qp_idCrypto queue ID.
virt_dev_id[out] Virtio device ID.
virt_queue_id[out] Virtio queue ID.
Returns
Zero on success.

◆ dao_virtio_cryptodev_cdev_map_all_queues_get()

const struct dao_virtio_cryptodev_vdev_q * dao_virtio_cryptodev_cdev_map_all_queues_get ( uint16_t  cdev_id)

Get all queues for a crypto device. This is used to get all the virtio queues mapped to a cryptodev.

Parameters
cdev_idCrypto device ID.
Returns
Array of virtio queues mapped to the cryptodev.

◆ dao_virtio_crypto_desc_manage()

static __rte_always_inline int dao_virtio_crypto_desc_manage ( uint16_t  devid,
uint16_t  qp_count 
)
static

Fetch virtio cryptodev descriptors and acknowledge completions.

To be called from service core as frequently as possible to shadow descriptors between Host and Octeon memory.

Parameters
devidVirtio crypto device ID.
qp_countNumber of queue pairs to manage.
Returns
Zero on success.

Definition at line 322 of file dao_virtio_cryptodev.h.

◆ dao_virtio_crypto_host_rx()

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 
)
static

Virtio cryptodev receive from host

Parameters
devidVirtio crypto device ID.
qidVirtio queue id.
copsArray to store cops pointers of received crypto ops.
nb_copsSize of cop array.
Returns
Number of cops received from host.

Definition at line 347 of file dao_virtio_cryptodev.h.

◆ dao_virtio_crypto_host_tx()

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

Virtio cryptodev transmit to host

Parameters
devidVirtio crypto device ID.
qidVirtio queue id.
copsArray of cop pointers of crypto operation to send to host.
nb_copsNumber of cops to send.
Returns
Number of cops sent to host.

Definition at line 377 of file dao_virtio_cryptodev.h.

◆ dao_virtio_cdev_id_get()

static __rte_always_inline uint16_t dao_virtio_cdev_id_get ( uint16_t  virt_dev_id)
static

Get crypto device ID from virtio device ID. This is used to get the cryptodev ID for a virtio device.

Parameters
virt_dev_idVirtio device ID.
Returns
Crypto device ID.

Definition at line 403 of file dao_virtio_cryptodev.h.

◆ dao_virtio_cdev_qp_id_get()

static __rte_always_inline uint16_t dao_virtio_cdev_qp_id_get ( uint16_t  virt_dev_id,
uint16_t  virt_q_id 
)
static

Get crypto device queue pair ID from virtio device ID and queue ID. This is used to get the cryptodev queue pair ID for a virtio queue.

Parameters
virt_dev_idVirtio device ID.
virt_q_idVirtio queue ID.
Returns
Crypto device queue pair ID.

Definition at line 423 of file dao_virtio_cryptodev.h.

◆ dao_virtio_crypto_tx_desc_dma_completion()

void dao_virtio_crypto_tx_desc_dma_completion ( uint16_t  devid,
uint16_t  qid 
)

Checks for DMA completion of previous TX packets and notifies the service core about the DMA completion status.

Parameters
devidThe device ID associated with the virtio crypto device.
qidThe virtio queue ID for which the DMA completion is being checked.

Variable Documentation

◆ dao_virtio_cryptodevs

struct dao_virtio_cryptodev dao_virtio_cryptodevs[]
extern

Virtio crypto devices

◆ dao_virtio_crypto_deq_fns

dao_virtio_crypto_deq_fn_t dao_virtio_crypto_deq_fns[]
extern

Array of dequeue functions

◆ dao_virtio_crypto_enq_fns

dao_virtio_crypto_enq_fn_t dao_virtio_crypto_enq_fns[]
extern

Array of enqueue functions

◆ dao_crypto_desc_manage_fns

dao_crypto_desc_manage_fn_t dao_crypto_desc_manage_fns[]
extern

Array of management functions