From nobody Fri Sep 25 13:56:59 2026 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (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 1F1AB49E5F2 for ; Fri, 11 Sep 2026 16:07:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789142824; cv=none; b=rXZQLueIIqdmXTpc3fhMZgGVUTJ1Mz0FvzMBPMB3dpnouEilZn1NkS++eccYdxZOGQ2EJUhkBof7HXHY40vbSODfVEzv3y0L5bUFYovvEFO73QI9DvjMK+gielyXwVu4HegmFkIIxwuN34waPQoxfKOqRDrbAAsyP9myU2XE0Sg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789142824; c=relaxed/simple; bh=a73nlWUpFLqK5BIq+RCvdpji6ixUwx/paZfTWdzUUB8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZfN1TfOg2CPr+qFZViVbzcI7gSkjMQV/WkoKh6V86aVq8LWL92BCxRjxcgL0HMPt47Ayr7X74H7zlTiVksHevb96tf3hoTn5sjOk/zByFCmZv8FgCx9mUqN2qsjsIBbFCtsEeRQ9Q5qwwJnnTYhYY7Xkgc9ekJocm/suX9Oh6P8= 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=R3WD5xj+; arc=none smtp.client-ip=209.85.214.171 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="R3WD5xj+" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2db3305f94fso15074745ad.0 for ; Fri, 11 Sep 2026 09:07:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gs-ncku-edu-tw.20251104.gappssmtp.com; s=20251104; t=1789142822; x=1789747622; 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=R3WD5xj+NEJWhpkZHQuer4e4w9OO+aCtG4OkcHJ3mY8kawD+83vgD5XI3TzfTrye4N Gvfmne8fHr9TurUYFVzHceEB/3tY5o6NDH39kPalvFzwd+q6x9LZzeOtrxP7fmPruQKK t7yef9P16tXKv9MttNpOFmra9L2AYeorMnFnVkX/bc71/hozRMM+kG+9/n8eZsQt/QKO 4BCL9bciwRItZftUQMI3Sr+lAklT8gT4QoUwT2vgFnVRumuRRNeb5NVnOx2doApvm6A2 o7/NINpqpTuWki5MXhzgFaQl1adoR5UrLdNfPc/ZzveGQ49Evi3a9uKOCi3HzGp2s9nh 4D5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789142822; x=1789747622; 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=OPTpLN0VbztBbctA3Xyt4vUt5KO472tai05lXg3H14l2IqDnYj0nAwSwDThnCj5EJj mtLU/KMuJHEhLoM4JMLw0QTmS3wreJ/clJzpwq4gC1sPWxqrGu9+RJUEhccTqn9dvbRd J0xcrdGueqXaQw8sOzdrezf1dgvMkG8P6rrN3Z5CFy/8mbi9o9ipQVeI8pqfOBJ9pJiJ MnalHsJTrIUTp45IX1098GQLaEjSERFKmy+FBv9jmTR6wkdUMuBk759Bp4dfLHvB8tJv pv+3aHvbjYE6sQ0hsJzCnvYGoyreAXUOW6/TxQeqLWjAMXhVSsONfDyu1M8j5ZmE4FZE Nxtw== X-Forwarded-Encrypted: i=1; AKwUvByex6OZh4LFPTcbN3VLG7CjT1Vad/MUkwhqt8DwtjaPm4Bt/caWhpPU93DxSVnw/kFIgDj2dBNdr7s6KR0=@vger.kernel.org X-Gm-Message-State: AFuF++mCAd6pUUJwrGMFhU0J4tWFxsVrt6PxQU2NHT13y90DKzyvqKfR EjA9a36AM3fmrZtNo3gmctm5Og55um+dLoorQUGejW4hSwM3Xd7088LcwUQ9zyWYdus= X-Gm-Gg: AYBFou2sHWgHhN3WE/wIWzLx2f/XfwBjNROunqUyNsXZsN0iOVjLDcC4HmgMiSx8+ii 1wIGcb9xcigZ0q9091V+pC2cpplXhypzivdsa/2p3e8D2SZ6OGiI3/V15M9FMR4s1RvNY5EXv1L 8Gv7bpvFCf1BmZ51orP9hSIdOv5FboiV456mTfpMcAcz9iwko693Q909+tPlckmLmrsZYFA+fzm NU/S4zPOUJPSooQ3uSNZ91g/merMsUbTc5XAzHk0XXYgmCJpFhZmXQ4JEPzWYQWyfv9Ny6Pte8B o4Fmj2m9lHmjOagy2oc93g1axKEx0d0PavtCVNnLE62prWHFxGI7r9Z8xwfjHVvyYbMiDcubiiA ESrQTaeQTEK1bZRioIyrVMmH0FDvGbrLZiIgU7T6cbdlJCW/eNyYxn7iFsImw9JCu78cwegTELV SFvALhkLngCTUZ0Gog/ZDO1QR4MSQnbJZmLcx75ro1MLI65IkUSFYNKVQEYeK715vEZIdZkrqhX Ic9gpjZmMeTVBNBQ/F0HJGwGAnhIz5nAgN299C4xIdiR7FMCf2z1Bn9Eoo= X-Received: by 2002:a17:902:d484:b0:2d8:d4cc:5bb1 with SMTP id d9443c01a7336-2dd2a350491mr83902715ad.17.1789142822209; Fri, 11 Sep 2026 09:07:02 -0700 (PDT) Received: from localhost.localdomain (111-240-145-155.dynamic-ip.hinet.net. [111.240.145.155]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2dd2cfcefb6sm13883055ad.56.2026.09.11.09.06.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Sep 2026 09:07:01 -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 v2 1/2] selftests: net: Add TCP payload verification to udpgso_bench_rx Date: Sat, 12 Sep 2026 00:06:48 +0800 Message-Id: <20260911160649.51863-2-f64116045@gs.ncku.edu.tw> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260911160649.51863-1-f64116045@gs.ncku.edu.tw> References: <20260911160649.51863-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 13:56:59 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 8F0784A2607 for ; Fri, 11 Sep 2026 16:07:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789142830; cv=none; b=GQgx/AHDyBM0i9H6HAMnYLyt54NTg5mgYoQDGwtzf38iucm2TxCpknyihPVAn/bezh4mamYyUlAFCEY0g0FYlvlw90EUzRAQQA8Jcn1wHjhsd3OUkEL8/8slAg9tTJo/5FGGbmqGSvOGjBC8ihaCp9tc+cgepVNg8epboSTUDqY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789142830; c=relaxed/simple; bh=d0b26vmiDa6XjATQQbrbQCkSzbGsH3WL8tT83agm6AA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qyYIs4o+6GWdmZQWs3NjK7B7k3JvJdK+pSVvw4w2fRw+B9dE8hen2Sw3RFWTi9EmNXhgfsGXHwHJPauuGUvAzN9jYPRLL//dp53ZiQekEIcC1Btn075Lfm28DzDtXZVjVV10dGvntcK1RtQgZLtqInxe12HmjU3XSO0oxyH/Pt0= 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=a4Sjrt5n; arc=none smtp.client-ip=209.85.214.176 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="a4Sjrt5n" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2caced6038eso11728525ad.0 for ; Fri, 11 Sep 2026 09:07:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gs-ncku-edu-tw.20251104.gappssmtp.com; s=20251104; t=1789142828; x=1789747628; 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=AtfvJ4AyUB763MDcXdj9s80UgaBQitUqnV2ZMujP4B0=; b=a4Sjrt5nJQXK6KOXRiSTmXJ8jd1Bfarx5Hf0Qx6EwcT2jFjo199FRfj7epQINyvs5/ qHjlSsqXkBJwTcH4lidzpBDjBa4b9EGtXjJ+NjpzoyWlD1XczPYumXvBIL8dxDp3bOsM ZneiWRJAAgUnwi/9k24eXY8OaE/IoOzroCUmeKGi7oaHNcz20RZ5ZcXkxxq5YXiQoMLj +4nG8EboqM/hAuMnV0o7aSb0nniyG/gsa1XrVSbzQFR/I3MsQiSPD0mF8ViKXj15dQZ/ LWHmgnKtGCk8arW6NxvhnNIMJCeS9IW9xnVS9NFOHdLAys9A7BZl5g3a2czJKctl2NRr slmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789142828; x=1789747628; 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=AtfvJ4AyUB763MDcXdj9s80UgaBQitUqnV2ZMujP4B0=; b=ZWgvxcU55fpOwak36rk56y10s7owxVfBDzBV0rb27PwGs5ItfL33R6XZlCd9KLj0YK G34gaWggtkj0/sUePH7zybJDyF9XjOMO509PWk71zxgY80TmVVMkYTN+Jnu44l4oGEvZ at3Ad71oEKET9/M++EY++NSDxO27AIOFHr+qNxDZmgGexiM9zEPWk+OVeXPEKFvMm2iy vfibOr0zP/tkWyYjtBOtj0HwGQWryXKQujuSooFerkNLizQf9ZJU0fPI0WVFZL1RDd0q zEVxv8FLhSiz8qHZOPJ10OfiglUpnGzObRJR1jPqIjo6i9RwmfTc2z1bobYqnrYbvnBz jnFg== X-Forwarded-Encrypted: i=1; AKwUvBxXTEshMnb5YMCg7DNTesZgMfxKsHSoElAfiUwuI5GMQ0DX6Sx8lphPTvkX74+fxDhhhp4Mpx1lzztw3mA=@vger.kernel.org X-Gm-Message-State: AFuF++lPTcYVeNjc7iQMSyLtu6dL+bmJOhi7ibvq+1njbe7bhLAV3Rov dk29asWPbF2kbC0t0z9NXpHnrz/u+Rjqp7kQ865FcjT3daz+MI6nXchnAGWDb71zIJE= X-Gm-Gg: AYBFou09/AH3sPR0p+ZCnJNYv8BXazm3kWoMVvrlb1NpWet888KGRudjV1wwNs/0cCQ d+RjAecbNrx3cpcnO+al3LhUvGjBAySGYbI8juoea9rBSUgkgNhgu69P4wwT8iHxKn7gxs3dLU4 3ATdcDcMeu0xGs/PaPmu0wWSyEHaqGjcnxh2xFOJxWpze3EyDCO2h9q7eXOSahgvsCZ4s/gRcjT 4+JgUXIKCJ+iy1SeQtjiPe0SJ4WTMQ/CdlxNyfTAZWMOEjUe+LmtMnHiFfLc6rHCA7jxMRAeCF5 E4RsBN8JGy1TF+zyxjVAdZ/C2ahXmGkPqVZhYdyeovzriPDT9JjfjMs3pofkXavctGmPInQBgmz YTtiU4+bsgUUR5dP1PrmUIbUsRVO4HEl+5XjSEgVpLpDMjsL7uhvmefcBOt/ATQuJnte+XFUCta DUKqHBuBH1/mnushE3TD1bDks6xrQsvV9DBjj8Pf+uF87QYMImditcthZfKfk219c/65P8T52jl MMKk3muSQU1ML6g1Zg3rLyzG+y6YAtnC28rDOtJYPYv1XhUXyW5ICTfYg== X-Received: by 2002:a17:903:3d10:b0:2d7:5da6:2af4 with SMTP id d9443c01a7336-2dd0e8a4603mr107761555ad.4.1789142827893; Fri, 11 Sep 2026 09:07:07 -0700 (PDT) Received: from localhost.localdomain (111-240-145-155.dynamic-ip.hinet.net. [111.240.145.155]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2dd2cfcefb6sm13883055ad.56.2026.09.11.09.07.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Sep 2026 09:07:06 -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 v2 2/2] selftests: net: Exercise TCP payload verification in udpgso_bench.sh Date: Sat, 12 Sep 2026 00:06:49 +0800 Message-Id: <20260911160649.51863-3-f64116045@gs.ncku.edu.tw> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260911160649.51863-1-f64116045@gs.ncku.edu.tw> References: <20260911160649.51863-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 | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tools/testing/selftests/net/udpgso_bench.sh b/tools/testing/se= lftests/net/udpgso_bench.sh index 88fa1d53b..d02f206ec 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,31 @@ 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_LE= N" & + 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 +150,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 +180,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