fix(dpdk): EAL params 53/42253/5
authorPeter Mikus <[email protected]>
Mon, 27 Jan 2025 10:35:08 +0000 (11:35 +0100)
committerPeter Mikus <[email protected]>
Tue, 28 Jan 2025 08:00:07 +0000 (09:00 +0100)
Signed-off-by: Peter Mikus <[email protected]>
Change-Id: I47280deb55e200ac4bda9e74b158aa04369648b7

resources/libraries/python/DPDK/L3fwdTest.py
resources/libraries/python/DPDK/TestpmdTest.py
resources/libraries/python/DpdkUtil.py
resources/libraries/python/QemuUtils.py

index f7da7bd..6ffae63 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2024 Cisco and/or its affiliates.
+# Copyright (c) 202 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)
index c141851..0548126 100644 (file)
@@ -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,
index 8ee0dde..932f847 100644 (file)
@@ -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
index 8dac060..d538e1f 100644 (file)
@@ -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",