diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 88324945ef..26c6e9b2e1 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -10339,6 +10339,15 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, goto endjob; } + /* If the old bandwidth was cleared out, restore qdisc. */ + if (virDomainNetTypeSharesHostView(net)) { + if (!newBandwidth->out || newBandwidth->out->average == 0) + qemuDomainInterfaceSetDefaultQDisc(driver, net); + } else { + if (!newBandwidth->in || newBandwidth->in->average == 0) + qemuDomainInterfaceSetDefaultQDisc(driver, net); + } + virNetDevBandwidthFree(net->bandwidth); if (newBandwidth->in || newBandwidth->out) { net->bandwidth = newBandwidth; diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index e5848d7de4..ec5c522000 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -3881,6 +3881,15 @@ qemuDomainChangeNet(virQEMUDriverPtr driver, */ virNetDevBandwidthClear(newdev->ifname); } + + /* If the old bandwidth was cleared out, restore qdisc. */ + if (virDomainNetTypeSharesHostView(newdev)) { + if (!newb->out || newb->out->average == 0) + qemuDomainInterfaceSetDefaultQDisc(driver, newdev); + } else { + if (!newb->in || newb->in->average == 0) + qemuDomainInterfaceSetDefaultQDisc(driver, newdev); + } needReplaceDevDef = true; }