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;
81#define DAO_VIRTIO_BLKDEV_MEM_SZ 8192
82 uint8_t reserved[DAO_VIRTIO_BLKDEV_MEM_SZ];
105 void **mbufs, uint16_t nb_compl);
233static __rte_always_inline
int
241 return (*mgmt_fn)(devid, q_count);
258static __rte_always_inline uint16_t
260 void **mbufs, uint16_t nb_compl)
264 void *q = blkdev->qs[qid];
271 return (*compl_fn)(q, mbufs, nb_compl);
288static __rte_always_inline uint16_t
294 void *q = blkdev->qs[qid];
301 return (*compl_fn)(q, vbufs, nb_compl);
318static __rte_always_inline uint16_t
320 void **mbufs, uint16_t nb_mbufs)
324 void *q = blkdev->qs[qid];
331 return (*deq_fn)(q, mbufs, nb_mbufs);
348static __rte_always_inline uint16_t
354 void *q = blkdev->qs[qid];
361 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