Data Accelerator Offload
Loading...
Searching...
No Matches
Data Structures | Typedefs | Enumerations | Functions | Variables
dao_virtio_blkdev.h File Reference
#include <dao_virtio.h>
#include <dao_util.h>
#include <spec/virtio_blk.h>

Go to the source code of this file.

Data Structures

struct  dao_virtio_blkdev_conf
 
struct  dao_virtio_blk_hdr
 
struct  dao_virtio_blkdev
 
struct  dao_virtio_blkdev_cbs
 

Typedefs

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)
 

Enumerations

enum  dao_virtio_blk_req_status_t { DAO_VIRTIO_BLK_REQ_COMPLETE , DAO_VIRTIO_BLK_REQ_IN_PROGRESS }
 

Functions

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)
 

Variables

struct dao_virtio_blkdev dao_virtio_blkdevs []
 
dao_virtio_blk_deq_fn_t dao_virtio_blk_deq_fns []
 
dao_virtio_blk_deq_ext_fn_t dao_virtio_blk_deq_ext_fns []
 
dao_virtio_blk_process_compl_fn_t dao_virtio_blk_process_compl_fns []
 
dao_virtio_blk_process_compl_ext_fn_t dao_virtio_blk_process_compl_ext_fns []
 
dao_virtio_blk_desc_manage_fn_t dao_blk_desc_manage_fns []
 
dao_virtio_blk_desc_manage_ext_fn_t dao_blk_desc_manage_ext_fns []
 

Detailed Description

DAO virtio blk library

Definition in file dao_virtio_blkdev.h.

Typedef Documentation

◆ dao_virtio_blkdev_t

Virtio blk device data

◆ dao_virtio_blk_deq_fn_t

typedef uint16_t(* dao_virtio_blk_deq_fn_t) (void *q, void **mbufs, uint16_t nb_mbufs)

IO request dequeue function

Definition at line 98 of file dao_virtio_blkdev.h.

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

Dequeue external buf function

Definition at line 101 of file dao_virtio_blkdev.h.

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

IO request completion function

Definition at line 104 of file dao_virtio_blkdev.h.

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

IO request completion function

Definition at line 107 of file dao_virtio_blkdev.h.

◆ dao_virtio_blk_desc_manage_fn_t

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

Management function

Definition at line 110 of file dao_virtio_blkdev.h.

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

Management function

Definition at line 112 of file dao_virtio_blkdev.h.

◆ dao_virtio_blkdev_status_cb_t

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

Device status callback

Definition at line 128 of file dao_virtio_blkdev.h.

◆ dao_virtio_blkdev_mq_cfg_t

typedef int(* dao_virtio_blkdev_mq_cfg_t) (uint16_t devid, bool qmap_set)

Multi queue configure callback

Definition at line 130 of file dao_virtio_blkdev.h.

◆ dao_virtio_blkdev_extbuf_get

typedef int(* dao_virtio_blkdev_extbuf_get) (uint16_t devid, void *buffs[], uint16_t nb_buffs)

callback to get the ext buffers from the pool

Definition at line 132 of file dao_virtio_blkdev.h.

◆ dao_virtio_blkdev_extbuf_put

typedef int(* dao_virtio_blkdev_extbuf_put) (uint16_t devid, void *buffs[], uint16_t nb_buffs)

callback to put the ext buffers into the pool

Definition at line 135 of file dao_virtio_blkdev.h.

Enumeration Type Documentation

◆ 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.

Function Documentation

◆ dao_virtio_blkdev_init()

int dao_virtio_blkdev_init ( uint16_t  devid,
struct dao_virtio_blkdev_conf conf 
)

Virtio blk device initialize.

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

◆ dao_virtio_blkdev_fini()

int dao_virtio_blkdev_fini ( uint16_t  devid)

Virtio blk device cleanup.

Parameters
devidVirtio blk device ID
Returns
Zero on success.

◆ dao_virtio_blkdev_cb_register()

void dao_virtio_blkdev_cb_register ( struct dao_virtio_blkdev_cbs cbs)

Virtio blk device callback register

Parameters
cbsApplication 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
devidVirtio 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
devidVirtio 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_devidPEM device ID.
devidVirtio 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
devidVirtio blk device ID.
q_countNumber 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
devidVirtio blk device ID.
qidVirtio queue id.
mbufspointer to array of buffer pointers to process IO completions
nb_complNumber 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
devidVirtio blk device ID.
qidVirtio queue id.
vbufspointer to array of ext buffers to process IO completions
nb_complNumber 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
devidVirtio blk device ID.
qidVirtio queue id.
mbufsArray to store buffer pointers of received pkts.
nb_mbufsSize 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
devidVirtio blk device ID.
qidVirtio queue id.
vbufsArray to store buffer pointers of received packets.
nb_bufsSize of buffer array.
Returns
Number of buffers received from host.

Definition at line 349 of file dao_virtio_blkdev.h.

Variable Documentation

◆ dao_virtio_blkdevs

struct dao_virtio_blkdev dao_virtio_blkdevs[]
extern

Virtio blk devices

◆ dao_virtio_blk_deq_fns

dao_virtio_blk_deq_fn_t dao_virtio_blk_deq_fns[]
extern

Array of dequeue functions

◆ dao_virtio_blk_deq_ext_fns

dao_virtio_blk_deq_ext_fn_t dao_virtio_blk_deq_ext_fns[]
extern

Array of dequeue functions

◆ dao_virtio_blk_process_compl_fns

dao_virtio_blk_process_compl_fn_t dao_virtio_blk_process_compl_fns[]
extern

Array of completion functions

◆ dao_virtio_blk_process_compl_ext_fns

dao_virtio_blk_process_compl_ext_fn_t dao_virtio_blk_process_compl_ext_fns[]
extern

Array of completion functions

◆ dao_blk_desc_manage_fns

dao_virtio_blk_desc_manage_fn_t dao_blk_desc_manage_fns[]
extern

Array of management functions

◆ dao_blk_desc_manage_ext_fns

dao_virtio_blk_desc_manage_ext_fn_t dao_blk_desc_manage_ext_fns[]
extern

Array of management functions