Hi Andrew, Thank you for this. You should also add a documentation page for the new test.
On Wed, Sep 17, 2025 at 08:42:43AM +0000, Andrew Bailey wrote: > Currently, the RX/TX offload test in old DTS expects the TX ports to be > initially configured to use mbuf fast free. This is no longer the case > and must be updated to assume mbuf fast free is not initially utilized > by capable NICs. Add updated test suite to test mbuf fast free > configuration. > > Signed-off-by: Andrew Bailey <abai...@iol.unh.edu> > --- > dts/tests/TestSuite_rx_tx_offload.py | 130 +++++++++++++++++++++++++++ > 1 file changed, 130 insertions(+) > create mode 100644 dts/tests/TestSuite_rx_tx_offload.py > > diff --git a/dts/tests/TestSuite_rx_tx_offload.py > b/dts/tests/TestSuite_rx_tx_offload.py > new file mode 100644 > index 0000000000..f97bb4978a > --- /dev/null > +++ b/dts/tests/TestSuite_rx_tx_offload.py > @@ -0,0 +1,130 @@ > +# SPDX-License-Identifier: BSD-3-Clause > +# Copyright(c) 2025 University of New Hampshire > + > +"""RX TX offload test suite. > + > +Test the testpmd feature of configuring RX and TX offloads. > +""" > + > +from typing import Optional > + > +from framework.remote_session.testpmd_shell import ( > + OffloadConfiguration, > + RxTxLiteralSwitch, > + TestPmdShell, > +) > +from framework.test_suite import TestSuite, func_test > +from framework.testbed_model.capability import NicCapability, requires > + > + > +class TestRxTxOffload(TestSuite): > + """RX/TX offload test suite.""" > + > + def _check_config( > + self, > + testpmd: TestPmdShell, > + port_offload: str | None, > + rxtx: RxTxLiteralSwitch, > + port_id: int, > + /, > + queue_offload: Optional[list[str | None]] = None, > + verify: bool = True, > + ) -> bool: > + config: OffloadConfiguration = testpmd.get_offload_config(rxtx, > port_id, verify) > + if config.port.name != port_offload: > + return False > + > + if queue_offload: > + for i, q in enumerate(config.queues): > + if q.name != queue_offload[i]: > + return False > + return True > + > + def _set_all_queues_mbuf_fast_free( > + self, testpmd: TestPmdShell, on: bool, port_id: int, num_queues: > int, /, verify: bool = True > + ) -> None: > + for i in range(num_queues): > + testpmd.set_queue_mbuf_fast_free(on, port_id, i, verify) > + > + @requires(NicCapability.PORT_TX_OFFLOAD_MBUF_FAST_FREE) > + @func_test > + def test_mbuf_fast_free_configuration_per_port(self) -> None: > + """Ensure mbuf_fast_free can be configured with testpmd per port. > + > + Steps: > + * Start up testpmd shell. > + * Toggle mbuf_fast_free on per port. > + * Toggle mbuf_fast_free off per port. > + > + Verify: > + * Mbuf_fast_free starts disabled. > + * Mbuf_fast_free can be configured on per port. > + * Mbuf_fast_free can be configured off per port. > + """ > + with TestPmdShell() as testpmd: > + verify = True > + port_id = 0 > + testpmd.start_all_ports() > + > + # Ensure MBUF_FAST_FREE is disabled by default and verify > + self.verify( > + self._check_config(testpmd, None, "tx", port_id, > verify=verify), > + "MBUF_FAST_FREE enabled on port start.", > + ) > + # Enable MBUF_FAST_FREE per port and verify > + testpmd.set_port_mbuf_fast_free(True, port_id, verify) > + self.verify( > + self._check_config( > + testpmd, "TX_OFFLOAD_MBUF_FAST_FREE", "tx", port_id, > verify=verify > + ), > + "Failed to enable MBUF_FAST_FREE on port.", > + ) > + # Disable MBUF_FAST_FREE per port and verify > + testpmd.set_port_mbuf_fast_free(False, port_id, verify) > + self.verify( > + self._check_config(testpmd, None, "tx", port_id, > verify=verify), > + "Failed to disable MBUF_FAST_FREE on port.", > + ) > + > + @requires(NicCapability.QUEUE_TX_OFFLOAD_MBUF_FAST_FREE) > + @func_test > + def test_mbuf_fast_free_configuration_per_queue(self) -> None: > + """Ensure mbuf_fast_free can be configured with testpmd. > + > + Steps: > + * Start up testpmd shell. > + * Toggle mbuf_fast_free on per queue. > + * Toggle mbuf_fast_free off per queue. > + > + Verify: > + * Mbuf_fast_free starts disabled. > + * Mbuf_fast_free can be configured on per queue. > + * Mbuf_fast_free can be configured off per queue. > + """ > + with TestPmdShell() as testpmd: > + verify = True > + port_id = 0 > + num_queues = 4 > + queue_off: Optional[list[str | None]] = [None] * num_queues > + queue_on: Optional[list[str | None]] = > ["TX_OFFLOAD_MBUF_FAST_FREE"] * num_queues Optional is deprecated in the version of Python we are using in favour of `| None` > + > + testpmd.set_ports_queues(num_queues) > + testpmd.start_all_ports() > + > + # Ensure mbuf_fast_free is disabled by default on port and queues > + self.verify( > + self._check_config(testpmd, None, "tx", port_id, queue_off, > verify=verify), > + "MBUF_FAST_FREE enabled on queue start.", > + ) > + # Enable mbuf_fast_free per queue and verify > + self._set_all_queues_mbuf_fast_free(testpmd, True, port_id, > num_queues, verify) > + self.verify( > + self._check_config(testpmd, None, "tx", port_id, queue_on, > verify), > + "Failed to enable MBUF_FAST_FREE on all queues.", > + ) > + # Disable mbuf_fast_free per queue and verify > + self._set_all_queues_mbuf_fast_free(testpmd, False, port_id, > num_queues, verify) > + self.verify( > + self._check_config(testpmd, None, "tx", port_id, queue_off, > verify), > + "Failed to disable MBUF_FAST_FREE on all queues.", > + ) > -- > 2.50.1 >