DPDK patches and discussions
 help / color / mirror / Atom feed
From: Thomas Wilks <thomas.wilks@arm.com>
To: dev@dpdk.org
Cc: Paul Szczepanek <paul.szczepanek@arm.com>,
	Luca Vizzarro <luca.vizzarro@arm.com>,
	Patrick Robb <probb@iol.unh.edu>,
	Alex Chapman <alex.chapman@arm.com>,
	Thomas Wilks <thomas.wilks@arm.com>
Subject: [PATCH v2 4/6] dts: add PMD RSS RETA testsuite
Date: Tue, 25 Feb 2025 15:33:43 +0000	[thread overview]
Message-ID: <20250225153345.331216-5-thomas.wilks@arm.com> (raw)
In-Reply-To: <20250225153345.331216-1-thomas.wilks@arm.com>

From: Alex Chapman <alex.chapman@arm.com>

Port over the pmd_rss_reta test suite from old DTS. This
suite verifies that Redirection Tables (RETAs) of different
sizes function correctly in Receive Side Scaling (RSS).
This test suite also verifies that the reported reta size
of the NIC is correct.

Signed-off-by: Alex Chapman <alex.chapman@arm.com>
Signed-off-by: Thomas Wilks <thomas.wilks@arm.com>

Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>
---
 dts/tests/TestSuite_pmd_rss_reta.py | 101 ++++++++++++++++++++++++++++
 1 file changed, 101 insertions(+)
 create mode 100644 dts/tests/TestSuite_pmd_rss_reta.py

diff --git a/dts/tests/TestSuite_pmd_rss_reta.py b/dts/tests/TestSuite_pmd_rss_reta.py
new file mode 100644
index 0000000000..31df817e75
--- /dev/null
+++ b/dts/tests/TestSuite_pmd_rss_reta.py
@@ -0,0 +1,101 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2025 Arm Limited
+
+"""RSS RETA (redirection table) Test Suite.
+
+The RETA is used in RSS to redirect packets to different queues based on the
+least significant bits of the packets hash.
+This suite tests updating the size of the RETA and verifying the reported RETA size.
+"""
+
+from framework.remote_session.testpmd_shell import TestPmdShell
+from framework.test_suite import TestSuite, func_test
+from framework.testbed_model.capability import requires
+from framework.testbed_model.topology import TopologyType
+
+from .pmd_rss_utils import (  # type: ignore[import-untyped]
+    SendTestPackets,
+    SetupRssEnvironment,
+    VerifyHashQueue,
+)
+
+ACTUAL_RETA_SIZE = 512
+
+
+@requires(topology_type=TopologyType.one_link)
+class TestPmdRssReta(TestSuite):
+    """PMD RSS Reta test suite.
+
+    Verifies the redirection table when updating the size.
+    The suite contains four tests, three for different RETA sizes
+    and one for verifying the reported RETA size.
+    """
+
+    def CheckRetaNQueues(self, num_queues: int) -> None:
+        """Create RETA of size n, send packets, verify packets end up in correct queue.
+
+        Args:
+            num_queues: Number of rx/tx queues.
+        """
+        with TestPmdShell(
+            rx_queues=num_queues,
+            tx_queues=num_queues,
+        ) as testpmd:
+            # Setup testpmd for RSS, create RETA table, return RETA table and key_size
+            reta, _ = SetupRssEnvironment(self, testpmd, num_queues, None)
+
+            # Send UDP packets and ensure hash corresponds with queue
+            parsed_output = SendTestPackets(self, testpmd, False)
+            VerifyHashQueue(self, reta, parsed_output, False)
+
+    @func_test
+    def TestReta2Queues(self) -> None:
+        """RETA rx/tx queues 2 test.
+
+        Steps:
+            Setup RSS environment and send Test packets.
+        Verify:
+            Packet hash corresponds to hash queue.
+        """
+        self.CheckRetaNQueues(2)
+
+    @func_test
+    def TestReta9Queues(self) -> None:
+        """RETA rx/tx queues 9 test.
+
+        Steps:
+            Setup RSS environment and send Test packets.
+        Verify:
+            Packet hash corresponds to hash queue.
+        """
+        self.CheckRetaNQueues(9)
+
+    @func_test
+    def TestReta16Queues(self) -> None:
+        """RETA rx/tx queues 16 test.
+
+        Steps:
+            Setup RSS environment and send Test packets.
+        Verify:
+            Packet hash corresponds to hash queue.
+        """
+        self.CheckRetaNQueues(16)
+
+    @func_test
+    def TestReportedRetaSize(self) -> None:
+        """Reported RETA size test.
+
+        Steps:
+            Fetch reported reta size.
+        Verify:
+            Reported RETA size is equal to the actual RETA size.
+        """
+        with TestPmdShell() as testpmd:
+            self.topology.sut_port_egress.config
+            # Get RETA table size
+            port_info = testpmd.show_port_info(0)
+            reported_reta_size = port_info.redirection_table_size
+            self.verify(
+                reported_reta_size == ACTUAL_RETA_SIZE,
+                "Reported RETA size is not the same as the config file.",
+            )
-- 
2.43.0


  parent reply	other threads:[~2025-02-25 15:34 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-29 12:50 [PATCH] dts: add RSS functions to testpmd Alex Chapman
2024-09-06 14:29 ` Juraj Linkeš
2025-02-25 15:33 ` [PATCH v2 0/6] Added RSS functions and tests Thomas Wilks
2025-02-25 15:33   ` [PATCH v2 1/6] dts: add RSS functions to testpmd Thomas Wilks
2025-02-25 15:33   ` [PATCH v2 2/6] dts: add utils for PMD RSS testsuites Thomas Wilks
2025-02-25 15:33   ` [PATCH v2 3/6] dts: add PMD RSS hash testsuite Thomas Wilks
2025-02-25 15:33   ` Thomas Wilks [this message]
2025-02-25 15:33   ` [PATCH v2 5/6] dts: add PMD RSS key update testsuite Thomas Wilks
2025-02-25 15:33   ` [PATCH v2 6/6] dts: add NIC capabilities for hash algorithms Thomas Wilks

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250225153345.331216-5-thomas.wilks@arm.com \
    --to=thomas.wilks@arm.com \
    --cc=alex.chapman@arm.com \
    --cc=dev@dpdk.org \
    --cc=luca.vizzarro@arm.com \
    --cc=paul.szczepanek@arm.com \
    --cc=probb@iol.unh.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).