#include <dao_virtio.h>
#include <dao_util.h>
#include <spec/virtio_net.h>
Go to the source code of this file.
|
typedef uint16_t(* | dao_virtio_net_deq_fn_t) (void *q, struct rte_mbuf **mbufs, uint16_t nb_mbufs) |
|
typedef uint16_t(* | dao_virtio_net_enq_fn_t) (void *q, struct rte_mbuf **mbufs, uint16_t nb_mbufs) |
|
typedef int(* | dao_net_desc_manage_fn_t) (uint16_t devid, uint16_t qp_count) |
|
typedef uint16_t(* | dao_virtio_net_deq_ext_fn_t) (void *q, void **vbufs, uint16_t nb_bufs) |
|
typedef uint16_t(* | dao_virtio_net_enq_ext_fn_t) (void *q, void **vbufs, uint16_t nb_bufs) |
|
typedef int(* | dao_virtio_netdev_rss_cb_t) (uint16_t devid, struct virtio_net_ctrl_rss *rss) |
|
typedef int(* | dao_virtio_netdev_status_cb_t) (uint16_t devid, uint8_t status) |
|
typedef int(* | dao_virtio_netdev_promisc_cb_t) (uint16_t devid, uint8_t enable) |
|
typedef int(* | dao_virtio_netdev_allmulti_cb_t) (uint16_t devid, uint8_t enable) |
|
typedef int(* | dao_virtio_netdev_mac_set_cb_t) (uint16_t devid, uint8_t *mac) |
|
typedef int(* | dao_virtio_netdev_mac_add_cb_t) (uint16_t devid, struct virtio_net_ctrl_mac *mac_tbl, uint8_t type) |
|
typedef int(* | dao_virtio_netdev_mq_cfg_t) (uint16_t devid, bool qmap_set) |
|
typedef int(* | dao_virtio_netdev_vlan_t) (uint16_t devid, uint16_t vlan_tci) |
|
|
int | dao_virtio_netdev_init (uint16_t devid, struct dao_virtio_netdev_conf *conf) |
|
int | dao_virtio_netdev_fini (uint16_t devid) |
|
void | dao_virtio_netdev_cb_register (struct dao_virtio_netdev_cbs *cbs) |
|
void | dao_virtio_netdev_cb_unregister (void) |
|
int | dao_virtio_netdev_queue_count (uint16_t devid) |
|
uint64_t | dao_virtio_netdev_feature_bits_get (uint16_t devid) |
|
int | dao_virtio_netdev_queue_count_max (uint16_t pem_devid, uint16_t devid) |
|
int | dao_virtio_netdev_link_sts_update (uint16_t devid, struct dao_virtio_netdev_link_info *info) |
|
uint8_t | dao_virtio_netdev_hdrlen_get (uint16_t devid) |
|
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) |
|
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) |
|
static __rte_always_inline uint16_t | dao_virtio_net_dequeue_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_ext (uint16_t devid, uint16_t qid, void **vbufs, uint16_t nb_bufs) |
|
DAO virtio net library
Definition in file dao_virtio_netdev.h.
◆ DAO_VIRTIO_NETDEV_EXTBUF
◆ DAO_VIRTIO_NETDEV_MEM_SZ
#define DAO_VIRTIO_NETDEV_MEM_SZ 8192 |
◆ dao_virtio_net_deq_fn_t
typedef uint16_t(* dao_virtio_net_deq_fn_t) (void *q, struct rte_mbuf **mbufs, uint16_t nb_mbufs) |
◆ dao_virtio_net_enq_fn_t
typedef uint16_t(* dao_virtio_net_enq_fn_t) (void *q, struct rte_mbuf **mbufs, uint16_t nb_mbufs) |
◆ dao_net_desc_manage_fn_t
typedef int(* dao_net_desc_manage_fn_t) (uint16_t devid, uint16_t qp_count) |
◆ dao_virtio_net_deq_ext_fn_t
typedef uint16_t(* dao_virtio_net_deq_ext_fn_t) (void *q, void **vbufs, uint16_t nb_bufs) |
◆ dao_virtio_net_enq_ext_fn_t
typedef uint16_t(* dao_virtio_net_enq_ext_fn_t) (void *q, void **vbufs, uint16_t nb_bufs) |
◆ dao_virtio_netdev_rss_cb_t
typedef int(* dao_virtio_netdev_rss_cb_t) (uint16_t devid, struct virtio_net_ctrl_rss *rss) |
◆ dao_virtio_netdev_status_cb_t
typedef int(* dao_virtio_netdev_status_cb_t) (uint16_t devid, uint8_t status) |
◆ dao_virtio_netdev_promisc_cb_t
typedef int(* dao_virtio_netdev_promisc_cb_t) (uint16_t devid, uint8_t enable) |
◆ dao_virtio_netdev_allmulti_cb_t
typedef int(* dao_virtio_netdev_allmulti_cb_t) (uint16_t devid, uint8_t enable) |
◆ dao_virtio_netdev_mac_set_cb_t
typedef int(* dao_virtio_netdev_mac_set_cb_t) (uint16_t devid, uint8_t *mac) |
◆ dao_virtio_netdev_mac_add_cb_t
typedef int(* dao_virtio_netdev_mac_add_cb_t) (uint16_t devid, struct virtio_net_ctrl_mac *mac_tbl, uint8_t type) |
◆ dao_virtio_netdev_mq_cfg_t
typedef int(* dao_virtio_netdev_mq_cfg_t) (uint16_t devid, bool qmap_set) |
◆ dao_virtio_netdev_vlan_t
typedef int(* dao_virtio_netdev_vlan_t) (uint16_t devid, uint16_t vlan_tci) |
◆ dao_virtio_netdev_init()
Virtio net device initialize.
- Parameters
-
devid | Virtio net device ID |
conf | Virtio net device config. |
- Returns
- Zero on success.
◆ dao_virtio_netdev_fini()
int dao_virtio_netdev_fini |
( |
uint16_t |
devid | ) |
|
Virtio net device cleanup.
- Parameters
-
devid | Virtio net device ID |
- Returns
- Zero on success.
◆ dao_virtio_netdev_cb_register()
Virtio net device callback register
- Parameters
-
cbs | Application callbacks for virtio net devices |
◆ dao_virtio_netdev_cb_unregister()
void dao_virtio_netdev_cb_unregister |
( |
void |
| ) |
|
Virtio net device callback unregister
◆ dao_virtio_netdev_queue_count()
int dao_virtio_netdev_queue_count |
( |
uint16_t |
devid | ) |
|
Get net device queue count.
- Parameters
-
devid | Virtio net device ID. |
- Returns
- Number of virtio queues configured on success. Negative on failure.
◆ dao_virtio_netdev_feature_bits_get()
uint64_t dao_virtio_netdev_feature_bits_get |
( |
uint16_t |
devid | ) |
|
Get net device feature bits.
- Parameters
-
devid | Virtio net device ID. |
- Returns
- Configured feature bits on success. Zero on failure.
◆ dao_virtio_netdev_queue_count_max()
int dao_virtio_netdev_queue_count_max |
( |
uint16_t |
pem_devid, |
|
|
uint16_t |
devid |
|
) |
| |
Get net device queue count max.
API can be called before initializing virtio device.
- Parameters
-
pem_devid | PEM device ID. |
devid | Virtio net device ID. |
- Returns
- Max support virtio queue count on this device on success. Negative on failure.
◆ dao_virtio_netdev_link_sts_update()
Update link status of netdev.
- Parameters
-
devid | Virtio net device ID. |
info | Virtio net device link info. |
- Returns
- Zero on success. Negative on failure.
◆ dao_virtio_netdev_hdrlen_get()
uint8_t dao_virtio_netdev_hdrlen_get |
( |
uint16_t |
devid | ) |
|
Get virtio net device header length.
- Parameters
-
devid | Virtio net device ID. |
- Returns
- Configured virtio net header size on success. Zero on failure.
◆ dao_virtio_net_desc_manage()
static __rte_always_inline int dao_virtio_net_desc_manage |
( |
uint16_t |
devid, |
|
|
uint16_t |
qp_count |
|
) |
| |
|
static |
Fetch virtio netdev 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 net device ID. |
qp_count | Number of queue pairs to manage. |
- Returns
- Zero on success.
Definition at line 285 of file dao_virtio_netdev.h.
◆ dao_virtio_net_dequeue_burst()
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 |
|
) |
| |
|
static |
Virtio netdev receive from Host
- Parameters
-
devid | Virtio net device ID. |
qid | Virtio queue id in range of { 1, 3, 5, ... N + 1} as they are host Tx queue id's. |
mbufs | Array to store mbuf pointers of received pkts. |
nb_mbufs | Size of mbuf array. |
- Returns
- Number of mbufs received from host.
Definition at line 309 of file dao_virtio_netdev.h.
◆ dao_virtio_net_enqueue_burst()
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 |
|
) |
| |
|
static |
Virtio netdev send to Host
- Parameters
-
devid | Virtio net device ID. |
qid | Virtio queue id in range of { 0, 2, 4, ... N } as they are host Rx queue id's. |
mbufs | Array of mbuf pointers of pkts to send to host. |
nb_mbufs | Number of pkts to send. |
- Returns
- Number of mbufs sent to host.
Definition at line 339 of file dao_virtio_netdev.h.
◆ dao_virtio_net_dequeue_burst_ext()
static __rte_always_inline uint16_t dao_virtio_net_dequeue_burst_ext |
( |
uint16_t |
devid, |
|
|
uint16_t |
qid, |
|
|
void ** |
vbufs, |
|
|
uint16_t |
nb_bufs |
|
) |
| |
|
static |
Virtio netdev receive raw buffers from Host
- Parameters
-
devid | Virtio net device ID. |
qid | Virtio queue id in range of { 1, 3, 5, ... N + 1} as they are host Tx queue id's. |
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 369 of file dao_virtio_netdev.h.
◆ dao_virtio_net_enqueue_burst_ext()
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 |
Virtio netdev send raw buffers to Host
- Parameters
-
devid | Virtio net device ID. |
qid | Virtio queue id in range of { 0, 2, 4, ... N } as they are host Rx queue id's. |
vbufs | Array of buffer pointers to send to host. |
nb_bufs | Number of buffers to send. |
- Returns
- Number of buffers sent to host.
Definition at line 398 of file dao_virtio_netdev.h.
◆ dao_virtio_netdevs
◆ dao_virtio_net_deq_fns
Array of dequeue functions
◆ dao_virtio_net_enq_fns
Array of enqueue functions
◆ dao_net_desc_manage_fns
Array of management functions
◆ dao_virtio_net_deq_ext_fns
Array of dequeue external buf functions
◆ dao_virtio_net_enq_ext_fns
Array of enqueue external buf functions