From nobody Fri Sep 25 11:11:47 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 253181C862D for ; Mon, 14 Sep 2026 00:45:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789346740; cv=none; b=jzpiERQiEmy8w38ZYUuWHEVLFY1zdoeAfcVIjGk+xIIZS95IyKrsV/sM6PPiBCzVKQN0pIa4BwRxUQAJSjYyg1q41UvSfXp0EjqEVRnExh64QhM94c6RVJ+IEKxIG/Osa1EbSpScmGL9Agka4yW1L3NKMTHUqVGRgVEb39SBQ50= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789346740; c=relaxed/simple; bh=a73nlWUpFLqK5BIq+RCvdpji6ixUwx/paZfTWdzUUB8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kT8gmN4fhTa6lNUXGla3Y3PYvWrsithAeBzrwl4S0ZItSRZGHP6Mk/GJ+h8vyqy7u3NmjCK9XbJWlTVsGFT3Fu8iZqcGpvZHVESHsGD28geid1QeA1YJpxUIn32lXGlSEXImzjGtBYDP0KOlZWsysMjJepGGMiD09B4UShb5aP4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gs.ncku.edu.tw; spf=pass smtp.mailfrom=gs.ncku.edu.tw; dkim=pass (2048-bit key) header.d=gs-ncku-edu-tw.20251104.gappssmtp.com header.i=@gs-ncku-edu-tw.20251104.gappssmtp.com header.b=lhHKg/yY; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gs.ncku.edu.tw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gs.ncku.edu.tw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gs-ncku-edu-tw.20251104.gappssmtp.com header.i=@gs-ncku-edu-tw.20251104.gappssmtp.com header.b="lhHKg/yY" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2db3305f94fso42133065ad.0 for ; Sun, 13 Sep 2026 17:45:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gs-ncku-edu-tw.20251104.gappssmtp.com; s=20251104; t=1789346737; x=1789951537; darn=vger.kernel.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:content-type; bh=e2pCUaRthzuM/aWjTr8lb/B8fTUBfn+Ec5IEGb7Sxaw=; b=lhHKg/yYfgtY7OdpK3ssm9WT+N6kIdch+Ya7gpD+QRIC5NmuyJG8/JaWyXtA4Rx1uh pUR47jRv+a72vKbPU2pR6vnpLQZJCBHl25a7MFeICd151SS4F9/vm19nOpRIj5mwNiww i2aPTe80O1yLMLy6qR+Rv8rMd3cihs5MyZIHAh6k8sgpQvZawVzCCqdJWOiD//ZPbgp7 xN6OwgZVL6b03hg1IUGIRJl9GvXP3lKcikdeVpWo0NBtAHiMshXCZTLM3SNT9C/kbfOK P2KgpiHcGTRBxQjtagB2YIM4b8hrwCjmFygMUduku1nYECwkOmAMW3gm8T47KGTug9KQ a79A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789346737; x=1789951537; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=e2pCUaRthzuM/aWjTr8lb/B8fTUBfn+Ec5IEGb7Sxaw=; b=Yd8JqvMLoVDdvT6J4zG87ecrZ+0P9N/qcISgcfTOUK1NSLcvuFpI2SWJc+SFu50Qki v8GFa103oZi1gpkFzj2tWreygTuTsrGiSiBzhwaOGCEi2nQhgvy9DjQFle3cnfcwvrXL JojflGga3JPxhEU8q55Mb1S2ij6K83n9JQleS8AsutK0MxGB7TuRMg6vLxsDvcA8g2H+ myHp2DdY76RC4yRE9niVdDnzxkMbspML5W8t8yFp9PTuoltXH2v+3dsHo8tDScdTyT3g IX5T3sG/TQ8pXFJ+4U0ENdXzNkPR4k7L1H1ObdYxBkxrETFZ5bKWyWZMrdkrDRLoLgtd 1L8Q== X-Forwarded-Encrypted: i=1; AKwUvBySDIQtPfyKxZhB+J1r3qzFRDxM/HGsc3xfcZOYIUQisomDs48Q9Mfu1i65I3InuPzJFC4hITpDsU/nf9o=@vger.kernel.org X-Gm-Message-State: AFuF++nzEzH0oP55ZYoAw5+eFXHdIFoyZHQ0DUH3v9+Qp8FeFbcp0c/O x3GKUqkmCzQNJMFjHrGIE9NmU1xcAulzn/Cvc3rdIu2ID/sCTRZcvtR1KHNvYhpu+/0= X-Gm-Gg: AYBFou2J0MW03cB6nrToLGpaKNtEFMoZlbi3tDL38+qtNKMxseN4ICj9SRKZGfzDfWu kAbXwcBW+D4wuhw3JBdOaU3nXZQJbIOR6gEq3a6kS3va//2vZBP/E7mONRJDwrqpT4WJFfXiZcP p0wmzp1I1VBIhcKocodLFLg+jGpLMHAmoLBHXeV9ewnYHxRtQPH6PMhif1fCJsnM8w3AyCZZuVw 4IFShypBK1ybh0IuzQQHkSC4lBNnOBKYTPcDQlzO5yXtW0G8zOJ3qmRtBo/pHrceGTEjuh4ba43 zjbUjDEn3c+5lw8pAIpfeIR/lhhic5a5Pq/0CB5Pjh5orPt2wib/zhdK+cWoWL1ohfvp1iSYryd qfRNMyoyajJZh9L2EX7uNt4Zq2N9GucQU57zHw2y1XCkZcABQjKxyo80Q3wyVeCUXjBTXe6O4yV xdi/yknFSykSAzFEjWO0lMqQJSlBxgZJEeYD40e2PBM4k/x28hF8WmhTtu50KVzUTs2UvKFPh8O 6uyCtPrrCtdyOrVkOTADye/gBVieSrZFZfdfidMuaCxgVgcu1HkPbnzQA== X-Received: by 2002:a17:903:b8e:b0:2dd:60d:8b7c with SMTP id d9443c01a7336-2dd6c6e8df2mr6735155ad.13.1789346737316; Sun, 13 Sep 2026 17:45:37 -0700 (PDT) Received: from localhost.localdomain (111-240-141-218.dynamic-ip.hinet.net. [111.240.141.218]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2dd3f0faf19sm32604465ad.12.2026.09.13.17.45.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Sep 2026 17:45:37 -0700 (PDT) From: shuo huang To: netdev@vger.kernel.org Cc: linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, shuah@kernel.org, jiayuan.chen@linux.dev, f64116045@gs.ncku.edu.tw Subject: [PATCH net-next v3 1/2] selftests: net: Add TCP payload verification to udpgso_bench_rx Date: Mon, 14 Sep 2026 08:45:24 +0800 Message-Id: <20260914004525.46597-2-f64116045@gs.ncku.edu.tw> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260914004525.46597-1-f64116045@gs.ncku.edu.tw> References: <20260914004525.46597-1-f64116045@gs.ncku.edu.tw> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" udpgso_bench_rx supports UDP payload verification but rejects the combination of TCP and verification mode. Its TCP receive path discards the payload, so it cannot check the data generated by udpgso_bench_tx. Read the TCP payload into a buffer when verification is requested and check it against the transmitter's repeating alphabetic pattern. Preserve the verification position across recv() calls because TCP does not preserve send boundaries. Restart the pattern at the payload length supplied with -l, matching the transmitter's pattern restart on each message. Require a nonzero -l value for TCP verification and retain the existing discard path when verification is disabled. Signed-off-by: shuo huang Reviewed-by: Jiayuan Chen --- tools/testing/selftests/net/udpgso_bench_rx.c | 51 +++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/net/udpgso_bench_rx.c b/tools/testing/= selftests/net/udpgso_bench_rx.c index 1cbadd267..5270a46d2 100644 --- a/tools/testing/selftests/net/udpgso_bench_rx.c +++ b/tools/testing/selftests/net/udpgso_bench_rx.c @@ -89,6 +89,11 @@ static unsigned long gettimeofday_ms(void) return (tv.tv_sec * 1000) + (tv.tv_usec / 1000); } =20 +static char expected_char(unsigned int off) +{ + return 'a' + (off % 26); +} + static void do_poll(int fd, int timeout_ms) { struct pollfd pfd; @@ -161,14 +166,44 @@ static int do_socket(bool do_tcp) return fd; } =20 +static char sanitized_char(char val) +{ + return (val >=3D 'a' && val <=3D 'z') ? val : '.'; +} + +static void do_verify_tcp(const char *data, int len) +{ + static unsigned int stream_off; + int i; + + for (i =3D 0; i < len; i++) { + char expected =3D expected_char(stream_off); + + if (data[i] !=3D expected) + error(1, 0, + "data[%d]: stream offset %u, %c(%hhu) !=3D %c(%hhu)\n", + i, stream_off, + sanitized_char(data[i]), data[i], + expected, expected); + + stream_off++; + if (stream_off =3D=3D cfg_expected_pkt_len) + stream_off =3D 0; + } +} + /* Flush all outstanding bytes for the tcp receive queue */ static void do_flush_tcp(int fd) { + static char rbuf[ETH_MAX_MTU]; int ret; =20 while (true) { - /* MSG_TRUNC flushes up to len bytes */ - ret =3D recv(fd, NULL, 1 << 21, MSG_TRUNC | MSG_DONTWAIT); + if (cfg_verify) + ret =3D recv(fd, rbuf, sizeof(rbuf), MSG_DONTWAIT); + else + /* MSG_TRUNC flushes up to len bytes */ + ret =3D recv(fd, NULL, 1 << 21, MSG_TRUNC | MSG_DONTWAIT); if (ret =3D=3D -1 && errno =3D=3D EAGAIN) return; if (ret =3D=3D -1) @@ -178,17 +213,15 @@ static void do_flush_tcp(int fd) exit(0); } =20 + if (cfg_verify) + do_verify_tcp(rbuf, ret); + packets++; bytes +=3D ret; } =20 } =20 -static char sanitized_char(char val) -{ - return (val >=3D 'a' && val <=3D 'z') ? val : '.'; -} - static void do_verify_udp(const char *data, int len) { char cur =3D data[0]; @@ -347,8 +380,8 @@ static void parse_opts(int argc, char **argv) if (optind !=3D argc) usage(argv[0]); =20 - if (cfg_tcp && cfg_verify) - error(1, 0, "TODO: implement verify mode for tcp"); + if (cfg_tcp && cfg_verify && !cfg_expected_pkt_len) + error(1, 0, "tcp verify mode requires -l"); } =20 static void do_recv(void) --=20 2.34.1 From nobody Fri Sep 25 11:11:47 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A59612931F7 for ; Mon, 14 Sep 2026 00:45:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789346744; cv=none; b=fI6WjscQreZuu5SGQpS6jh7qF98v++lyFQjuib6SFz+1CXp+09OYljXqgVxDWPnpWV0fbNrWLA+yixKe1NIbbxgQa3kO4MmVoOK8U3xhdJyNPUsULZUWklCqOkflSVDgS89Q7gqA8oVFEV63a54p6qKs69n8pT8W74e398hd5iE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789346744; c=relaxed/simple; bh=HEzr018Zg9zeDMFyAi99qcjka/aNhAhdWDPG3d6Uc0c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=F/DsHSz1Rb/UlGySG7yclmx2g70KDEk6oJpWrDdCkFBMrnCLBJUeTR/RNrobY37dQudWY/Vk8ndoqCZyHfAkeuV71qQAqtnUrUnMksMrhqy2PVRrIU+DPpyj1h3ivHFjzX/W7pwYZUwQ2BFTRrpO03StgcpurHdSABYpaElmOSo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gs.ncku.edu.tw; spf=pass smtp.mailfrom=gs.ncku.edu.tw; dkim=pass (2048-bit key) header.d=gs-ncku-edu-tw.20251104.gappssmtp.com header.i=@gs-ncku-edu-tw.20251104.gappssmtp.com header.b=ORuQkuqm; arc=none smtp.client-ip=209.85.214.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gs.ncku.edu.tw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gs.ncku.edu.tw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gs-ncku-edu-tw.20251104.gappssmtp.com header.i=@gs-ncku-edu-tw.20251104.gappssmtp.com header.b="ORuQkuqm" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2d942c7cc2fso25723475ad.3 for ; Sun, 13 Sep 2026 17:45:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gs-ncku-edu-tw.20251104.gappssmtp.com; s=20251104; t=1789346742; x=1789951542; darn=vger.kernel.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:content-type; bh=oHfRQlL8Oc4xb+7dfHHHoFotMCf8gFX4P34jeATJRIQ=; b=ORuQkuqm0YxOAGj8Lix5KphZcJ0+Hqj1zZBmW1hy/eXL4v8AJW5vfTZcSzDP+OTuDq 7S8j6A9HbXL9NIj3lPnUw1dwZIQPFSgREFmHv9V+TCaXr9zomIW9/PRpgvMhYFJUavqG je8xFnwwoG+dmAmgUPiwPBW/udx1CP0zwQxhU05jm2okszDKfi4xKU0QGXKYDTBS6jfZ b76nfn0HhPHUiQKvdFDpaJCQEobn2klpAYrUXKh6JjKMS5A1ptm6U76HV4tH+ItEF1FZ CsgCp1TaxoEtjTNayaIvhSRQKntMSRS12ukLGV5TINUqr45m033DaNE4Om0cr4BHru/s jRag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789346742; x=1789951542; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=oHfRQlL8Oc4xb+7dfHHHoFotMCf8gFX4P34jeATJRIQ=; b=rDd1d2K/rHMa8jQ5TIZ9cfqXkvhWiBVadiNCdRMTejsxeFsFaXZFnPWSEipVVHOHmD lWJdFqTmTZmBKObgj8Z9SxGqqVr5DaSvRuVQ3IZpjICCLz+qenSpPzHmxznnSS2JRIlW biV6SOG4GApyveWn3YT4KAGm4L95bN9FX+wFvVM4jyytjanwtyhEO+7xAnuZLoyW25Kj uIcsF5FeS6LWvzkFr9075TFb1A6KWIuVfa9ga/YV7GcvilEIkg2ULWd/FUOCywbJSEIO cS6jEBQihYSo6T8plAPfBvmJ8IgUWKolN8zW0Id0sp9yXj91HLGUTKs8hgg1tHsGbXGD uNbA== X-Forwarded-Encrypted: i=1; AKwUvBzjK3/hB5+zmnY4vHsTGDFQv9RSZnA8FABRgunkRQ2V8d+Otq/+9z6c0CneYCPJ/VkZtXtPpfNzFcDying=@vger.kernel.org X-Gm-Message-State: AFuF++nHZ7VkggYzDTMCdJpnCHt+s9tY69nhJQTxdNv44K99MlhfB2HB SFlmw0V090duiI/8Y6uXOyLmQmsoFOPctdGbeFtVljaPvGBaRtFXAuhkbaeo/b/DQwg= X-Gm-Gg: AYBFou2xTvCzoOhuCyYXK6HBr6Yfi0IEf91cLkDXjaViy18d9dVFXWsMeYbp8kDpHmj lnUO4cFJKb7ulE21gvqkopPzFtQjKHrLmIZTvxjo8FFmFQ3ExVZOzyS7sQo2h2FjRv1Gp3i3r8G 1lyr0z2IgJgjkPG0finMH3ufCEn4CTYWP5p73Qz3Y1wG4Q0eMlbKx5aBC/u4tixdhI+mI2KRsDb cf61TcZB9Uuzw6QyhAMvXDSiGMbfbhPPLN8Omr81MUySOdirNsH0sKWKPHnpIoIKM273bPkR+2S Yd6WeyqY5oeZkbsWXbcTdXIARjN1Of2V3eaLlmv8cW/5fVAPjN7/DSDGsS63IaV4xoe50qzvQS7 Ps+NN3ylNEuDPLHlyq3oynLAQFAZgcNKo/Q2NQC+5wcDjDBwVlgr3hcp2tpqCusDWQDily3dMik UlXvfKoKG/POudZq8glRsgIBSqPXB7znHc8v8vDeLltn/Ia89aqy6PFXZgQPpTqwyyoGM0nWrfD LOGs5lXQTCvs23xY27M2eYAvusAzJ6DS+F51IUmZlyZ2v5hhoF25DjMXw== X-Received: by 2002:a17:903:1b0b:b0:2db:31d5:1448 with SMTP id d9443c01a7336-2dd6c763100mr5649905ad.22.1789346741862; Sun, 13 Sep 2026 17:45:41 -0700 (PDT) Received: from localhost.localdomain (111-240-141-218.dynamic-ip.hinet.net. [111.240.141.218]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2dd3f0faf19sm32604465ad.12.2026.09.13.17.45.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Sep 2026 17:45:41 -0700 (PDT) From: shuo huang To: netdev@vger.kernel.org Cc: linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, shuah@kernel.org, jiayuan.chen@linux.dev, f64116045@gs.ncku.edu.tw Subject: [PATCH net-next v3 2/2] selftests: net: Exercise TCP payload verification in udpgso_bench.sh Date: Mon, 14 Sep 2026 08:45:25 +0800 Message-Id: <20260914004525.46597-3-f64116045@gs.ncku.edu.tw> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260914004525.46597-1-f64116045@gs.ncku.edu.tw> References: <20260914004525.46597-1-f64116045@gs.ncku.edu.tw> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The benchmark script does not exercise TCP payload verification. Add a verification case for IPv4 and IPv6 using 100 4 KiB payloads. The payload length is not a multiple of 26, allowing the test to detect missing per-payload pattern resets. Wait for the receiver and propagate verification failures. Bound both processes with timeouts and leave the existing benchmarks unchanged. Signed-off-by: shuo huang --- tools/testing/selftests/net/udpgso_bench.sh | 35 +++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tools/testing/selftests/net/udpgso_bench.sh b/tools/testing/se= lftests/net/udpgso_bench.sh index 88fa1d53b..4d1938282 100755 --- a/tools/testing/selftests/net/udpgso_bench.sh +++ b/tools/testing/selftests/net/udpgso_bench.sh @@ -8,6 +8,8 @@ readonly YELLOW=3D'\033[0;33m' readonly RED=3D'\033[0;31m' readonly NC=3D'\033[0m' # No Color readonly TESTPORT=3D8000 +# Avoid a multiple of 26 to detect missing payload resets. +readonly TCP_VERIFY_LEN=3D$((4 * 1024)) =20 readonly KSFT_PASS=3D0 readonly KSFT_FAIL=3D1 @@ -79,6 +81,32 @@ run_one() { ./udpgso_bench_tx -p "$TESTPORT" ${args} } =20 +run_tcp_verify_one() { + local tcp_rx_pid + local i=3D0 + local -r timeout=3D10 + + timeout -k 1 30 ./udpgso_bench_rx -p "$TESTPORT" -t \ + -v -l "$TCP_VERIFY_LEN" & + tcp_rx_pid=3D$! + + while [ "$i" -lt "$timeout" ]; do + ss -lnHt "sport =3D :$TESTPORT" | grep -q . && break + i=3D$((i + 1)) + sleep 1 + done + if [ "$i" -eq "$timeout" ]; then + echo "timed out while waiting for udpgso_bench_rx" + return 1 + fi + + timeout -k 1 30 ./udpgso_bench_tx -p "$TESTPORT" "$@" \ + -t -s "$TCP_VERIFY_LEN" -M 100 || return $? + + # A successful sender does not imply that payload verification passed. + wait "$tcp_rx_pid" +} + run_in_netns() { local -r args=3D$@ =20 @@ -123,6 +151,10 @@ run_tcp() { echo "tcp zerocopy" run_in_netns ${args} -t -z =20 + echo "tcp verify" + ./in_netns.sh "$0" __verify_tcp ${args} + kselftest_test_exitcode $? + # excluding for now because test fails intermittently # add -P option to include poll() to reduce possibility of lost messages #echo "tcp zerocopy audit" @@ -149,6 +181,9 @@ if [[ $# -eq 0 ]]; then elif [[ $1 =3D=3D "__subprocess" ]]; then shift run_one $@ +elif [[ $1 =3D=3D "__verify_tcp" ]]; then + shift + run_tcp_verify_one "$@" else run_in_netns $@ fi --=20 2.34.1