From: Jeremy Spewock <jspewock@iol.unh.edu>
To: "Juraj Linkeš" <juraj.linkes@pantheon.tech>
Cc: Honnappa.Nagarahalli@arm.com, thomas@monjalon.net,
wathsala.vithanage@arm.com, probb@iol.unh.edu,
paul.szczepanek@arm.com, yoan.picchi@foss.arm.com,
lylavoie@iol.unh.edu, ferruh.yigit@amd.com,
andrew.rybchenko@oktetlabs.ru, dev@dpdk.org
Subject: Re: [PATCH v6 7/7] dts: add pmd_buffer_scatter test suite
Date: Mon, 8 Jan 2024 11:53:32 -0500 [thread overview]
Message-ID: <CAAA20USz2+U3M4=HAU04tNqCsTRM1O88y0w1aSTr5tqKRf2iBg@mail.gmail.com> (raw)
In-Reply-To: <CAOb5WZa8fzQZ9S=OXRYSmnA+dpGpxE-WbuvxdWM8DuuqS-PEbw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 9412 bytes --]
On Mon, Jan 8, 2024 at 10:47 AM Juraj Linkeš <juraj.linkes@pantheon.tech>
wrote:
> On Wed, Jan 3, 2024 at 11:33 PM <jspewock@iol.unh.edu> wrote:
> >
> > From: Jeremy Spewock <jspewock@iol.unh.edu>
> >
> > This test suite provides testing of the support of scattered packets by
> > Poll Mode Drivers using testpmd, verifying the ability to receive and
> > transmit scattered multi-segment packets made up of multiple
> > non-contiguous memory buffers. This is tested through 5 different cases
> > in which the length of the packets sent are less than the mbuf size,
> > equal to the mbuf size, and 1, 4, and 5 bytes greater than the mbuf size
> > in order to show both the CRC and the packet data are capable of
> > existing in the first, second, or both buffers.
> >
> > Naturally, if the PMD is capable of forwarding scattered packets which
> > it receives as input, this shows it is capable of both receiving and
> > transmitting scattered packets.
> >
> > Signed-off-by: Jeremy Spewock <jspewock@iol.unh.edu>
> > ---
> > dts/tests/TestSuite_pmd_buffer_scatter.py | 126 ++++++++++++++++++++++
> > 1 file changed, 126 insertions(+)
> > create mode 100644 dts/tests/TestSuite_pmd_buffer_scatter.py
> >
> > diff --git a/dts/tests/TestSuite_pmd_buffer_scatter.py
> b/dts/tests/TestSuite_pmd_buffer_scatter.py
> > new file mode 100644
> > index 0000000000..8838c3404f
> > --- /dev/null
> > +++ b/dts/tests/TestSuite_pmd_buffer_scatter.py
> > @@ -0,0 +1,126 @@
> > +# SPDX-License-Identifier: BSD-3-Clause
> > +# Copyright(c) 2023-2024 University of New Hampshire
> > +
> > +"""Multi-segment packet scattering testing suite.
>
> Test suite - I guess this is a copy-paste?
>
Good catch, it probably was.
> > +
> > +This testing suite tests the support of transmitting and receiving
> scattered packets. This is shown
> > +by the Poll Mode Driver being able to forward scattered multi-segment
> packets composed of multiple
> > +non-contiguous memory buffers. To ensure the receipt of scattered
> packets, the DMA rings of the
> > +port's RX queues must be configured with mbuf data buffers whose size
> is less than the maximum
> > +length.
> > +
> > +If it is the case that the Poll Mode Driver can forward scattered
> packets which it receives, then
> > +this suffices to show the Poll Mode Driver is capable of both receiving
> and transmitting scattered
> > +packets.
> > +"""
>
> We have a newline between the docstring and the import everywhere.
>
You're right, I must have missed it here, I'll add that.
> > +import struct
> > +
> > +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
> > +
> > +
> > +class PmdBufferScatter(TestSuite):
> > + """DPDK PMD packet scattering test suite.
> > +
> > + Configure the Rx queues to have mbuf data buffers whose sizes are
> smaller than the maximum
> > + packet size. Specifically, set mbuf data buffers to have a size of
> 2048 to fit a full 1512-byte
> > + (CRC included) ethernet frame in a mono-segment packet. The testing
> of scattered packets is
> > + done by sending a packet whose length is greater than the size of
> the configured size of mbuf
> > + data buffers. There are a total of 5 packets sent within test cases
> which have lengths less
> > + than, equal to, and greater than the mbuf size. There are multiple
> packets sent with lengths
> > + greater than the mbuf size in order to test cases such as:
> > +
> > + 1. A single byte of the CRC being in a second buffer while the
> remaining 3 bytes are stored in
> > + the first buffer alongside packet data.
> > + 2. The entire CRC being stored in a second buffer while all of the
> packet data is stored in the
> > + first.
> > + 3. Most of the packet data being stored in the first buffer and a
> single byte of packet data
> > + stored in a second buffer alongside the CRC.
> > + """
> > +
> > + def set_up_suite(self) -> None:
> > + """Set up the test suite.
> > +
> > + Setup:
> > + Verify they we have at least 2 port links in the current
> execution and increase the MTU
>
> Typo - they.
>
Oops, thank you!
>
> > + of both ports on the tg_node to 9000 to support larger
> packet sizes.
>
> The description should be code agnostic, so let's use traffic
> generator node instead of tg_node.
>
Good point, I'll update this.
>
> > + """
> > + self.verify(
> > + len(self._port_links) > 1,
> > + "Must have at least two port links to run scatter",
>
> I'd like this to be at least "Must have at least two port links to run
> the scatter test suite" so that it's immediately obvious where this
> comes from. I'm also debating which of these is better: "Must have at
> least" or "There must be at least", but I'm not sure.
>
I think reading it over that "There must be at least" sounds better, I'll
update this as well.
>
> > + )
> > +
> > + self.tg_node.main_session.configure_port_mtu(9000,
> self._tg_port_egress)
> > + self.tg_node.main_session.configure_port_mtu(9000,
> self._tg_port_ingress)
> > +
> > + def scatter_pktgen_send_packet(self, pktsize: int) -> str:
> > + """Generate and send packet to the SUT.
>
> send a packet
>
> But this also captures a packet, so let's mention that.
>
Good point, I'll add this.
>
> > +
> > + Functional test for scatter packets.
>
> This is just part of the test. The actual test is the pmd_scatter
> method with test cases being the callers of pmd_scatter.
> We should improve this. We mentioned a packet, so let's describe it.
>
This definitely could be expanded, this likely just came from pulling from
old DTS or before the docstrings were expanded. Good catch!
>
> > +
> > + Args:
> > + pktsize: Size of the packet to generate and send.
> > + """
> > + packet = Ether() / IP() / Raw()
> > + packet.getlayer(2).load = ""
> > + payload_len = pktsize - len(packet) - 4
> > + payload = ["58"] * payload_len
> > + # pack the payload
> > + 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)
> > + self.verify(len(received_packets) > 0, "Did not receive any
> packets.")
> > + load = hexstr(received_packets[0].getlayer(2), onlyhex=1)
> > +
> > + return load
> > +
> > + def pmd_scatter(self, mbsize: int) -> None:
> > + """Testpmd support of receiving and sending scattered
> multi-segment packets.
> > +
> > + Support for scattered packets is shown by sending 5 packets of
> differing length
> > + where the length of the packet is calculated by taking
> mbuf-size + an offset. The
> > + offsets used in the test case are -1, 0, 1, 4, 5 respectively.
> > +
>
> In the test.
>
Good point, I'll change this.
>
> > + Test:
> > + Start testpmd and run functional test with preset mbsize.
> > + """
> > + testpmd = 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"
> > + ),
> > + privileged=True,
> > + )
> > + testpmd.set_forward_mode(TestPmdForwardingModes.mac)
> > + testpmd.start()
> > +
> > + for offset in [-1, 0, 1, 4, 5]:
> > + recv_payload = self.scatter_pktgen_send_packet(mbsize +
> offset)
> > + self._logger.debug(f"Payload of scattered packet after
> forwarding: \n{recv_payload}")
> > + self.verify(
> > + ("58 " * 8).strip() in recv_payload,
> > + f"Payload of scattered packet did not match expected
> payload with offset {offset}.",
> > + )
> > + testpmd.stop()
> > +
> > + def test_scatter_mbuf_2048(self) -> None:
> > + """Run :func:`~PmdBufferScatter.pmd_scatter` function with
> `mbsize` set to 2048."""
>
> This would probably read better as "Run the pmd_scatter test"
>
I agree, I'll update this.
>
> > + self.pmd_scatter(mbsize=2048)
> > +
> > + def tear_down_suite(self) -> None:
> > + """Tear down the test suite.
> > +
> > + Teardown:
> > + Set the MTU of the tg_node back to a more standard size of
> 1500
> > + """
> > + self.tg_node.main_session.configure_port_mtu(1500,
> self._tg_port_egress)
> > + self.tg_node.main_session.configure_port_mtu(1500,
> self._tg_port_ingress)
> > --
> > 2.43.0
> >
>
Thank you again for the thorough feedback!
[-- Attachment #2: Type: text/html, Size: 13749 bytes --]
next prev parent reply other threads:[~2024-01-08 16:53 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-18 18:12 [PATCH v4 0/7] dts: Port scatter suite over jspewock
2023-12-18 18:12 ` [PATCH v4 1/7] dts: add required methods to testpmd_shell jspewock
2023-12-19 16:45 ` Juraj Linkeš
2023-12-21 19:37 ` Jeremy Spewock
2024-01-03 11:10 ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 2/7] dts: allow passing parameters into interactive apps jspewock
2023-12-19 16:50 ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2023-12-19 16:54 ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 4/7] dts: add pci addresses to EAL parameters jspewock
2023-12-19 16:55 ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 5/7] dts: allow configuring MTU of ports jspewock
2023-12-19 16:58 ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 6/7] dts: add scatter to the yaml schema jspewock
2023-12-19 16:59 ` Juraj Linkeš
2023-12-18 18:12 ` [PATCH v4 7/7] dts: add scatter test suite jspewock
2023-12-19 17:29 ` Juraj Linkeš
2023-12-21 21:47 ` Jeremy Spewock
2024-01-03 11:14 ` Juraj Linkeš
2024-01-03 22:12 ` [PATCH v5 0/7] dts: Port scatter suite over jspewock
2024-01-03 22:12 ` [PATCH v5 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-01-03 22:12 ` [PATCH v5 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-01-03 22:12 ` [PATCH v5 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-01-03 22:12 ` [PATCH v5 4/7] dts: add pci addresses to EAL parameters jspewock
2024-01-03 22:12 ` [PATCH v5 5/7] dts: allow configuring MTU of ports jspewock
2024-01-03 22:12 ` [PATCH v5 6/7] dts: add scatter to the yaml schema jspewock
2024-01-03 22:12 ` [PATCH v5 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-01-03 22:31 ` [PATCH v6 0/7] dts: Port scatter suite over jspewock
2024-01-03 22:32 ` [PATCH v6 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-01-08 11:34 ` Juraj Linkeš
2024-01-08 16:36 ` Jeremy Spewock
2024-01-09 11:54 ` Juraj Linkeš
2024-01-09 14:31 ` Jeremy Spewock
2024-01-03 22:32 ` [PATCH v6 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-01-08 11:52 ` Juraj Linkeš
2024-01-08 16:37 ` Jeremy Spewock
2024-01-03 22:32 ` [PATCH v6 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-01-08 12:01 ` Juraj Linkeš
2024-01-08 16:39 ` Jeremy Spewock
2024-01-08 16:40 ` Jeremy Spewock
2024-01-03 22:32 ` [PATCH v6 4/7] dts: add pci addresses to EAL parameters jspewock
2024-01-08 14:59 ` Juraj Linkeš
2024-01-03 22:32 ` [PATCH v6 5/7] dts: allow configuring MTU of ports jspewock
2024-01-08 15:00 ` Juraj Linkeš
2024-01-03 22:32 ` [PATCH v6 6/7] dts: add scatter to the yaml schema jspewock
2024-01-08 15:01 ` Juraj Linkeš
2024-01-03 22:32 ` [PATCH v6 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-01-08 15:47 ` Juraj Linkeš
2024-01-08 16:53 ` Jeremy Spewock [this message]
2024-01-09 15:36 ` [PATCH v7 0/7] dts: Port scatter suite over jspewock
2024-01-09 15:36 ` [PATCH v7 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-01-10 13:18 ` Juraj Linkeš
2024-01-10 14:09 ` Jeremy Spewock
2024-01-09 15:36 ` [PATCH v7 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-01-09 15:36 ` [PATCH v7 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-01-09 15:36 ` [PATCH v7 4/7] dts: add pci addresses to EAL parameters jspewock
2024-01-09 15:36 ` [PATCH v7 5/7] dts: allow configuring MTU of ports jspewock
2024-01-09 15:36 ` [PATCH v7 6/7] dts: add scatter to the yaml schema jspewock
2024-01-09 15:36 ` [PATCH v7 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-01-10 13:16 ` Juraj Linkeš
2024-01-10 14:09 ` Jeremy Spewock
2024-01-10 13:22 ` [PATCH v7 0/7] dts: Port scatter suite over Juraj Linkeš
2024-01-10 14:42 ` [PATCH v8 " jspewock
2024-01-10 14:42 ` [PATCH v8 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-01-10 14:42 ` [PATCH v8 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-01-10 14:42 ` [PATCH v8 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-01-10 14:42 ` [PATCH v8 4/7] dts: add pci addresses to EAL parameters jspewock
2024-01-10 14:42 ` [PATCH v8 5/7] dts: allow configuring MTU of ports jspewock
2024-01-10 14:42 ` [PATCH v8 6/7] dts: add scatter to the yaml schema jspewock
2024-01-10 14:42 ` [PATCH v8 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-01-11 10:07 ` [PATCH v8 0/7] dts: Port scatter suite over Juraj Linkeš
2024-02-21 3:34 ` Patrick Robb
2024-03-07 15:00 ` Thomas Monjalon
2024-03-11 14:15 ` Jeremy Spewock
2024-03-11 15:43 ` [PATCH v9 " jspewock
2024-03-11 15:43 ` [PATCH v9 1/7] dts: add startup verification and forwarding modes to testpmd shell jspewock
2024-03-11 15:44 ` [PATCH v9 2/7] dts: limit EAL parameters to DPDK apps and add parameters to all apps jspewock
2024-03-11 15:44 ` [PATCH v9 3/7] dts: add optional packet filtering to scapy sniffer jspewock
2024-03-11 15:44 ` [PATCH v9 4/7] dts: add pci addresses to EAL parameters jspewock
2024-03-11 15:44 ` [PATCH v9 5/7] dts: allow configuring MTU of ports jspewock
2024-03-11 15:44 ` [PATCH v9 6/7] dts: add scatter to the yaml schema jspewock
2024-03-11 15:44 ` [PATCH v9 7/7] dts: add pmd_buffer_scatter test suite jspewock
2024-03-15 17:41 ` [PATCH v9 0/7] dts: Port scatter suite over Thomas Monjalon
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='CAAA20USz2+U3M4=HAU04tNqCsTRM1O88y0w1aSTr5tqKRf2iBg@mail.gmail.com' \
--to=jspewock@iol.unh.edu \
--cc=Honnappa.Nagarahalli@arm.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=juraj.linkes@pantheon.tech \
--cc=lylavoie@iol.unh.edu \
--cc=paul.szczepanek@arm.com \
--cc=probb@iol.unh.edu \
--cc=thomas@monjalon.net \
--cc=wathsala.vithanage@arm.com \
--cc=yoan.picchi@foss.arm.com \
/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).