Added qemu's property check for virtio-net.
And added capability QEMU_CAPS_VIRTIO_RSS.
With "rss" and "rss_hash_report" from domain config,
qemu should enable "rss" and "hash" for virtio-net.
Signed-off-by: Andrew Melnychenko <andrew(a)daynix.com>
---
src/qemu/qemu_capabilities.c | 2 ++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_validate.c | 16 ++++++++++++++++
3 files changed, 19 insertions(+)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 9558938866..7cd6dab259 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -637,6 +637,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
"confidential-guest-support",
"query-display-options",
"s390-pv-guest",
+ "virtio-net.rss",
);
@@ -1421,6 +1422,7 @@ static struct virQEMUCapsDevicePropsFlags
virQEMUCapsDevicePropsVirtioNet[] = {
{ "failover", QEMU_CAPS_VIRTIO_NET_FAILOVER, NULL },
{ "packed", QEMU_CAPS_VIRTIO_PACKED_QUEUES, NULL },
{ "acpi-index", QEMU_CAPS_ACPI_INDEX, NULL },
+ { "rss", QEMU_CAPS_VIRTIO_RSS, NULL },
};
static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsPCIeRootPort[] = {
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 2b1bb57a49..6b2446fe5f 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -617,6 +617,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check
*/
QEMU_CAPS_MACHINE_CONFIDENTAL_GUEST_SUPPORT, /* -machine confidential-guest-support
*/
QEMU_CAPS_QUERY_DISPLAY_OPTIONS, /* 'query-display-options' qmp command
present */
QEMU_CAPS_S390_PV_GUEST, /* -object s390-pv-guest,... */
+ QEMU_CAPS_VIRTIO_RSS, /* virtio-net rss feature */
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index a964c8593d..265938a99f 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -1607,6 +1607,22 @@ qemuValidateDomainDeviceDefNetwork(const virDomainNetDef *net,
}
}
+ if (net->driver.virtio.rss &&
+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_RSS)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("virtio rss is not supported with this "
+ "QEMU binary"));
+ return -1;
+ }
+
+ if (net->driver.virtio.rss_hash_report &&
+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_RSS)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("virtio rss hash report is not supported with this
"
+ "QEMU binary"));
+ return -1;
+ }
+
if (net->mtu &&
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_NET_HOST_MTU)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
--
2.31.1