11#ifndef __INCLUDE_DAO_VIRTIO_NET_H__
12#define __INCLUDE_DAO_VIRTIO_NET_H__
17#include <spec/virtio_net.h>
45#define DAO_VIRTIO_NETDEV_EXTBUF DAO_BIT_ULL(0)
54 uint16_t dataroom_size;
70 uint8_t
mac[VIRTIO_NET_ETHER_ADDR_LEN];
90#define DAO_VIRTIO_NETDEV_MEM_SZ 8192
99 struct virtio_net_hdr
hdr;
146typedef int (*dao_virtio_netdev_extbuf_get)(uint16_t devid,
void *buffs[], uint16_t nb_buffs);
147typedef int (*dao_virtio_netdev_extbuf_put)(uint16_t devid,
void *buffs[], uint16_t nb_buffs);
284static __rte_always_inline
int
291 return (*mgmt_fn)(devid, qp_count);
308static __rte_always_inline uint16_t
310 struct rte_mbuf **mbufs, uint16_t nb_mbufs)
314 void *q = netdev->qs[qid];
321 return (*deq_fn)(q, mbufs, nb_mbufs);
338static __rte_always_inline uint16_t
340 struct rte_mbuf **mbufs, uint16_t nb_mbufs)
344 void *q = netdev->qs[qid];
351 return (*enq_fn)(q, mbufs, nb_mbufs);
368static __rte_always_inline uint16_t
373 void *q = netdev->qs[qid];
380 return (*deq_fn)(q, vbufs, nb_bufs);
397static __rte_always_inline uint16_t
402 void *q = netdev->qs[qid];
409 return (*enq_fn)(q, vbufs, nb_bufs);
#define DAO_VIRTIO_MAX_QUEUES
static __rte_always_inline uint16_t dao_virtio_net_enqueue_burst_ext(uint16_t devid, uint16_t qid, void **vbufs, uint16_t nb_bufs)
static __rte_always_inline uint16_t dao_virtio_net_enqueue_burst(uint16_t devid, uint16_t qid, struct rte_mbuf **mbufs, uint16_t nb_mbufs)
uint8_t dao_virtio_netdev_hdrlen_get(uint16_t devid)
int dao_virtio_netdev_init(uint16_t devid, struct dao_virtio_netdev_conf *conf)
int(* dao_virtio_netdev_allmulti_cb_t)(uint16_t devid, uint8_t enable)
void dao_virtio_netdev_cb_register(struct dao_virtio_netdev_cbs *cbs)
dao_virtio_net_enq_fn_t dao_virtio_net_enq_fns[]
uint16_t(* dao_virtio_net_enq_ext_fn_t)(void *q, void **vbufs, uint16_t nb_bufs)
int(* dao_virtio_netdev_mac_add_cb_t)(uint16_t devid, struct virtio_net_ctrl_mac *mac_tbl, uint8_t type)
dao_virtio_net_enq_ext_fn_t dao_virtio_net_enq_ext_fns[]
static __rte_always_inline int dao_virtio_net_desc_manage(uint16_t devid, uint16_t qp_count)
static __rte_always_inline uint16_t dao_virtio_net_dequeue_burst(uint16_t devid, uint16_t qid, struct rte_mbuf **mbufs, uint16_t nb_mbufs)
uint16_t(* dao_virtio_net_deq_ext_fn_t)(void *q, void **vbufs, uint16_t nb_bufs)
int dao_virtio_netdev_link_sts_update(uint16_t devid, struct dao_virtio_netdev_link_info *info)
dao_virtio_net_deq_fn_t dao_virtio_net_deq_fns[]
int(* dao_virtio_netdev_mq_cfg_t)(uint16_t devid, bool qmap_set)
void dao_virtio_netdev_cb_unregister(void)
dao_net_desc_manage_fn_t dao_net_desc_manage_fns[]
struct dao_virtio_netdev dao_virtio_netdevs[]
int(* dao_virtio_netdev_vlan_t)(uint16_t devid, uint16_t vlan_tci)
uint16_t(* dao_virtio_net_enq_fn_t)(void *q, struct rte_mbuf **mbufs, uint16_t nb_mbufs)
int(* dao_virtio_netdev_status_cb_t)(uint16_t devid, uint8_t status)
static __rte_always_inline uint16_t dao_virtio_net_dequeue_burst_ext(uint16_t devid, uint16_t qid, void **vbufs, uint16_t nb_bufs)
dao_virtio_net_deq_ext_fn_t dao_virtio_net_deq_ext_fns[]
int dao_virtio_netdev_fini(uint16_t devid)
#define DAO_VIRTIO_NETDEV_MEM_SZ
int(* dao_virtio_netdev_promisc_cb_t)(uint16_t devid, uint8_t enable)
uint16_t(* dao_virtio_net_deq_fn_t)(void *q, struct rte_mbuf **mbufs, uint16_t nb_mbufs)
int(* dao_virtio_netdev_mac_set_cb_t)(uint16_t devid, uint8_t *mac)
int(* dao_virtio_netdev_rss_cb_t)(uint16_t devid, struct virtio_net_ctrl_rss *rss)
int dao_virtio_netdev_queue_count_max(uint16_t pem_devid, uint16_t devid)
int dao_virtio_netdev_queue_count(uint16_t devid)
int(* dao_net_desc_manage_fn_t)(uint16_t devid, uint16_t qp_count)
uint64_t dao_virtio_netdev_feature_bits_get(uint16_t devid)
struct virtio_net_hdr hdr
dao_virtio_netdev_rss_cb_t rss_cb
dao_virtio_netdev_status_cb_t status_cb
dao_virtio_netdev_promisc_cb_t promisc_cb
dao_virtio_netdev_mac_set_cb_t mac_set
dao_virtio_netdev_extbuf_get extbuf_get
dao_virtio_netdev_vlan_t vlan_add
dao_virtio_netdev_extbuf_put extbuf_put
dao_virtio_netdev_vlan_t vlan_del
dao_virtio_netdev_allmulti_cb_t allmulti_cb
dao_virtio_netdev_mac_add_cb_t mac_add
dao_virtio_netdev_mq_cfg_t mq_configure
uint8_t mac[VIRTIO_NET_ETHER_ADDR_LEN]
struct dao_virtio_netdev_link_info link_info
uint16_t max_virt_qps_limit
struct rte_mempool * pool
void *qs[DAO_VIRTIO_MAX_QUEUES] __rte_cache_aligned