"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
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,
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,
"""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
)
# 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
)
@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
: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,
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',
: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,
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"],
| | 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
| 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