summaryrefslogtreecommitdiffstats
path: root/src/vnet/devices/virtio
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/devices/virtio')
-rw-r--r--src/vnet/devices/virtio/virtio.api31
-rw-r--r--src/vnet/devices/virtio/virtio_api.c6
2 files changed, 21 insertions, 16 deletions
diff --git a/src/vnet/devices/virtio/virtio.api b/src/vnet/devices/virtio/virtio.api
index f2a3a412126..b191810d71b 100644
--- a/src/vnet/devices/virtio/virtio.api
+++ b/src/vnet/devices/virtio/virtio.api
@@ -13,13 +13,17 @@
* limitations under the License.
*/
-option version = "1.0.0";
+option version = "2.0.0";
+
+import "vnet/interface_types.api";
+import "vnet/ethernet/ethernet_types.api";
+import "vnet/pci/pci_types.api";
+
/** \brief Initialize a new virtio pci interface with the given parameters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
- @param pci_addr - pci address as unsigned 32bit integer:
- 0-15 domain, 16-23 bus, 24-28 slot, 29-31 function
+ @param pci_addr - pci address
@param use_random_mac - let the system generate a unique mac address
@param mac_address - mac addr to assign to the interface if use_random not set
@param gso_enabled - enable gso feature if available, 1 to enable
@@ -29,10 +33,10 @@ define virtio_pci_create
{
u32 client_index;
u32 context;
- u32 pci_addr;
- u8 use_random_mac;
- u8 mac_address[6];
- u8 gso_enabled;
+ vl_api_pci_address_t pci_addr;
+ bool use_random_mac;
+ vl_api_mac_address_t mac_address;
+ bool gso_enabled;
u64 features;
};
@@ -45,7 +49,7 @@ define virtio_pci_create_reply
{
u32 context;
i32 retval;
- u32 sw_if_index;
+ vl_api_interface_index_t sw_if_index;
};
/** \brief Delete virtio pci interface
@@ -57,7 +61,7 @@ autoreply define virtio_pci_delete
{
u32 client_index;
u32 context;
- u32 sw_if_index;
+ vl_api_interface_index_t sw_if_index;
};
/** \brief Dump virtio pci interfaces request */
@@ -69,8 +73,7 @@ define sw_interface_virtio_pci_dump
/** \brief Reply for virtio pci interface dump request
@param sw_if_index - software index of virtio pci interface
- @param pci_addr - pci address as unsigned 32bit integer:
- 0-15 domain, 16-23 bus, 24-28 slot, 29-31 function
+ @param pci_addr - pci address
@param mac_addr - native virtio device mac address
@param tx_ring_sz - the number of entries of TX ring
@param rx_ring_sz - the number of entries of RX ring
@@ -79,9 +82,9 @@ define sw_interface_virtio_pci_dump
define sw_interface_virtio_pci_details
{
u32 context;
- u32 sw_if_index;
- u32 pci_addr;
- u8 mac_addr[6];
+ vl_api_interface_index_t sw_if_index;
+ vl_api_pci_address_t pci_addr;
+ vl_api_mac_address_t mac_addr;
u16 tx_ring_sz;
u16 rx_ring_sz;
u64 features;
diff --git a/src/vnet/devices/virtio/virtio_api.c b/src/vnet/devices/virtio/virtio_api.c
index 9d009f37a38..ac167e827c6 100644
--- a/src/vnet/devices/virtio/virtio_api.c
+++ b/src/vnet/devices/virtio/virtio_api.c
@@ -25,6 +25,7 @@
#include <vnet/ip/ip.h>
#include <vnet/devices/virtio/virtio.h>
#include <vnet/devices/virtio/pci.h>
+#include <vnet/pci/pci_types_api.h>
#include <vnet/vnet_msg_enum.h>
@@ -59,7 +60,7 @@ vl_api_virtio_pci_create_t_handler (vl_api_virtio_pci_create_t * mp)
clib_memset (ap, 0, sizeof (*ap));
- ap->addr = ntohl (mp->pci_addr);
+ pci_address_decode (&mp->pci_addr, (vlib_pci_addr_t *) & ap->addr);
if (!mp->use_random_mac)
{
clib_memcpy (ap->mac_addr, mp->mac_address, 6);
@@ -136,7 +137,8 @@ virtio_pci_send_sw_interface_details (vpe_api_main_t * am,
clib_memset (mp, 0, sizeof (*mp));
mp->_vl_msg_id = htons (VL_API_SW_INTERFACE_VIRTIO_PCI_DETAILS);
- mp->pci_addr = htonl (vif->pci_addr.as_u32);
+ pci_address_encode ((vlib_pci_addr_t *) & vif->pci_addr.as_u32,
+ &mp->pci_addr);
mp->sw_if_index = htonl (vif->sw_if_index);
virtio_vring_t *vring = vec_elt_at_index (vif->rxq_vrings, 0);
mp->rx_ring_sz = htons (vring->size);