#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