From: Vratko Polak Date: Fri, 1 Aug 2025 13:01:37 +0000 (+0200) Subject: Fix(mtu): Decrease jumbo MTU value X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F09%2F43509%2F4;p=csit.git Fix(mtu): Decrease jumbo MTU value 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 --- diff --git a/resources/libraries/python/Constants.py b/resources/libraries/python/Constants.py index 900d5b3f67..9b77963959 100644 --- a/resources/libraries/python/Constants.py +++ b/resources/libraries/python/Constants.py @@ -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 diff --git a/resources/libraries/python/DPDK/TestpmdTest.py b/resources/libraries/python/DPDK/TestpmdTest.py index f5d68f5f85..819fcb9528 100644 --- a/resources/libraries/python/DPDK/TestpmdTest.py +++ b/resources/libraries/python/DPDK/TestpmdTest.py @@ -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, diff --git a/resources/libraries/python/DpdkUtil.py b/resources/libraries/python/DpdkUtil.py index 932f847c55..23bb460b84 100644 --- a/resources/libraries/python/DpdkUtil.py +++ b/resources/libraries/python/DpdkUtil.py @@ -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 diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 7a0e37386b..12745cd9ab 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -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 diff --git a/resources/libraries/python/QemuUtils.py b/resources/libraries/python/QemuUtils.py index d538e1fb0a..bc15781bec 100644 --- a/resources/libraries/python/QemuUtils.py +++ b/resources/libraries/python/QemuUtils.py @@ -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"], diff --git a/resources/libraries/robot/performance/performance_vars.robot b/resources/libraries/robot/performance/performance_vars.robot index 5eacb43977..3dce1bcc58 100644 --- a/resources/libraries/robot/performance/performance_vars.robot +++ b/resources/libraries/robot/performance/performance_vars.robot @@ -482,7 +482,7 @@ | | 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 diff --git a/resources/libraries/robot/shared/default.robot b/resources/libraries/robot/shared/default.robot index ac4ab59943..3babd228c0 100644 --- a/resources/libraries/robot/shared/default.robot +++ b/resources/libraries/robot/shared/default.robot @@ -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