diff --git a/dts/tests/TestSuite_pmd_buffer_scatter.py 
b/dts/tests/TestSuite_pmd_buffer_scatter.py
index 41f6090a7e..76eabb51f6 100644
--- a/dts/tests/TestSuite_pmd_buffer_scatter.py
+++ b/dts/tests/TestSuite_pmd_buffer_scatter.py

@@ -86,12 +99,15 @@ def scatter_pktgen_send_packet(self, pktsize: int) -> str:
          for X_in_hex in payload:
              packet.load += struct.pack("=B", int("%s%s" % (X_in_hex[0], 
X_in_hex[1]), 16))
          received_packets = self.send_packet_and_capture(packet)
+        # filter down the list to packets that have the appropriate structure
+        received_packets = list(
+            filter(lambda p: Ether in p and IP in p and Raw in p, 
received_packets)
+        )
          self.verify(len(received_packets) > 0, "Did not receive any packets.")
-        load = hexstr(received_packets[0].getlayer(2), onlyhex=1)
- return load
+        return received_packets
- def pmd_scatter(self, mbsize: int) -> None:
+    def pmd_scatter(self, mbsize: int, testpmd_params: list[str]) -> None:

Since base_testpmd_parameters is a class var, the method is always going to have access to it and we only need to pass the extra parameters. There's not much of a point in passing what's common to all tests to this method, as it should contain the common parts.

          """Testpmd support of receiving and sending scattered multi-segment 
packets.
Support for scattered packets is shown by sending 5 packets of differing length
@@ -103,34 +119,53 @@ 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]:
-                recv_payload = self.scatter_pktgen_send_packet(mbsize + offset)
+                # This list should only ever contain one element

Which list is the comment referring to? recv_packets? There could be more than just one packet, right?

+                recv_packets = self.scatter_pktgen_send_packet(mbsize + offset)
                  self._logger.debug(
-                    f"Payload of scattered packet after forwarding: 
\n{recv_payload}"
+                    f"Relevant captured packets: \n{recv_packets}"
                  )
+
                  self.verify(
-                    ("58 " * 8).strip() in recv_payload,
+                    any(
+                        " ".join(["58"]*8) in hexstr(pakt.getlayer(2), 
onlyhex=1)
+                        for pakt in recv_packets
+                    ),
                      "Payload of scattered packet did not match expected payload 
with offset "
                      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"]
+        )
+

I'm curious why you moved the --mbuf-size parameter here. It's always going to be (or should be) equal to mbsize, which we already pass (and now we're essentially passing the same thing twice), so I feel this just creates opportunities for mistakes.

+    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.

Reply via email to