Fix(mtu): Decrease jumbo MTU value 09/43509/4
authorVratko Polak <[email protected]>
Fri, 1 Aug 2025 13:01:37 +0000 (15:01 +0200)
committerVratko Polak <[email protected]>
Tue, 26 Aug 2025 11:16:25 +0000 (11:16 +0000)
Intel-XXV710 with dev_iavf plugin cannot handle the old value of 9200.

+ Centralize MTU values in Constants.
+ Add a function to avoid long lines at call sites.
+ Use int values (instead str) where possible.

Ticket: csit-4098

Change-Id: Ie06a2f872527320fbd622027620ef13e3bffad91
Signed-off-by: Vratko Polak <[email protected]>
resources/libraries/python/Constants.py
resources/libraries/python/DPDK/TestpmdTest.py
resources/libraries/python/DpdkUtil.py
resources/libraries/python/InterfaceUtil.py
resources/libraries/python/QemuUtils.py
resources/libraries/robot/performance/performance_vars.robot
resources/libraries/robot/shared/default.robot

index 900d5b3..9b77963 100644 (file)
@@ -652,3 +652,22 @@ class Constants:
         "ndrpdr": "Measure NDR and PDR values using MLRsearch algorithm.",
         "soak": "Estimate critical rate using PLRsearch algorithm. \\",
     }
+
+    # MTU values to use. Must allow tested packets including encap overhead.
+    # Max overhead is 96, xxv710 refuses above 9194, 9145 is in the middle.
+    MTU_JUMBO = get_str_from_env("MTU_JUMBO", 9145)
+    # VPP can handle just below 2048 without chaining, 1800 should be enough.
+    MTU_NORMAL = get_str_from_env("MTU_NORMAL", 1800)
+
+    @classmethod
+    def get_mtu(cls, is_jumbo: bool) -> int:
+        """Return MTU value depending on whether jumbo frames are enabled.
+
+        :param is_jumbo: Whether the current tests uses jumbo frames.
+        :type is_jumbo: bool
+        :returns: One of the two constant values defined above.
+        :rtype: int
+        """
+        if is_jumbo:
+            return cls.MTU_JUMBO
+        return cls.MTU_NORMAL
index f5d68f5..819fcb9 100644 (file)
@@ -142,7 +142,6 @@ class TestpmdTest:
             if_pci0 = Topology.get_interface_pci_addr(node, if1)
             if_pci1 = Topology.get_interface_pci_addr(node, if2)
 
-            pmd_max_pkt_len = "9200" if jumbo else "1518"
             testpmd_args = DpdkUtil.get_testpmd_args(
                 eal_coremap=f"0@1,{lcores_list}",
                 eal_driver=False,
@@ -151,10 +150,10 @@ class TestpmdTest:
                 eal_in_memory=True,
                 pmd_num_mbufs=32768,
                 pmd_fwd_mode="io",
-                pmd_nb_ports="2",
+                pmd_nb_ports=2,
                 pmd_portmask="0x3",
-                pmd_max_pkt_len=pmd_max_pkt_len,
-                pmd_mbuf_size="16384",
+                pmd_max_pkt_len=Constants.get_mtu(jumbo),
+                pmd_mbuf_size=16384,
                 pmd_rxd=rxq_size,
                 pmd_txd=txq_size,
                 pmd_rxq=queue_nums,
index 932f847..23bb460 100644 (file)
@@ -13,6 +13,7 @@
 
 """Dpdk Utilities Library."""
 
+from resources.libraries.python.Constants import Constants
 from resources.libraries.python.OptionString import OptionString
 from resources.libraries.python.ssh import exec_cmd_no_error
 
@@ -221,7 +222,7 @@ class DpdkUtil:
         )
         # Set the max packet length.
         options.add_with_value_if_from_dict(
-            "max-pkt-len", "9200", "pmd_max_pkt_len", kwargs, False
+            "max-pkt-len", Constants.MTU_JUMBO, "pmd_max_pkt_len", kwargs, False
         )
         return options
 
index 7a0e373..12745cd 100644 (file)
@@ -260,12 +260,12 @@ class InterfaceUtil:
             )
 
     @staticmethod
-    def set_interface_mtu(node, pf_pcis, mtu=9200):
+    def set_interface_mtu(node, pf_pcis, mtu=Constants.MTU_JUMBO):
         """Set Ethernet MTU for specified interfaces.
 
         :param node: Topology node.
         :param pf_pcis: List of node's interfaces PCI addresses.
-        :param mtu: MTU to set. Default: 9200.
+        :param mtu: MTU to set. Default: MTU_JUMBO.
         :type nodes: dict
         :type pf_pcis: list
         :type mtu: int
index d538e1f..bc15781 100644 (file)
@@ -371,7 +371,6 @@ class QemuUtils:
         :param kwargs: Key-value pairs to construct command line parameters.
         :type kwargs: dict
         """
-        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_coremap=eal_coremap,
@@ -381,10 +380,10 @@ class QemuUtils:
             eal_in_memory=True,
             pmd_num_mbufs=32768,
             pmd_fwd_mode=u"io",
-            pmd_nb_ports=u"2",
+            pmd_nb_ports=2,
             pmd_portmask=u"0x3",
-            pmd_max_pkt_len=pmd_max_pkt_len,
-            pmd_mbuf_size=u"16384",
+            pmd_max_pkt_len=Constants.get_mtu(kwargs["jumbo"]),
+            pmd_mbuf_size=16384,
             pmd_rxq=kwargs[u"queues"],
             pmd_txq=kwargs[u"queues"],
             pmd_tx_offloads='0x0',
@@ -399,7 +398,6 @@ 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"
         eal_coremap = ",".join([str(x) for x in range(self._opt.get("smp"))])
         testpmd_cmd = DpdkUtil.get_testpmd_cmdline(
             eal_coremap=eal_coremap,
@@ -409,10 +407,10 @@ class QemuUtils:
             eal_in_memory=True,
             pmd_num_mbufs=32768,
             pmd_fwd_mode=u"mac",
-            pmd_nb_ports=u"2",
+            pmd_nb_ports=2,
             pmd_portmask=u"0x3",
-            pmd_max_pkt_len=pmd_max_pkt_len,
-            pmd_mbuf_size=u"16384",
+            pmd_max_pkt_len=Constants.get_mtu(kwargs[u"jumbo"]),
+            pmd_mbuf_size=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"],
index 5eacb43..3dce1bc 100644 (file)
 | | Set Numeric Frame Sizes
 | | ${jumbo} = | Evaluate | ${max_frame_size} >= 1800
 | | Set Test Variable | \${jumbo}
-| | ${recommended_mtu} = | Set Variable If | ${jumbo} | ${9200} | ${1800}
+| | ${recommended_mtu} = | Get Mtu | ${jumbo}
 | | Set Test Variable | \${recommended_mtu}
 
 | Set Max Rate And Jumbo
index ac4ab59..3babd22 100644 (file)
@@ -23,6 +23,7 @@
 | Library | resources.libraries.python.Adl
 | Library | resources.libraries.python.Classify
 | Library | resources.libraries.python.CpuUtils
+| Library | resources.libraries.python.Constants
 | Library | resources.libraries.python.CoreDumpUtil
 | Library | resources.libraries.python.DUTSetup
 | Library | resources.libraries.python.FlowUtil