11#ifndef __INCLUDE_DAO_VIRTIO_BLK_H__
12#define __INCLUDE_DAO_VIRTIO_BLK_H__
17#include <spec/virtio_blk.h>
33#define DAO_VIRTIO_BLKDEV_EXTBUF DAO_BIT_ULL(0)
43 uint16_t dataroom_size;
83#define DAO_VIRTIO_BLKDEV_MEM_SZ 8192
84 uint8_t reserved[DAO_VIRTIO_BLKDEV_MEM_SZ];
107 void **mbufs, uint16_t nb_compl);
235static __rte_always_inline
int
243 return (*mgmt_fn)(devid, q_count);
260static __rte_always_inline uint16_t
262 void **mbufs, uint16_t nb_compl)
266 void *q = blkdev->qs[qid];
273 return (*compl_fn)(q, mbufs, nb_compl);
290static __rte_always_inline uint16_t
296 void *q = blkdev->qs[qid];
303 return (*compl_fn)(q, vbufs, nb_compl);
320static __rte_always_inline uint16_t
322 void **mbufs, uint16_t nb_mbufs)
326 void *q = blkdev->qs[qid];
333 return (*deq_fn)(q, mbufs, nb_mbufs);
350static __rte_always_inline uint16_t
356 void *q = blkdev->qs[qid];
363 return (*deq_fn)(q, vbufs, nb_bufs);
#define DAO_VIRTIO_MAX_QUEUES
struct dao_virtio_blkdev dao_virtio_blkdevs[]
void dao_virtio_blkdev_cb_register(struct dao_virtio_blkdev_cbs *cbs)
uint16_t(* dao_virtio_blk_deq_fn_t)(void *q, void **mbufs, uint16_t nb_mbufs)
static __rte_always_inline uint16_t dao_virtio_blk_dequeue_burst(uint16_t devid, uint16_t qid, void **mbufs, uint16_t nb_mbufs)
struct dao_virtio_blkdev dao_virtio_blkdev_t
dao_virtio_blk_desc_manage_fn_t dao_blk_desc_manage_fns[]
int(* dao_virtio_blkdev_mq_cfg_t)(uint16_t devid, bool qmap_set)
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 dao_virtio_blk_process_compl_ext_fns[]
void dao_virtio_blkdev_cb_unregister(void)
uint16_t(* dao_virtio_blk_process_compl_ext_fn_t)(void *q, void **vbufs, uint16_t nb_compl)
dao_virtio_blk_deq_fn_t dao_virtio_blk_deq_fns[]
static __rte_always_inline uint16_t dao_virtio_blk_dequeue_burst_ext(uint16_t devid, uint16_t qid, void **vbufs, uint16_t nb_bufs)
int(* dao_virtio_blkdev_extbuf_put)(uint16_t devid, void *buffs[], uint16_t nb_buffs)
int(* dao_virtio_blkdev_extbuf_get)(uint16_t devid, void *buffs[], uint16_t nb_buffs)
int dao_virtio_blkdev_queue_count_max(uint16_t pem_devid, uint16_t devid)
uint64_t dao_virtio_blkdev_feature_bits_get(uint16_t devid)
dao_virtio_blk_deq_ext_fn_t dao_virtio_blk_deq_ext_fns[]
static __rte_always_inline uint16_t dao_virtio_blk_process_compl_ext(uint16_t devid, uint16_t qid, void **vbufs, uint16_t nb_compl)
dao_virtio_blk_process_compl_fn_t dao_virtio_blk_process_compl_fns[]
static __rte_always_inline int dao_virtio_blk_io_desc_manage(uint16_t devid, uint16_t q_count)
int(* dao_virtio_blk_desc_manage_fn_t)(uint16_t devid, uint16_t qp_count)
dao_virtio_blk_desc_manage_ext_fn_t dao_blk_desc_manage_ext_fns[]
static __rte_always_inline uint16_t dao_virtio_blk_process_compl(uint16_t devid, uint16_t qid, void **mbufs, uint16_t nb_compl)
int(* dao_virtio_blkdev_status_cb_t)(uint16_t devid, uint8_t status)
int dao_virtio_blkdev_init(uint16_t devid, struct dao_virtio_blkdev_conf *conf)
uint16_t(* dao_virtio_blk_deq_ext_fn_t)(void *q, void **vbufs, uint16_t nb_bufs)
int dao_virtio_blkdev_fini(uint16_t devid)
int dao_virtio_blkdev_queue_count(uint16_t devid)
dao_virtio_blk_req_status_t
@ DAO_VIRTIO_BLK_REQ_IN_PROGRESS
@ DAO_VIRTIO_BLK_REQ_COMPLETE
int(* dao_virtio_blk_desc_manage_ext_fn_t)(uint16_t devid, uint16_t qp_count)
dao_virtio_blkdev_extbuf_put extbuf_put
dao_virtio_blkdev_status_cb_t status_cb
dao_virtio_blkdev_extbuf_get extbuf_get
struct rte_mempool * pool
void *qs[DAO_VIRTIO_MAX_QUEUES] __rte_cache_aligned