From: Jeremy Spewock <jspew...@iol.unh.edu> Some NICs tested in DPDK allow for the scattering of packets without an offload and others enforce that you enable the scattered_rx offload in testpmd. The current version of the suite for testing support of scattering packets only tests the case where the NIC supports testing without the offload, so an expansion of coverage is needed to cover the second case as well.
depends-on: patch-139227 ("dts: skip test cases based on capabilities") Signed-off-by: Jeremy Spewock <jspew...@iol.unh.edu> --- dts/tests/TestSuite_pmd_buffer_scatter.py | 49 ++++++++++++++++++----- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/dts/tests/TestSuite_pmd_buffer_scatter.py b/dts/tests/TestSuite_pmd_buffer_scatter.py index 41f6090a7e..1ceaab0f86 100644 --- a/dts/tests/TestSuite_pmd_buffer_scatter.py +++ b/dts/tests/TestSuite_pmd_buffer_scatter.py @@ -16,14 +16,19 @@ """ import struct +from typing import ClassVar from scapy.layers.inet import IP # type: ignore[import] from scapy.layers.l2 import Ether # type: ignore[import] from scapy.packet import Raw # type: ignore[import] from scapy.utils import hexstr # type: ignore[import] -from framework.remote_session.testpmd_shell import TestPmdForwardingModes, TestPmdShell -from framework.test_suite import TestSuite +from framework.remote_session.testpmd_shell import ( + NicCapability, + TestPmdForwardingModes, + TestPmdShell, +) +from framework.test_suite import TestSuite, requires class TestPmdBufferScatter(TestSuite): @@ -48,6 +53,14 @@ class TestPmdBufferScatter(TestSuite): and a single byte of packet data stored in a second buffer alongside the CRC. """ + #: Parameters for testing scatter using testpmd which are universal across all test cases. + base_testpmd_parameters: ClassVar[list[str]] = [ + "--mbcache=200", + "--max-pkt-len=9000", + "--port-topology=paired", + "--tx-offloads=0x00008000", + ] + def set_up_suite(self) -> None: """Set up the test suite. @@ -91,7 +104,7 @@ def scatter_pktgen_send_packet(self, pktsize: int) -> str: return load - def pmd_scatter(self, mbsize: int) -> None: + def pmd_scatter(self, mbsize: int, testpmd_params: list[str]) -> None: """Testpmd support of receiving and sending scattered multi-segment packets. Support for scattered packets is shown by sending 5 packets of differing length @@ -103,17 +116,14 @@ def pmd_scatter(self, mbsize: int) -> None: """ testpmd_shell = self.sut_node.create_interactive_shell( TestPmdShell, - app_parameters=( - "--mbcache=200 " - f"--mbuf-size={mbsize} " - "--max-pkt-len=9000 " - "--port-topology=paired " - "--tx-offloads=0x00008000" - ), + app_parameters=" ".join(testpmd_params), privileged=True, ) with testpmd_shell as testpmd: testpmd.set_forward_mode(TestPmdForwardingModes.mac) + # adjust the MTU of the SUT ports + for port_id in range(testpmd.number_of_ports): + testpmd.set_port_mtu(port_id, 9000) testpmd.start() for offset in [-1, 0, 1, 4, 5]: @@ -127,10 +137,27 @@ def pmd_scatter(self, mbsize: int) -> None: f"{offset}.", ) testpmd.stop() + # reset the MTU of the SUT ports + for port_id in range(testpmd.number_of_ports): + testpmd.set_port_mtu(port_id, 1500) + @requires(NicCapability.scattered_rx) def test_scatter_mbuf_2048(self) -> None: """Run the :meth:`pmd_scatter` test with `mbsize` set to 2048.""" - self.pmd_scatter(mbsize=2048) + self.pmd_scatter( + mbsize=2048, testpmd_params=[*(self.base_testpmd_parameters), "--mbuf-size=2048"] + ) + + def test_scatter_mbuf_2048_with_offload(self) -> None: + """Run the :meth:`pmd_scatter` test with `mbsize` set to 2048 and rx_scatter offload.""" + self.pmd_scatter( + mbsize=2048, + testpmd_params=[ + *(self.base_testpmd_parameters), + "--mbuf-size=2048", + "--enable-scatter", + ], + ) def tear_down_suite(self) -> None: """Tear down the test suite. -- 2.45.1