-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
self._opt[u"machine_args"] = \
u"virt,accel=kvm,usb=off,mem-merge=off,gic-version=3"
self._opt[u"console"] = u"ttyAMA0"
- self._opt[u"unsafe_iommu"] = u"echo Y > /sys/module/vfio/para" \
- u"meters/enable_unsafe_noiommu_mode"
else:
dpdk_target = u"x86_64-native"
self._opt[u"machine_args"] = u"pc,accel=kvm,usb=off,mem-merge=off"
self._opt[u"console"] = u"ttyS0"
- self._opt[u"unsafe_iommu"] = u""
-
self._testpmd_path = f"{Constants.QEMU_VM_DPDK}/" \
f"{dpdk_target}-linux-gcc/app"
self._vm_info = {
self._opt[u"vnf"] = vnf
# Temporary files.
self._temp = dict()
- self._temp[u"pidfile"] = f"/var/run/qemu_{qemu_id}.pid"
+ self._temp[u"pidfile"] = f"/run/qemu_{qemu_id}.pid"
if img == Constants.QEMU_VM_IMAGE:
self._opt[u"vm_type"] = u"nestedvm"
- self._temp[u"qmp"] = f"/var/run/qmp_{qemu_id}.sock"
- self._temp[u"qga"] = f"/var/run/qga_{qemu_id}.sock"
+ self._temp[u"qmp"] = f"/run/qmp_{qemu_id}.sock"
+ self._temp[u"qga"] = f"/run/qga_{qemu_id}.sock"
elif img == Constants.QEMU_VM_KERNEL:
self._opt[u"img"], _ = exec_cmd_no_error(
node, f"ls -1 {Constants.QEMU_VM_KERNEL}* | tail -1",
if not kwargs[u"jumbo_frames"]:
vpp_config.add_dpdk_no_multi_seg()
vpp_config.add_dpdk_no_tx_checksum_offload()
- vpp_config.add_plugin(u"disable", [u"default"])
- vpp_config.add_plugin(u"enable", [u"dpdk_plugin.so"])
+ vpp_config.add_plugin(u"disable", u"default")
+ vpp_config.add_plugin(u"enable", u"dpdk_plugin.so")
vpp_config.write_config(startup)
# Create VPP running configuration.
:param kwargs: Key-value pairs to construct command line parameters.
:type kwargs: dict
"""
+ pmd_max_pkt_len = u"9200" if kwargs[u"jumbo_frames"] else u"1518"
testpmd_cmd = DpdkUtil.get_testpmd_cmdline(
eal_corelist=f"0-{self._opt.get(u'smp') - 1}",
eal_driver=False,
+ eal_pci_whitelist0=u"0000:00:06.0",
+ eal_pci_whitelist1=u"0000:00:07.0",
eal_in_memory=True,
pmd_num_mbufs=16384,
+ pmd_fwd_mode=u"io",
+ pmd_nb_ports=u"2",
+ pmd_portmask=u"0x3",
+ pmd_max_pkt_len=pmd_max_pkt_len,
+ pmd_mbuf_size=u"16384",
pmd_rxq=kwargs[u"queues"],
pmd_txq=kwargs[u"queues"],
pmd_tx_offloads='0x0',
- pmd_disable_hw_vlan=False,
pmd_nb_cores=str(self._opt.get(u"smp") - 1)
)
:param kwargs: Key-value pairs to construct command line parameters.
:type kwargs: dict
"""
+ pmd_max_pkt_len = u"9200" if kwargs[u"jumbo_frames"] else u"1518"
testpmd_cmd = DpdkUtil.get_testpmd_cmdline(
eal_corelist=f"0-{self._opt.get(u'smp') - 1}",
eal_driver=False,
+ eal_pci_whitelist0=u"0000:00:06.0",
+ eal_pci_whitelist1=u"0000:00:07.0",
eal_in_memory=True,
pmd_num_mbufs=16384,
pmd_fwd_mode=u"mac",
+ pmd_nb_ports=u"2",
+ pmd_portmask=u"0x3",
+ pmd_max_pkt_len=pmd_max_pkt_len,
+ pmd_mbuf_size=u"16384",
pmd_eth_peer_0=f"0,{kwargs[u'vif1_mac']}",
pmd_eth_peer_1=f"1,{kwargs[u'vif2_mac']}",
pmd_rxq=kwargs[u"queues"],
pmd_txq=kwargs[u"queues"],
pmd_tx_offloads=u"0x0",
- pmd_disable_hw_vlan=False,
pmd_nb_cores=str(self._opt.get(u"smp") - 1)
)
self.create_kernelvm_config_testpmd_mac(**kwargs)
else:
raise RuntimeError(u"QEMU: Unsupported VNF!")
- self.create_kernelvm_init(vnf_bin=self._opt.get(u"vnf_bin"),
- unsafe_iommu=self._opt.get(u"unsafe_iommu"))
+ self.create_kernelvm_init(vnf_bin=self._opt.get(u"vnf_bin"))
def get_qemu_pids(self):
"""Get QEMU CPU pids.
f"addr={self._vhost_id+5}.0,mq=on,vectors={2 * queues + 2},"
f"csum={u'on' if csum else u'off'},gso={u'on' if gso else u'off'},"
f"guest_tso4=off,guest_tso6=off,guest_ecn=off,"
- f"mrg_rxbuf={u'on,host_mtu=9200' if jumbo_frames else u'off'},"
f"{queue_size}"
)