On 08/22/2013 04:36 AM, Michal Privoznik wrote: > If user requested multiqueue networking, beside multiple /dev/tap and > /dev/vhost-net openings, we forgot to pass mq=on onto the -device > virtio-net-pci command line. This is advised at: > > http://www.linux-kvm.org/page/Multiqueue#Enable_MQ_feature > --- > > Notes: > Maybe worth backporting to maintainer branches too. The MQ was introduced in > the 1.0.6 release. > > src/qemu/qemu_command.c | 7 ++++++- > src/qemu/qemu_command.h | 1 + > src/qemu/qemu_hotplug.c | 4 +++- > 3 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > index f151173..d73872a 100644 > --- a/src/qemu/qemu_command.c > +++ b/src/qemu/qemu_command.c > @@ -4730,6 +4730,7 @@ qemuBuildNicDevStr(virDomainDefPtr def, > virDomainNetDefPtr net, > int vlan, > int bootindex, > + bool multiqueue, > virQEMUCapsPtr qemuCaps) > { > virBuffer buf = VIR_BUFFER_INITIALIZER; > @@ -4782,6 +4783,8 @@ qemuBuildNicDevStr(virDomainDefPtr def, > virDomainVirtioEventIdxTypeToString(net->driver.virtio.event_idx)); > } > } > + if (usingVirtio && multiqueue) > + virBufferAddLit(&buf, ",mq=on"); > if (vlan == -1) > virBufferAsprintf(&buf, ",netdev=host%s", net->info.alias); > else > @@ -7275,7 +7278,9 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd, > virCommandAddArgList(cmd, "-netdev", host, NULL); > } > if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE)) { > - if (!(nic = qemuBuildNicDevStr(def, net, vlan, bootindex, qemuCaps))) > + bool multiqueue = tapfdSize > 1 || vhostfdSize > 1; > + if (!(nic = qemuBuildNicDevStr(def, net, vlan, bootindex, usually we put a blank line between variable declarations and code. > + multiqueue, qemuCaps))) > goto cleanup; > virCommandAddArgList(cmd, "-device", nic, NULL); > } else { > diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h > index 5c5c025..a9854a3 100644 > --- a/src/qemu/qemu_command.h > +++ b/src/qemu/qemu_command.h > @@ -102,6 +102,7 @@ char * qemuBuildNicDevStr(virDomainDefPtr def, > virDomainNetDefPtr net, > int vlan, > int bootindex, > + bool multiqueue, > virQEMUCapsPtr qemuCaps); > > char *qemuDeviceDriveHostAlias(virDomainDiskDefPtr disk, > diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c > index 478f331..b49073b 100644 > --- a/src/qemu/qemu_hotplug.c > +++ b/src/qemu/qemu_hotplug.c > @@ -859,7 +859,9 @@ int qemuDomainAttachNetDevice(virConnectPtr conn, > } > > if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE)) { > - if (!(nicstr = qemuBuildNicDevStr(vm->def, net, vlan, 0, priv->qemuCaps))) > + bool multiqueue = tapfdSize > 1 || vhostfdSize > 1; > + if (!(nicstr = qemuBuildNicDevStr(vm->def, net, vlan, 0, Same comment here. ACK with those two blank lines added. > + multiqueue, priv->qemuCaps))) > goto try_remove; > } else { > if (!(nicstr = qemuBuildNicStr(net, NULL, vlan))) -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list