From patchwork Thu Nov 9 23:20:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeremy Spewock X-Patchwork-Id: 134048 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EEFFA432EC; Fri, 10 Nov 2023 00:23:20 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E068B41151; Fri, 10 Nov 2023 00:23:20 +0100 (CET) Received: from mail-qt1-f226.google.com (mail-qt1-f226.google.com [209.85.160.226]) by mails.dpdk.org (Postfix) with ESMTP id CD8B241148 for ; Fri, 10 Nov 2023 00:23:19 +0100 (CET) Received: by mail-qt1-f226.google.com with SMTP id d75a77b69052e-41cba6e8e65so8631321cf.2 for ; Thu, 09 Nov 2023 15:23:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; t=1699572199; x=1700176999; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=V9JnIUsiEIpjeKizpH2WPgqtoQmIxJuwO3RW6x/6msw=; b=cp11F5W29NuYipHPiVslARYxQUEhKVM+8VKIsAyu2Gc0+mIBRTq6MYXtheJij8V+s0 OtYWHbrH5qq+anDn8b4XQvf2GctcVZ+PcwPC68pRMXvWO00ZRLgshkOP1GqBQ2w4UyAW q+XcWz415xu3lgdk2ufah9BRPQcHYb8/9FmPg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699572199; x=1700176999; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V9JnIUsiEIpjeKizpH2WPgqtoQmIxJuwO3RW6x/6msw=; b=o61yh8OJ8geIGKwA7wq0uIzOCfXv0l3eT3uPa70zO/4JuRCemesJalZWySAiUH1Gi7 VhEJo2qUczfod1I+AiETFGd0Gt5MqpzPRlRWZi6Zd6OjWF4IUFnJ/eEe8VsT2DvscDdf oNSZ8kEfkj0A3cFkZBTTgMVNVSEMo3XP/arebijCbhrzYBcsHMGcWB2hxJUAhfxeribj JAvVC2Ap/GLCXWGPrJTLtzDi/RzBw9RgMYOjtV4Y1mxboMpp3Kf6WqJO9Cm6oABxeoJC TWulEYtd/HNX0uik+ZH0yoamRKPsU7h0HraibXj21gsTNqkk7eQwDLTW49GksMaFglv9 yN9w== X-Gm-Message-State: AOJu0YxdwJLjN6P6Ym3XFuAUFyOKxAxy6XkpN1SFirBcn5tWiMuD2lem 6M0Tb/CasNEdqr75QsI0VS3QHkDE749Ux1mOxBj+da8g2C4TdA== X-Google-Smtp-Source: AGHT+IGHVBUYI/YN6jcANw9CWvJ89ViENZxTL+9//tscLJWzPDe5fd2AbCmzGOwMWlwL/eLgyy71K5mdFiD0 X-Received: by 2002:ac8:7dc4:0:b0:418:152d:bf4 with SMTP id c4-20020ac87dc4000000b00418152d0bf4mr6608424qte.51.1699572199163; Thu, 09 Nov 2023 15:23:19 -0800 (PST) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [132.177.123.84]) by smtp-relay.gmail.com with ESMTPS id v19-20020a05622a189300b004199171a914sm688094qtc.2.2023.11.09.15.23.18 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Nov 2023 15:23:19 -0800 (PST) X-Relaying-Domain: iol.unh.edu Received: from iol.unh.edu (unknown [IPv6:2606:4100:3880:1271:90f9:1b64:f6e6:867f]) by postal.iol.unh.edu (Postfix) with ESMTP id BB954605C318; Thu, 9 Nov 2023 18:23:18 -0500 (EST) From: jspewock@iol.unh.edu To: Honnappa.Nagarahalli@arm.com, juraj.linkes@pantheon.tech, thomas@monjalon.net, wathsala.vithanage@arm.com, probb@iol.unh.edu, paul.szczepanek@arm.com, yoan.picchi@foss.arm.com, ferruh.yigit@amd.com, andrew.rybchenko@oktetlabs.ru Cc: dev@dpdk.org, Jeremy Spewock Subject: [PATCH v2 1/7] dts: Add scatter test suite Date: Thu, 9 Nov 2023 18:20:11 -0500 Message-ID: <20231109232223.25644-3-jspewock@iol.unh.edu> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231109232223.25644-2-jspewock@iol.unh.edu> References: <20231109232223.25644-2-jspewock@iol.unh.edu> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Jeremy Spewock This test suite provides testing the support of scattered packets by Poll Mode Drivers using testpmd. It incorporates 5 different test cases which test the sending and receiving of packets with lengths that are less than the mbuf data buffer size, the same as the mbuf data buffer size, and the mbuf data buffer size plus 1, 4, and 5. The goal of this test suite is to align with the existing dts test plan for scattered packets within DTS. Signed-off-by: Jeremy Spewock --- dts/tests/TestSuite_scatter.py | 86 ++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 dts/tests/TestSuite_scatter.py diff --git a/dts/tests/TestSuite_scatter.py b/dts/tests/TestSuite_scatter.py new file mode 100644 index 0000000000..217f465e92 --- /dev/null +++ b/dts/tests/TestSuite_scatter.py @@ -0,0 +1,86 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2023 University of New Hampshire + +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 import TestPmdShell +from framework.test_suite import TestSuite + + +class Scatter(TestSuite): + mbsize: int + + def set_up_suite(self) -> None: + self.verify( + len(self._port_links) > 1, + "Must have at least two port links to run scatter", + ) + if self._sut_port_egress.os_driver in ["i40e", "ixgbe", "ice"]: + self.mbsize = 2048 + else: + self.mbsize = 1024 + + 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. + + Functional test for scatter packets. + + 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) + ) + load = hexstr(packet.getlayer(2), onlyhex=1) + 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 test_scatter_mbuf_2048(self) -> None: + """ + 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={self.mbsize} " + "--max-pkt-len=9000 " + "--port-topology=paired " + "--tx-offloads=0x00008000" + ), + privileged=True, + ) + testpmd.send_command("set fwd mac") + testpmd.send_command("start") + link_is_up = testpmd.wait_link_status_up(0) and testpmd.wait_link_status_up(1) + self.verify(link_is_up, "Links never came up in TestPMD.") + + for offset in [-1, 0, 1, 4, 5]: + recv_payload = self.scatter_pktgen_send_packet(self.mbsize + offset) + self.verify( + ("58 " * 8).strip() in recv_payload, + "Received packet had incorrect payload", + ) + testpmd.send_command("stop") + + def tear_down_suite(self) -> None: + 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)