#include <dao_virtio.h>
#include <dao_util.h>
#include <spec/virtio_blk.h>
Go to the source code of this file.
|
typedef struct dao_virtio_blkdev | dao_virtio_blkdev_t |
|
typedef uint16_t(* | dao_virtio_blk_deq_fn_t) (void *q, void **mbufs, uint16_t nb_mbufs) |
|
typedef uint16_t(* | dao_virtio_blk_deq_ext_fn_t) (void *q, void **vbufs, uint16_t nb_bufs) |
|
typedef uint16_t(* | dao_virtio_blk_process_compl_fn_t) (void *q, void **mbufs, uint16_t nb_compl) |
|
typedef uint16_t(* | dao_virtio_blk_process_compl_ext_fn_t) (void *q, void **vbufs, uint16_t nb_compl) |
|
typedef int(* | dao_virtio_blk_desc_manage_fn_t) (uint16_t devid, uint16_t qp_count) |
|
typedef int(* | dao_virtio_blk_desc_manage_ext_fn_t) (uint16_t devid, uint16_t qp_count) |
|
typedef int(* | dao_virtio_blkdev_status_cb_t) (uint16_t devid, uint8_t status) |
|
typedef int(* | dao_virtio_blkdev_mq_cfg_t) (uint16_t devid, bool qmap_set) |
|
typedef int(* | dao_virtio_blkdev_extbuf_get) (uint16_t devid, void *buffs[], uint16_t nb_buffs) |
|
typedef int(* | dao_virtio_blkdev_extbuf_put) (uint16_t devid, void *buffs[], uint16_t nb_buffs) |
|
|
int | dao_virtio_blkdev_init (uint16_t devid, struct dao_virtio_blkdev_conf *conf) |
|
int | dao_virtio_blkdev_fini (uint16_t devid) |
|
void | dao_virtio_blkdev_cb_register (struct dao_virtio_blkdev_cbs *cbs) |
|
void | dao_virtio_blkdev_cb_unregister (void) |
|
int | dao_virtio_blkdev_queue_count (uint16_t devid) |
|
uint64_t | dao_virtio_blkdev_feature_bits_get (uint16_t devid) |
|
int | dao_virtio_blkdev_queue_count_max (uint16_t pem_devid, uint16_t devid) |
|
static __rte_always_inline int | dao_virtio_blk_io_desc_manage (uint16_t devid, uint16_t q_count) |
|
static __rte_always_inline uint16_t | dao_virtio_blk_process_compl (uint16_t devid, uint16_t qid, void **mbufs, uint16_t nb_compl) |
|
static __rte_always_inline uint16_t | dao_virtio_blk_process_compl_ext (uint16_t devid, uint16_t qid, void **vbufs, uint16_t nb_compl) |
|
static __rte_always_inline uint16_t | dao_virtio_blk_dequeue_burst (uint16_t devid, uint16_t qid, void **mbufs, uint16_t nb_mbufs) |
|
static __rte_always_inline uint16_t | dao_virtio_blk_dequeue_burst_ext (uint16_t devid, uint16_t qid, void **vbufs, uint16_t nb_bufs) |
|
DAO virtio blk library
Definition in file dao_virtio_blkdev.h.
◆ dao_virtio_blkdev_t
◆ dao_virtio_blk_deq_fn_t
typedef uint16_t(* dao_virtio_blk_deq_fn_t) (void *q, void **mbufs, uint16_t nb_mbufs) |
◆ dao_virtio_blk_deq_ext_fn_t
typedef uint16_t(* dao_virtio_blk_deq_ext_fn_t) (void *q, void **vbufs, uint16_t nb_bufs) |
◆ dao_virtio_blk_process_compl_fn_t
typedef uint16_t(* dao_virtio_blk_process_compl_fn_t) (void *q, void **mbufs, uint16_t nb_compl) |
◆ dao_virtio_blk_process_compl_ext_fn_t
typedef uint16_t(* dao_virtio_blk_process_compl_ext_fn_t) (void *q, void **vbufs, uint16_t nb_compl) |
◆ dao_virtio_blk_desc_manage_fn_t
typedef int(* dao_virtio_blk_desc_manage_fn_t) (uint16_t devid, uint16_t qp_count) |
◆ dao_virtio_blk_desc_manage_ext_fn_t
typedef int(* dao_virtio_blk_desc_manage_ext_fn_t) (uint16_t devid, uint16_t qp_count) |
◆ dao_virtio_blkdev_status_cb_t
typedef int(* dao_virtio_blkdev_status_cb_t) (uint16_t devid, uint8_t status) |
◆ dao_virtio_blkdev_mq_cfg_t
typedef int(* dao_virtio_blkdev_mq_cfg_t) (uint16_t devid, bool qmap_set) |
◆ dao_virtio_blkdev_extbuf_get
typedef int(* dao_virtio_blkdev_extbuf_get) (uint16_t devid, void *buffs[], uint16_t nb_buffs) |
◆ dao_virtio_blkdev_extbuf_put
typedef int(* dao_virtio_blkdev_extbuf_put) (uint16_t devid, void *buffs[], uint16_t nb_buffs) |
◆ dao_virtio_blk_req_status_t
Virtio Block request status
Enumerator |
---|
DAO_VIRTIO_BLK_REQ_COMPLETE | VirtIO block request is complete
|
DAO_VIRTIO_BLK_REQ_IN_PROGRESS | VirtIO block request is still in progress
|
Definition at line 86 of file dao_virtio_blkdev.h.
◆ dao_virtio_blkdev_init()
Virtio blk device initialize.
- Parameters
-
devid | Virtio blk device ID |
conf | Virtio blk device config. |
- Returns
- Zero on success.
◆ dao_virtio_blkdev_fini()
int dao_virtio_blkdev_fini |
( |
uint16_t |
devid | ) |
|
Virtio blk device cleanup.
- Parameters
-
devid | Virtio blk device ID |
- Returns
- Zero on success.
◆ dao_virtio_blkdev_cb_register()
Virtio blk device callback register
- Parameters
-
cbs | Application callbacks for virtio blk devices |
◆ dao_virtio_blkdev_cb_unregister()
void dao_virtio_blkdev_cb_unregister |
( |
void |
| ) |
|
Virtio blk device callback unregister
◆ dao_virtio_blkdev_queue_count()
int dao_virtio_blkdev_queue_count |
( |
uint16_t |
devid | ) |
|
Get blk device queue count.
- Parameters
-
devid | Virtio blk device ID. |
- Returns
- Number of virtio queues configured on success. Negative on failure.
◆ dao_virtio_blkdev_feature_bits_get()
uint64_t dao_virtio_blkdev_feature_bits_get |
( |
uint16_t |
devid | ) |
|
Get blk device feature bits.
- Parameters
-
devid | Virtio blk device ID. |
- Returns
- Configured feature bits on success. Zero on failure.
◆ dao_virtio_blkdev_queue_count_max()
int dao_virtio_blkdev_queue_count_max |
( |
uint16_t |
pem_devid, |
|
|
uint16_t |
devid |
|
) |
| |
Get blk device queue count max.
API can be called before initializing virtio device.
- Parameters
-
pem_devid | PEM device ID. |
devid | Virtio blk device ID. |
- Returns
- Max support virtio queue count on this device on success. Negative on failure.
◆ dao_virtio_blk_io_desc_manage()
static __rte_always_inline int dao_virtio_blk_io_desc_manage |
( |
uint16_t |
devid, |
|
|
uint16_t |
q_count |
|
) |
| |
|
static |
Fetch virtio blkdev descriptors and acknowledge completions.
To be called from service core as frequently as possible to shadow descriptors between Host and Octeon memory.
- Parameters
-
devid | Virtio blk device ID. |
q_count | Number of queues to manage. |
- Returns
- Zero on success.
Definition at line 234 of file dao_virtio_blkdev.h.
◆ dao_virtio_blk_process_compl()
static __rte_always_inline uint16_t dao_virtio_blk_process_compl |
( |
uint16_t |
devid, |
|
|
uint16_t |
qid, |
|
|
void ** |
mbufs, |
|
|
uint16_t |
nb_compl |
|
) |
| |
|
static |
Virtio blkdev process IO request completions
- Parameters
-
devid | Virtio blk device ID. |
qid | Virtio queue id. |
mbufs | pointer to array of buffer pointers to process IO completions |
nb_compl | Number of completions to process |
- Returns
- Number of completions submitted to host
Definition at line 259 of file dao_virtio_blkdev.h.
◆ dao_virtio_blk_process_compl_ext()
static __rte_always_inline uint16_t dao_virtio_blk_process_compl_ext |
( |
uint16_t |
devid, |
|
|
uint16_t |
qid, |
|
|
void ** |
vbufs, |
|
|
uint16_t |
nb_compl |
|
) |
| |
|
static |
Virtio blkdev process IO request completions in ext buf mode
- Parameters
-
devid | Virtio blk device ID. |
qid | Virtio queue id. |
vbufs | pointer to array of ext buffers to process IO completions |
nb_compl | Number of completions to process |
- Returns
- Number of completions submitted to host
Definition at line 289 of file dao_virtio_blkdev.h.
◆ dao_virtio_blk_dequeue_burst()
static __rte_always_inline uint16_t dao_virtio_blk_dequeue_burst |
( |
uint16_t |
devid, |
|
|
uint16_t |
qid, |
|
|
void ** |
mbufs, |
|
|
uint16_t |
nb_mbufs |
|
) |
| |
|
static |
Virtio blkdev receive from Host
- Parameters
-
devid | Virtio blk device ID. |
qid | Virtio queue id. |
mbufs | Array to store buffer pointers of received pkts. |
nb_mbufs | Size of buffer array. |
- Returns
- Number of mbufs received from host.
Definition at line 319 of file dao_virtio_blkdev.h.
◆ dao_virtio_blk_dequeue_burst_ext()
static __rte_always_inline uint16_t dao_virtio_blk_dequeue_burst_ext |
( |
uint16_t |
devid, |
|
|
uint16_t |
qid, |
|
|
void ** |
vbufs, |
|
|
uint16_t |
nb_bufs |
|
) |
| |
|
static |
Virtio blkdev receive raw buffers from Host
- Parameters
-
devid | Virtio blk device ID. |
qid | Virtio queue id. |
vbufs | Array to store buffer pointers of received packets. |
nb_bufs | Size of buffer array. |
- Returns
- Number of buffers received from host.
Definition at line 349 of file dao_virtio_blkdev.h.
◆ dao_virtio_blkdevs
◆ dao_virtio_blk_deq_fns
Array of dequeue functions
◆ dao_virtio_blk_deq_ext_fns
Array of dequeue functions
◆ dao_virtio_blk_process_compl_fns
Array of completion functions
◆ dao_virtio_blk_process_compl_ext_fns
Array of completion functions
◆ dao_blk_desc_manage_fns
Array of management functions
◆ dao_blk_desc_manage_ext_fns
Array of management functions