diff --git a/gns3server/compute/qemu/qemu_vm.py b/gns3server/compute/qemu/qemu_vm.py index 6a8ef00b..2a111021 100644 --- a/gns3server/compute/qemu/qemu_vm.py +++ b/gns3server/compute/qemu/qemu_vm.py @@ -2150,6 +2150,8 @@ class QemuVM(BaseNode): else: # newer QEMU networking syntax device_string = "{},mac={}".format(adapter_type, mac) + if adapter_type == "virtio-net-pci": + device_string = "{},speed=10000,duplex=full".format(device_string) bridge_id = math.floor(pci_device_id / 32) if bridge_id > 0: if pci_bridges_created < bridge_id: diff --git a/tests/compute/qemu/test_qemu_vm.py b/tests/compute/qemu/test_qemu_vm.py index 38a71ccf..8e67e8b7 100644 --- a/tests/compute/qemu/test_qemu_vm.py +++ b/tests/compute/qemu/test_qemu_vm.py @@ -737,6 +737,20 @@ async def test_build_command_large_number_of_adapters(vm): await vm._build_command() +async def test_build_command_with_virtio_net_pci_adapter(vm): + """ + Test virtio-net-pci adapter which has parameters speed=1000 & duplex=full hard-coded + """ + + vm.manager.get_qemu_version = AsyncioMagicMock(return_value="2.4.0") + vm.adapters = 1 + vm.mac_address = "00:00:ab:0e:0f:09" + vm._adapter_type = "virtio-net-pci" + with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()): + cmd = await vm._build_command() + assert "virtio-net-pci,mac=00:00:ab:0e:0f:09,speed=10000,duplex=full,netdev=gns3-0" in cmd + + @pytest.mark.skipif(sys.platform.startswith("win"), reason="Not supported on Windows") async def test_build_command_with_invalid_options(vm):