summaryrefslogtreecommitdiffstats
path: root/src/vat
diff options
context:
space:
mode:
Diffstat (limited to 'src/vat')
-rw-r--r--src/vat/api_format.c62
1 files changed, 51 insertions, 11 deletions
diff --git a/src/vat/api_format.c b/src/vat/api_format.c
index c9e0b62c530..bbe5a04df33 100644
--- a/src/vat/api_format.c
+++ b/src/vat/api_format.c
@@ -1829,6 +1829,41 @@ static void vl_api_virtio_pci_create_reply_t_handler_json
}
static void
+ vl_api_virtio_pci_create_v2_reply_t_handler
+ (vl_api_virtio_pci_create_v2_reply_t * mp)
+{
+ vat_main_t *vam = &vat_main;
+ i32 retval = ntohl (mp->retval);
+ if (vam->async_mode)
+ {
+ vam->async_errors += (retval < 0);
+ }
+ else
+ {
+ vam->retval = retval;
+ vam->sw_if_index = ntohl (mp->sw_if_index);
+ vam->result_ready = 1;
+ }
+}
+
+static void vl_api_virtio_pci_create_v2_reply_t_handler_json
+ (vl_api_virtio_pci_create_v2_reply_t * mp)
+{
+ vat_main_t *vam = &vat_main;
+ vat_json_node_t node;
+
+ vat_json_init_object (&node);
+ vat_json_object_add_int (&node, "retval", ntohl (mp->retval));
+ vat_json_object_add_uint (&node, "sw_if_index", ntohl (mp->sw_if_index));
+
+ vat_json_print (vam->ofp, &node);
+ vat_json_free (&node);
+
+ vam->retval = ntohl (mp->retval);
+ vam->result_ready = 1;
+}
+
+static void
vl_api_virtio_pci_delete_reply_t_handler (vl_api_virtio_pci_delete_reply_t *
mp)
{
@@ -5242,6 +5277,7 @@ _(TAP_CREATE_V2_REPLY, tap_create_v2_reply) \
_(TAP_DELETE_V2_REPLY, tap_delete_v2_reply) \
_(SW_INTERFACE_TAP_V2_DETAILS, sw_interface_tap_v2_details) \
_(VIRTIO_PCI_CREATE_REPLY, virtio_pci_create_reply) \
+_(VIRTIO_PCI_CREATE_V2_REPLY, virtio_pci_create_v2_reply) \
_(VIRTIO_PCI_DELETE_REPLY, virtio_pci_delete_reply) \
_(SW_INTERFACE_VIRTIO_PCI_DETAILS, sw_interface_virtio_pci_details) \
_(BOND_CREATE_REPLY, bond_create_reply) \
@@ -7563,16 +7599,15 @@ unformat_vlib_pci_addr (unformat_input_t * input, va_list * args)
}
static int
-api_virtio_pci_create (vat_main_t * vam)
+api_virtio_pci_create_v2 (vat_main_t * vam)
{
unformat_input_t *i = vam->input;
- vl_api_virtio_pci_create_t *mp;
+ vl_api_virtio_pci_create_v2_t *mp;
u8 mac_address[6];
u8 random_mac = 1;
- u8 gso_enabled = 0;
- u8 checksum_offload_enabled = 0;
u32 pci_addr = 0;
u64 features = (u64) ~ (0ULL);
+ u32 virtio_flags = 0;
int ret;
clib_memset (mac_address, 0, sizeof (mac_address));
@@ -7589,9 +7624,15 @@ api_virtio_pci_create (vat_main_t * vam)
else if (unformat (i, "features 0x%llx", &features))
;
else if (unformat (i, "gso-enabled"))
- gso_enabled = 1;
+ virtio_flags |= VIRTIO_API_FLAG_GSO;
else if (unformat (i, "csum-offload-enabled"))
- checksum_offload_enabled = 1;
+ virtio_flags |= VIRTIO_API_FLAG_CSUM_OFFLOAD;
+ else if (unformat (i, "gro-coalesce"))
+ virtio_flags |= VIRTIO_API_FLAG_GRO_COALESCE;
+ else if (unformat (i, "packed"))
+ virtio_flags |= VIRTIO_API_FLAG_PACKED;
+ else if (unformat (i, "in-order"))
+ virtio_flags |= VIRTIO_API_FLAG_IN_ORDER;
else
break;
}
@@ -7603,7 +7644,7 @@ api_virtio_pci_create (vat_main_t * vam)
}
/* Construct the API message */
- M (VIRTIO_PCI_CREATE, mp);
+ M (VIRTIO_PCI_CREATE_V2, mp);
mp->use_random_mac = random_mac;
@@ -7613,8 +7654,7 @@ api_virtio_pci_create (vat_main_t * vam)
mp->pci_addr.function = ((vlib_pci_addr_t) pci_addr).function;
mp->features = clib_host_to_net_u64 (features);
- mp->gso_enabled = gso_enabled;
- mp->checksum_offload_enabled = checksum_offload_enabled;
+ mp->virtio_flags = clib_host_to_net_u32 (virtio_flags);
if (random_mac == 0)
clib_memcpy (mp->mac_address, mac_address, 6);
@@ -20667,8 +20707,8 @@ _(tap_create_v2, \
_(tap_delete_v2, \
"<vpp-if-name> | sw_if_index <id>") \
_(sw_interface_tap_v2_dump, "") \
-_(virtio_pci_create, \
- "pci-addr <pci-address> [use_random_mac | hw-addr <mac-addr>] [features <hex-value>] [gso-enabled | csum-offload-enabled]") \
+_(virtio_pci_create_v2, \
+ "pci-addr <pci-address> [use_random_mac | hw-addr <mac-addr>] [features <hex-value>] [gso-enabled [gro-coalesce] | csum-offload-enabled] [packed] [in-order]") \
_(virtio_pci_delete, \
"<vpp-if-name> | sw_if_index <id>") \
_(sw_interface_virtio_pci_dump, "") \