aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Mikus <peter.mikus@icloud.com>2025-01-27 11:35:08 +0100
committerPeter Mikus <peter.mikus@icloud.com>2025-01-28 09:00:07 +0100
commit5b398217260d48eb6535ccb767828ec7474b2117 (patch)
tree2a2b399da37338011d005fc6ab3a39f8ca13bf87
parentf86fd9c72af1ae892b21d83b574795101d681978 (diff)
fix(dpdk): EAL params
Signed-off-by: Peter Mikus <peter.mikus@icloud.com> Change-Id: I47280deb55e200ac4bda9e74b158aa04369648b7
-rw-r--r--resources/libraries/python/DPDK/L3fwdTest.py30
-rw-r--r--resources/libraries/python/DPDK/TestpmdTest.py22
-rw-r--r--resources/libraries/python/DpdkUtil.py80
-rw-r--r--resources/libraries/python/QemuUtils.py10
4 files changed, 74 insertions, 68 deletions
diff --git a/resources/libraries/python/DPDK/L3fwdTest.py b/resources/libraries/python/DPDK/L3fwdTest.py
index f7da7bdb3b..6ffae63bc0 100644
--- a/resources/libraries/python/DPDK/L3fwdTest.py
+++ b/resources/libraries/python/DPDK/L3fwdTest.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2024 Cisco and/or its affiliates.
+# Copyright (c) 2025 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:
@@ -62,14 +62,16 @@ class L3fwdTest:
for node_name, node in nodes.items():
if node["type"] == NodeType.DUT:
if dp_count_int > 1:
- BuiltIn().set_tags('MTHREAD')
+ BuiltIn().set_tags("MTHREAD")
else:
- BuiltIn().set_tags('STHREAD')
+ BuiltIn().set_tags("STHREAD")
BuiltIn().set_tags(
f"{dp_count_int}T{cpu_count_int}C"
)
cpu_dp = compute_resource_info[f"{node_name}_cpu_dp"]
+ cpu_dp = [f"{i+1}@{x}" for i,x in enumerate(cpu_dp.split(","))]
+ cpu_dp = ",".join(cpu_dp)
rxq_count_int = compute_resource_info["rxq_count_int"]
if1 = topology_info[f"{node_name}_pf1"][0]
if2 = topology_info[f"{node_name}_pf2"][0]
@@ -79,7 +81,7 @@ class L3fwdTest:
jumbo=jumbo, tg_flip=tg_flip
)
for node in nodes:
- if u"DUT" in node:
+ if "DUT" in node:
for i in range(3):
try:
L3fwdTest.check_l3fwd(nodes[node])
@@ -126,32 +128,32 @@ class L3fwdTest:
:type jumbo: bool
:type tg_flip: bool
"""
- if node[u"type"] == NodeType.DUT:
+ if node["type"] == NodeType.DUT:
adj_mac0, adj_mac1, if_pci0, if_pci1 = L3fwdTest.get_adj_mac(
nodes, node, if1, if2, tg_flip
)
- lcores = [int(item) for item in lcores_list.split(u",")]
+ lcores = [int(item.split("@")[0]) for item in lcores_list.split(",")]
# prepare the port config param
nb_cores = int(nb_cores)
index = 0
- port_config = ''
+ port_config = ""
for port in range(0, NB_PORTS):
for queue in range(0, int(queue_nums)):
index = 0 if nb_cores == 1 else index
port_config += \
- f"({port}, {queue}, {lcores[index % NB_PORTS]}),"
+ f"({port}, {queue}, {lcores[index % queue_nums]}),"
index += 1
if jumbo:
l3fwd_args = DpdkUtil.get_l3fwd_args(
- eal_corelist=f"1,{lcores_list}",
+ eal_coremap=f"0@1,{lcores_list}",
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
eal_in_memory=True,
- pmd_config=f"\\\"{port_config.rstrip(u',')}\\\"",
+ pmd_config=f"\\\"{port_config.rstrip(',')}\\\"",
pmd_eth_dest_0=f"\\\"0,{adj_mac0}\\\"",
pmd_eth_dest_1=f"\\\"1,{adj_mac1}\\\"",
pmd_parse_ptype=True,
@@ -159,7 +161,7 @@ class L3fwdTest:
)
else:
l3fwd_args = DpdkUtil.get_l3fwd_args(
- eal_corelist=f"1,{lcores_list}",
+ eal_coremap=f"0@1,{lcores_list}",
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
@@ -229,9 +231,9 @@ class L3fwdTest:
if dut_flip:
if_key0, if_key1 = if_key1, if_key0
if tg_flip:
- L3fwdTest.patch_l3fwd(node, u"patch_l3fwd_flip_routes")
+ L3fwdTest.patch_l3fwd(node, "patch_l3fwd_flip_routes")
elif not tg_flip:
- L3fwdTest.patch_l3fwd(node, u"patch_l3fwd_flip_routes")
+ L3fwdTest.patch_l3fwd(node, "patch_l3fwd_flip_routes")
adj_node0, adj_if_key0 = Topology.get_adjacent_node_and_interface(
nodes, node, if_key0
@@ -263,5 +265,5 @@ class L3fwdTest:
f"/entry/{patch}"
message = f"Failed to patch l3fwd at node {node['host']}"
ret_code, stdout, _ = exec_cmd(node, command, timeout=1800)
- if ret_code != 0 and u"Skipping patch." not in stdout:
+ if ret_code != 0 and "Skipping patch." not in stdout:
raise RuntimeError(message)
diff --git a/resources/libraries/python/DPDK/TestpmdTest.py b/resources/libraries/python/DPDK/TestpmdTest.py
index c141851bdc..0548126bfc 100644
--- a/resources/libraries/python/DPDK/TestpmdTest.py
+++ b/resources/libraries/python/DPDK/TestpmdTest.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2024 Cisco and/or its affiliates.
+# Copyright (c) 2025 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:
@@ -66,14 +66,16 @@ class TestpmdTest:
for node_name, node in nodes.items():
if node["type"] == NodeType.DUT:
if dp_count_int > 1:
- BuiltIn().set_tags('MTHREAD')
+ BuiltIn().set_tags("MTHREAD")
else:
- BuiltIn().set_tags('STHREAD')
+ BuiltIn().set_tags("STHREAD")
BuiltIn().set_tags(
f"{dp_count_int}T{cpu_count_int}C"
)
cpu_dp = compute_resource_info[f"{node_name}_cpu_dp"]
+ cpu_dp = [f"{i+1}@{x}" for i,x in enumerate(cpu_dp.split(","))]
+ cpu_dp = ",".join(cpu_dp)
rxq_count_int = compute_resource_info["rxq_count_int"]
if1 = topology_info[f"{node_name}_pf1"][0]
if2 = topology_info[f"{node_name}_pf2"][0]
@@ -134,23 +136,23 @@ class TestpmdTest:
:type txq_size: int
:raises RuntimeError: If the script "run_testpmd.sh" fails.
"""
- if node[u"type"] == NodeType.DUT:
+ if node["type"] == NodeType.DUT:
if_pci0 = Topology.get_interface_pci_addr(node, if1)
if_pci1 = Topology.get_interface_pci_addr(node, if2)
- pmd_max_pkt_len = u"9200" if jumbo else u"1518"
+ pmd_max_pkt_len = "9200" if jumbo else "1518"
testpmd_args = DpdkUtil.get_testpmd_args(
- eal_corelist=f"1,{lcores_list}",
+ eal_coremap=f"0@1,{lcores_list}",
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
eal_in_memory=True,
pmd_num_mbufs=32768,
- pmd_fwd_mode=u"io",
- pmd_nb_ports=u"2",
- pmd_portmask=u"0x3",
+ pmd_fwd_mode="io",
+ pmd_nb_ports="2",
+ pmd_portmask="0x3",
pmd_max_pkt_len=pmd_max_pkt_len,
- pmd_mbuf_size=u"16384",
+ pmd_mbuf_size="16384",
pmd_rxd=rxq_size,
pmd_txd=txq_size,
pmd_rxq=queue_nums,
diff --git a/resources/libraries/python/DpdkUtil.py b/resources/libraries/python/DpdkUtil.py
index 8ee0dde850..932f847c55 100644
--- a/resources/libraries/python/DpdkUtil.py
+++ b/resources/libraries/python/DpdkUtil.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2025 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:
@@ -29,25 +29,25 @@ class DpdkUtil:
:returns: EAL parameters.
:rtype: OptionString
"""
- options = OptionString(prefix=u"-")
- options.add(u"v")
+ options = OptionString(prefix="-")
+ options.add("v")
# Set the hexadecimal bitmask of the cores to run on.
options.add_with_value_from_dict(
- u"l", u"eal_corelist", kwargs
+ "-lcores", "eal_coremap", kwargs
)
# Add a PCI device in white list.
options.add_with_value_from_dict(
- u"a", u"eal_pci_whitelist0", kwargs
+ "a", "eal_pci_whitelist0", kwargs
)
options.add_with_value_from_dict(
- u"a", u"eal_pci_whitelist1", kwargs
+ "a", "eal_pci_whitelist1", kwargs
)
# Load an external driver. Multiple -d options are allowed.
options.add_with_value_if_from_dict(
- u"d", u"/usr/lib/librte_pmd_virtio.so", u"eal_driver", kwargs, True
+ "d", "/usr/lib/librte_pmd_virtio.so", "eal_driver", kwargs, True
)
options.add_if_from_dict(
- u"-in-memory", u"eal_in_memory", kwargs, False
+ "-in-memory", "eal_in_memory", kwargs, False
)
return options
@@ -60,79 +60,79 @@ class DpdkUtil:
:returns: PMD parameters.
:rtype: OptionString
"""
- options = OptionString(prefix=u"--")
+ options = OptionString(prefix="--")
# Set the forwarding mode: io, mac, mac_retry, mac_swap, flowgen,
# rxonly, txonly, csum, icmpecho, ieee1588
options.add_equals_from_dict(
- u"forward-mode", u"pmd_fwd_mode", kwargs, u"io"
+ "forward-mode", "pmd_fwd_mode", kwargs, "io"
)
# Set the number of packets per burst to N.
options.add_equals(
- u"burst", 64
+ "burst", 64
)
# Set the number of descriptors in the TX rings to N.
options.add_equals_from_dict(
- u"txd", u"pmd_txd", kwargs, 1024
+ "txd", "pmd_txd", kwargs, 1024
)
# Set the number of descriptors in the RX rings to N.
options.add_equals_from_dict(
- u"rxd", u"pmd_rxd", kwargs, 1024
+ "rxd", "pmd_rxd", kwargs, 1024
)
# Set the number of queues in the TX to N.
options.add_equals_from_dict(
- u"txq", u"pmd_txq", kwargs, 1
+ "txq", "pmd_txq", kwargs, 1
)
# Set the number of queues in the RX to N.
options.add_equals_from_dict(
- u"rxq", u"pmd_rxq", kwargs, 1
+ "rxq", "pmd_rxq", kwargs, 1
)
# Set the hexadecimal bitmask of offloads.
options.add_equals_from_dict(
- u"tx-offloads", u"pmd_tx_offloads", kwargs, u"0x0"
+ "tx-offloads", "pmd_tx_offloads", kwargs, "0x0"
)
# Enables numa aware allocation of mbufs.
options.add_if_from_dict(
- u"numa", u"pmd_numa", kwargs, True
+ "numa", "pmd_numa", kwargs, True
)
# Run by default.
options.add_if_from_dict(
- u"auto-start", u"pmd_auto_start", kwargs, True
+ "auto-start", "pmd_auto_start", kwargs, True
)
# Set the number of mbufs to be allocated in the mbuf pools.
options.add_equals_from_dict(
- u"total-num-mbufs", u"pmd_num_mbufs", kwargs
+ "total-num-mbufs", "pmd_num_mbufs", kwargs
)
# Set the number of forwarding ports.
options.add_equals_from_dict(
- u"nb-ports", u"pmd_nb_ports", kwargs
+ "nb-ports", "pmd_nb_ports", kwargs
)
# Set the hexadecimal bitmask of the ports used by the packet
# forwarding test.
options.add_equals_from_dict(
- u"portmask", u"pmd_portmask", kwargs
+ "portmask", "pmd_portmask", kwargs
)
# Disable link status check.
options.add_if_from_dict(
- u"disable-link-check", u"pmd_disable_link_check", kwargs, True
+ "disable-link-check", "pmd_disable_link_check", kwargs, True
)
# Set the MAC address XX:XX:XX:XX:XX:XX of the peer port N
options.add_equals_from_dict(
- u"eth-peer", u"pmd_eth_peer_0", kwargs
+ "eth-peer", "pmd_eth_peer_0", kwargs
)
options.add_equals_from_dict(
- u"eth-peer", u"pmd_eth_peer_1", kwargs
+ "eth-peer", "pmd_eth_peer_1", kwargs
)
# Set the max packet length.
options.add_equals_from_dict(
- u"max-pkt-len", u"pmd_max_pkt_len", kwargs
+ "max-pkt-len", "pmd_max_pkt_len", kwargs
)
# Set the mbuf size.
options.add_equals_from_dict(
- u"mbuf-size", u"pmd_mbuf_size", kwargs
+ "mbuf-size", "pmd_mbuf_size", kwargs
)
# Set the number of forwarding cores based on coremask.
options.add_equals_from_dict(
- u"nb-cores", u"pmd_nb_cores", kwargs
+ "nb-cores", "pmd_nb_cores", kwargs
)
return options
@@ -147,7 +147,7 @@ class DpdkUtil:
"""
options = OptionString()
options.extend(DpdkUtil.get_eal_options(**kwargs))
- options.add(u"--")
+ options.add("--")
options.extend(DpdkUtil.get_testpmd_pmd_options(**kwargs))
return options
@@ -161,9 +161,9 @@ class DpdkUtil:
:rtype: OptionString
"""
options = OptionString()
- options.add(u"dpdk-testpmd")
+ options.add("dpdk-testpmd")
options.extend(DpdkUtil.get_eal_options(**kwargs))
- options.add(u"--")
+ options.add("--")
options.extend(DpdkUtil.get_testpmd_pmd_options(**kwargs))
return options
@@ -177,9 +177,9 @@ class DpdkUtil:
:type kwargs: dict
"""
cmd_options = OptionString()
- cmd_options.add(u"/start-testpmd.sh")
+ cmd_options.add("/start-testpmd.sh")
cmd_options.extend(DpdkUtil.get_eal_options(**kwargs))
- cmd_options.add(u"--")
+ cmd_options.add("--")
cmd_options.extend(DpdkUtil.get_testpmd_pmd_options(**kwargs))
exec_cmd_no_error(node, cmd_options, sudo=True, disconnect=True)
@@ -191,7 +191,7 @@ class DpdkUtil:
:type node: dict
:returns: nothing
"""
- cmd = u"/stop-testpmd.sh" # Completed string, simple one.
+ cmd = "/stop-testpmd.sh" # Completed string, simple one.
exec_cmd_no_error(node, cmd, sudo=True, disconnect=True)
@staticmethod
@@ -203,25 +203,25 @@ class DpdkUtil:
:returns: PMD parameters.
:rtype: OptionString
"""
- options = OptionString(prefix=u"--")
+ options = OptionString(prefix="--")
# Set to use software to analyze packet type.
options.add_if_from_dict(
- u"parse-ptype", u"pmd_parse_ptype", kwargs, True
+ "parse-ptype", "pmd_parse_ptype", kwargs, True
)
# Set the MAC address XX:XX:XX:XX:XX:XX of the peer port N.
options.add_equals_from_dict(
- u"eth-dest", u"pmd_eth_dest_0", kwargs
+ "eth-dest", "pmd_eth_dest_0", kwargs
)
options.add_equals_from_dict(
- u"eth-dest", u"pmd_eth_dest_1", kwargs
+ "eth-dest", "pmd_eth_dest_1", kwargs
)
# Determines which queues from which ports are mapped to which cores.
options.add_equals_from_dict(
- u"config", u"pmd_config", kwargs
+ "config", "pmd_config", kwargs
)
# Set the max packet length.
options.add_with_value_if_from_dict(
- u"max-pkt-len", u"9200", u"pmd_max_pkt_len", kwargs, False
+ "max-pkt-len", "9200", "pmd_max_pkt_len", kwargs, False
)
return options
@@ -236,6 +236,6 @@ class DpdkUtil:
"""
options = OptionString()
options.extend(DpdkUtil.get_eal_options(**kwargs))
- options.add(u"--")
+ options.add("--")
options.extend(DpdkUtil.get_l3fwd_pmd_options(**kwargs))
return options
diff --git a/resources/libraries/python/QemuUtils.py b/resources/libraries/python/QemuUtils.py
index 8dac06001c..d538e1fb0a 100644
--- a/resources/libraries/python/QemuUtils.py
+++ b/resources/libraries/python/QemuUtils.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2024-2024 Cisco and/or its affiliates.
+# Copyright (c) 2025 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:
@@ -371,9 +371,10 @@ class QemuUtils:
:param kwargs: Key-value pairs to construct command line parameters.
:type kwargs: dict
"""
- pmd_max_pkt_len = u"9200" if kwargs[u"jumbo"] else u"1518"
+ pmd_max_pkt_len = "9200" if kwargs["jumbo"] else "1518"
+ eal_coremap = ",".join([str(x) for x in range(self._opt.get("smp"))])
testpmd_cmd = DpdkUtil.get_testpmd_cmdline(
- eal_corelist=f"0-{self._opt.get(u'smp') - 1}",
+ eal_coremap=eal_coremap,
eal_driver=False,
eal_pci_whitelist0=u"0000:00:06.0",
eal_pci_whitelist1=u"0000:00:07.0",
@@ -399,8 +400,9 @@ class QemuUtils:
:type kwargs: dict
"""
pmd_max_pkt_len = u"9200" if kwargs[u"jumbo"] else u"1518"
+ eal_coremap = ",".join([str(x) for x in range(self._opt.get("smp"))])
testpmd_cmd = DpdkUtil.get_testpmd_cmdline(
- eal_corelist=f"0-{self._opt.get(u'smp') - 1}",
+ eal_coremap=eal_coremap,
eal_driver=False,
eal_pci_whitelist0=u"0000:00:06.0",
eal_pci_whitelist1=u"0000:00:07.0",