From nobody Thu Nov 27 14:00:54 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EB61623D7DA for ; Mon, 3 Nov 2025 19:19:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197593; cv=none; b=KWAZeUZNeBlRlPOz0eQXjOTOv/odioSTdf9NKx8ehwftyg8xQr7i9rp+XhbxNKp+Zf9FbXjC7KasShh8/UP3gwqIYz2uJ+PaLvtKWtQLrR1laFcljTXo1/DsPK+gLRrJrvLMlIO2GmUke9glJ+7nkat/lSjCsswPM9dAoVh1Yrc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197593; c=relaxed/simple; bh=Uh6Gvvx2to8FRM4FPvuDyTAWF8CAfBSLIXQJy2VoyT4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=if1ANu1EINOtyLzutxsZS9TuFBNH1KWwy0Trt++JwPNA48N0k9X5S0pUQXAEm+UmuCgt9ScWwatiy3cwrLKYmSL722VTBtjBJoKySTxmACHPgZ8jlyP4OAuwG3s4LvFBqIVEC+cNL5faVUJMw1Zcp5HpfP7XLWL8HZrDRA4hWUo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=M5V02PXb; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="M5V02PXb" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E8C71C4CEF8; Mon, 3 Nov 2025 19:19:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762197592; bh=Uh6Gvvx2to8FRM4FPvuDyTAWF8CAfBSLIXQJy2VoyT4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=M5V02PXbCZnWQ55oMSNTvLQYXQyoJ2XgbeUV3BQp4ajghwCt+MVEc9/XqI24Dl1gC ALle9TaFuhqai9kT0Ol2YH6DFErpdp7Q97Jt3r8FeHO9x6LW3D3vKTZUtZbziX0bQP ksogR9WCmp3yxZlLDsBSCxOya6E2XDtEgMCsBkM8wiP7YayMjCVSNccC9uPnYuQaYv 0iwPXZ6a+5EWlkZ/SezQHV+j01cpNiMsTxPc+THWkpHP6SMk42OztzzUD2Nh2O7ZKG 8dSc9D2WmNtNi4BZoT7WlSTbby0oVfo1afcLDpjAPV1KMux3ik0v/YKk+/RVuOggXL /Jq8sq/vdx1NA== From: "Matthieu Baerts (NGI0)" Date: Mon, 03 Nov 2025 20:19:31 +0100 Subject: [PATCH mptcp-next 1/5] selftests: mptcp: lib: introduce 'nstat_{init,get}' Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251103-slft-nstat-cache-v1-1-56025c09e56a@kernel.org> References: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> In-Reply-To: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5854; i=matttbe@kernel.org; h=from:subject:message-id; bh=Uh6Gvvx2to8FRM4FPvuDyTAWF8CAfBSLIXQJy2VoyT4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDI5GQLXNKnGhCR5xM8yZFn7bOWdryz1bWtOr+Fc/ligR ue1Dvu/jlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgImo5TEyPBDNsI9ylin+ELVW 8ceunhssNiLvtK4WGaxXT8naZXlZleF/aP0k7aNOrKWFMfMFDKsMTn2pVH+3P3P2y9mXoxsiulP YAQ== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 These new helpers are easier to read than the long and multi lines commands. Plus it will ease the addition of new features related to that in the next commits. No behavioural changes intended. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_connect.sh | 12 ++++-------- tools/testing/selftests/net/mptcp/mptcp_join.sh | 12 ++++-------- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 14 ++++++++++++++ tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 12 ++++-------- tools/testing/selftests/net/mptcp/simult_flows.sh | 12 ++++-------- 5 files changed, 30 insertions(+), 32 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_connect.sh index 9b7b93f8eb0c..e1f34508490a 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -384,11 +384,9 @@ do_transfer() sleep 1 fi =20 - NSTAT_HISTORY=3D/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ - nstat -n + mptcp_lib_nstat_init "${listener_ns}" if [ ${listener_ns} !=3D ${connector_ns} ]; then - NSTAT_HISTORY=3D/tmp/${connector_ns}.nstat ip netns exec ${connector_ns}= \ - nstat -n + mptcp_lib_nstat_init "${connector_ns}" fi =20 local stat_synrx_last_l @@ -436,11 +434,9 @@ do_transfer() kill ${cappid_connector} fi =20 - NSTAT_HISTORY=3D/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ - nstat | grep Tcp > /tmp/${listener_ns}.out + mptcp_lib_nstat_get "${listener_ns}" if [ ${listener_ns} !=3D ${connector_ns} ]; then - NSTAT_HISTORY=3D/tmp/${connector_ns}.nstat ip netns exec ${connector_ns}= \ - nstat | grep Tcp > /tmp/${connector_ns}.out + mptcp_lib_nstat_get "${connector_ns}" fi =20 local duration diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 495b14baccba..ee24adbcfb0c 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1000,10 +1000,8 @@ do_transfer() =20 cond_start_capture ${listener_ns} =20 - NSTAT_HISTORY=3D/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ - nstat -n - NSTAT_HISTORY=3D/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \ - nstat -n + mptcp_lib_nstat_init "${listener_ns}" + mptcp_lib_nstat_init "${connector_ns}" =20 local extra_args if [ $speed =3D "fast" ]; then @@ -1085,10 +1083,8 @@ do_transfer() =20 cond_stop_capture =20 - NSTAT_HISTORY=3D/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ - nstat | grep Tcp > /tmp/${listener_ns}.out - NSTAT_HISTORY=3D/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \ - nstat | grep Tcp > /tmp/${connector_ns}.out + mptcp_lib_nstat_get "${listener_ns}" + mptcp_lib_nstat_get "${connector_ns}" =20 if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then fail_test "client exit code $retc, server $rets" diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index d62e653d48b0..d03aa817ac27 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -355,6 +355,20 @@ mptcp_lib_is_v6() { [ -z "${1##*:*}" ] } =20 +mptcp_lib_nstat_init() { + local ns=3D"${1}" + + NSTAT_HISTORY=3D"/tmp/${ns}.nstat" ip netns exec "${ns}" nstat -n +} + +mptcp_lib_nstat_get() { + local ns=3D"${1}" + + # filter out non-*TCP stats + NSTAT_HISTORY=3D"/tmp/${ns}.nstat" ip netns exec "${ns}" nstat | + grep Tcp > "/tmp/${ns}.out" +} + # $1: ns, $2: MIB counter mptcp_lib_get_counter() { local ns=3D"${1}" diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_sockopt.sh index f01989be6e9b..343615908558 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh @@ -169,10 +169,8 @@ do_transfer() cmsg+=3D",TCPINQ" fi =20 - NSTAT_HISTORY=3D/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ - nstat -n - NSTAT_HISTORY=3D/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \ - nstat -n + mptcp_lib_nstat_init "${listener_ns}" + mptcp_lib_nstat_init "${connector_ns}" =20 timeout ${timeout_test} \ ip netns exec ${listener_ns} \ @@ -194,10 +192,8 @@ do_transfer() wait $spid local rets=3D$? =20 - NSTAT_HISTORY=3D/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ - nstat | grep Tcp > /tmp/${listener_ns}.out - NSTAT_HISTORY=3D/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \ - nstat | grep Tcp > /tmp/${connector_ns}.out + mptcp_lib_nstat_get "${listener_ns}" + mptcp_lib_nstat_get "${connector_ns}" =20 print_title "Transfer ${ip:2}" if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/test= ing/selftests/net/mptcp/simult_flows.sh index 1903e8e84a31..fbd1685d1adc 100755 --- a/tools/testing/selftests/net/mptcp/simult_flows.sh +++ b/tools/testing/selftests/net/mptcp/simult_flows.sh @@ -155,10 +155,8 @@ do_transfer() sleep 1 fi =20 - NSTAT_HISTORY=3D/tmp/${ns3}.nstat ip netns exec ${ns3} \ - nstat -n - NSTAT_HISTORY=3D/tmp/${ns1}.nstat ip netns exec ${ns1} \ - nstat -n + mptcp_lib_nstat_init "${ns3}" + mptcp_lib_nstat_init "${ns1}" =20 timeout ${timeout_test} \ ip netns exec ${ns3} \ @@ -185,10 +183,8 @@ do_transfer() kill ${cappid_connector} fi =20 - NSTAT_HISTORY=3D/tmp/${ns3}.nstat ip netns exec ${ns3} \ - nstat | grep Tcp > /tmp/${ns3}.out - NSTAT_HISTORY=3D/tmp/${ns1}.nstat ip netns exec ${ns1} \ - nstat | grep Tcp > /tmp/${ns1}.out + mptcp_lib_nstat_get "${ns3}" + mptcp_lib_nstat_get "${ns1}" =20 cmp $sin $cout > /dev/null 2>&1 local cmps=3D$? --=20 2.51.0 From nobody Thu Nov 27 14:00:54 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D1654502A for ; Mon, 3 Nov 2025 19:19:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197593; cv=none; b=Lmq2tAJpxZZMs2hcH5i2socnZre++rZ9wUWYqN9D00T/bYPcoJ34IAjch2IKNsl4/hc9RplhExhzEm5vnTjXg2Z2EJfI0Itgl8PDZAKCnOlYzn0LjGxA9ZmRbZoPgZqAUnq0bFtPtDeIr2Rjun4LCyrqo3fZFzRtIXbiYF2xNk8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197593; c=relaxed/simple; bh=ljyGXwfq0oOXZrLe2P2sS7nT3NURSWz4bUh0HRIHF8o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cn5VU5iAYEyTGK+QYT4iNcaVH/8kEw7DeUAxH5tOQ8Aypw5SwqIYUUotc2sYdPosIdOIbMn4luX4wkLCapL9s1OIYT/CHnSMk/LXjaBAXjY1KxT3a0oE2L4IJbGpJ+7aWDEWa65HhscJb9k5oDCbta8b087sa1sRYSLDgwWFspE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=r8Z78CEg; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="r8Z78CEg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C04F7C113D0; Mon, 3 Nov 2025 19:19:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762197593; bh=ljyGXwfq0oOXZrLe2P2sS7nT3NURSWz4bUh0HRIHF8o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=r8Z78CEgLDu+sCMPzP15AIz0+T9RQksqNdzT2odOUriui5HhH2IoxywaUMogj0wsW 7FjMvmgOJ4U2uKHUeq+3yl8ceFLFxdv+0Xhk2G9yIPcYxpaQwS8kEwjaS+Yfhxt58P JajI5BID9dv0iZrPmo6V2KHgqtImxasPP57qAolG0jURM/ZS6ceTz7v9oTdLBiY5UW HZ4BX0GCgh/VF1wjNU4yBjRURtwr4I/eRW2VEk5pnrKQYhjJnYumig7WIP4F9HiLfB Jvt0hmgGAM3tpavgWbknrGV+fPlovUivIUkHTnV+iXcP6qHBShVccEPhASKKj8sJpx 91uxOEtVwq+YA== From: "Matthieu Baerts (NGI0)" Date: Mon, 03 Nov 2025 20:19:32 +0100 Subject: [PATCH mptcp-next 2/5] selftests: mptcp: lib: remove stats files args Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251103-slft-nstat-cache-v1-2-56025c09e56a@kernel.org> References: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> In-Reply-To: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4498; i=matttbe@kernel.org; h=from:subject:message-id; bh=ljyGXwfq0oOXZrLe2P2sS7nT3NURSWz4bUh0HRIHF8o=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDI5GYJm3D/5Vrv2lpD+Rua8kr/CzDuN7oU2zQi02/Fat ag8eH5NRykLgxgXg6yYIot0W2T+zOdVvCVefhYwc1iZQIYwcHEKwESifjEy3BB0VvDe/zEz32Te xFW9F7S+mgZJeb3cxDvrQUtT4Ko3aowM8/8u/3W0YVvBS/WiprMOc4NaeYMnrtuU9vVq0r2CG6U dnAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Now that these files are written from MPTCP lib helpers, the stats file paths are uniformed. Then, no need to specify them from the each selftest. No behavioural changes intended. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_connect.sh | 3 +-- tools/testing/selftests/net/mptcp/mptcp_join.sh | 3 +-- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 15 ++++++++++----- tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 3 +-- tools/testing/selftests/net/mptcp/simult_flows.sh | 3 +-- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_connect.sh index e1f34508490a..4ff2d02429d3 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -444,8 +444,7 @@ do_transfer() printf "(duration %05sms) " "${duration}" if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then mptcp_lib_pr_fail "client exit code $retc, server $rets" - mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" \ - "/tmp/${listener_ns}.out" "/tmp/${connector_ns}.out" + mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" =20 echo cat "$capout" diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index ee24adbcfb0c..ad0981e0b377 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1088,8 +1088,7 @@ do_transfer() =20 if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then fail_test "client exit code $retc, server $rets" - mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" \ - "/tmp/${listener_ns}.out" "/tmp/${connector_ns}.out" + mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" return 1 fi =20 diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index d03aa817ac27..22ab39749ca2 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -106,23 +106,28 @@ mptcp_lib_pr_info() { mptcp_lib_print_info "INFO: ${*}" } =20 -# $1-2: listener/connector ns ; $3 port ; $4-5 listener/connector stat file +mptcp_lib_pr_nstat() { + local ns=3D"${1}" + local hist=3D"/tmp/${ns}.out" + + cat "${hist}" +} + +# $1-2: listener/connector ns ; $3 port mptcp_lib_pr_err_stats() { local lns=3D"${1}" local cns=3D"${2}" local port=3D"${3}" - local lstat=3D"${4}" - local cstat=3D"${5}" =20 echo -en "${MPTCP_LIB_COLOR_RED}" { printf "\nnetns %s (listener) socket stat for %d:\n" "${lns}" "${port}" ip netns exec "${lns}" ss -Menitam -o "sport =3D :${port}" - cat "${lstat}" + mptcp_lib_pr_nstat "${lns}" =20 printf "\nnetns %s (connector) socket stat for %d:\n" "${cns}" "${port}" ip netns exec "${cns}" ss -Menitam -o "dport =3D :${port}" - [ "${lstat}" !=3D "${cstat}" ] && cat "${cstat}" + [ "${lns}" !=3D "${cns}" ] && mptcp_lib_pr_nstat "${cns}" } 1>&2 echo -en "${MPTCP_LIB_COLOR_RESET}" } diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_sockopt.sh index 343615908558..42d533b95ec7 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh @@ -198,8 +198,7 @@ do_transfer() print_title "Transfer ${ip:2}" if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then mptcp_lib_pr_fail "client exit code $retc, server $rets" - mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" \ - "/tmp/${listener_ns}.out" "/tmp/${connector_ns}.out" + mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" =20 mptcp_lib_result_fail "transfer ${ip}" =20 diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/test= ing/selftests/net/mptcp/simult_flows.sh index fbd1685d1adc..503cb59571a4 100755 --- a/tools/testing/selftests/net/mptcp/simult_flows.sh +++ b/tools/testing/selftests/net/mptcp/simult_flows.sh @@ -200,8 +200,7 @@ do_transfer() fi =20 mptcp_lib_pr_fail "client exit code $retc, server $rets" - mptcp_lib_pr_err_stats "${ns3}" "${ns1}" "${port}" \ - "/tmp/${ns3}.out" "/tmp/${ns1}.out" + mptcp_lib_pr_err_stats "${ns3}" "${ns1}" "${port}" ls -l $sin $cout ls -l $cin $sout =20 --=20 2.51.0 From nobody Thu Nov 27 14:00:54 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 70C0D4502A for ; Mon, 3 Nov 2025 19:19:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197594; cv=none; b=WnqOp0jlOlnGna/xxxNNMu0AiGehj5zVNW42rTWIxoUeZAmoe/15iTzOYlGuqXNPONIN6OhTw3f4c10mBL6kEfR9Mmyh/Cxg8ocv72ia66aGc0GfQx1PLBfw0cOoHwf41g31RHWYn190scYy6hB5Akrmt74uAMXgJV117zHm1eQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197594; c=relaxed/simple; bh=56YEkVJG32LKXgKyLYxW3RpM843KanqvmIy0SURcTQo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lbYZ3RqN+/2JwMJGAQEhiYAeg0JcwAgLyMlbYoHeYGaSOJo129ukiORNhAcMjYPhtCp9TYpouOaCkKf6PCroHzXEN/8crNfVmQvPyRl4svx/L7ZmFwfgpMewYH5zitUK0Y4stjbVzx3tQ48sxWvfCeILzPEbX6Ri7rVLVY74bKQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CP8sKtzk; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="CP8sKtzk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97BE2C4CEF8; Mon, 3 Nov 2025 19:19:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762197594; bh=56YEkVJG32LKXgKyLYxW3RpM843KanqvmIy0SURcTQo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CP8sKtzk9m2xfPurIHNgp59e653OJB9IXBjQhZCpP4fOx/2czIUcOrdzYy0zJ5iW5 CYAj5j48R6iUuWFwZ4efsA0XZx+D2oU0epACQyh6nSUvx12jo0tgcHxhPdnzB16GSv FJmKH0gz1/Azu3ZDRUyA/ZJK07EAvmFl8M5FJXcJ5Rbi/LI63Cag9qWHLPNA/Pa9Sd FD1KfpgxYXbJqXB/TMmkjEOXIAgTuwsBViv07G96Hjov301VpH2is5/PBbtsbmisVb Bbn836fROi6Z7id3qip8ft5Jshw1eAOvcgKIFOdc9Jouwr9KXoP0i+WWzM7MGO3Qd0 Hxn1hlZowe6zw== From: "Matthieu Baerts (NGI0)" Date: Mon, 03 Nov 2025 20:19:33 +0100 Subject: [PATCH mptcp-next 3/5] selftests: mptcp: lib: stats: remove nstat rate columns Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251103-slft-nstat-cache-v1-3-56025c09e56a@kernel.org> References: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> In-Reply-To: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1033; i=matttbe@kernel.org; h=from:subject:message-id; bh=56YEkVJG32LKXgKyLYxW3RpM843KanqvmIy0SURcTQo=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDI5GYLPWnhapawpMbzrpXun+zn3vYjdtlUvv91m+layo iAzJtqko5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCK6kxgZFlXIifTPdeuY3fJp JWOFI9u81zuipxt6xYTnOUyZvfAJNyPDba9U/+NiT4qyzF9az3AsLJi75QPHfsYfR/QiftjyZx7 jAgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 With the MPTCP selftests, the nstat daemon is not used. It means that the last column (the rate) is always 0.0, and that's not something interesting to display. Then, this last column can be filtered out. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index 22ab39749ca2..f59268b25707 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -369,9 +369,9 @@ mptcp_lib_nstat_init() { mptcp_lib_nstat_get() { local ns=3D"${1}" =20 - # filter out non-*TCP stats + # filter out non-*TCP stats, and the rate (last column) NSTAT_HISTORY=3D"/tmp/${ns}.nstat" ip netns exec "${ns}" nstat | - grep Tcp > "/tmp/${ns}.out" + grep -o ".*Tcp\S\+\s\+[0-9]\+" > "/tmp/${ns}.out" } =20 # $1: ns, $2: MIB counter --=20 2.51.0 From nobody Thu Nov 27 14:00:54 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5373C347C3 for ; Mon, 3 Nov 2025 19:19:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197595; cv=none; b=W9VN6VBDADnJk1A6ex8homxQvIp2NbZy/d8dZh/xYcUayhhYREt3xGG2A7WAbe2iV+X3WUQBYWN8ygFSOo/bsnumZ1txP0pf0cVRZpcOxa1/WL0g8x7WHn1fkbbX5Sd7bm4mtlgYPQ9AVbyrcT79BViDM5tO4DdVwSGTg34h4Xc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197595; c=relaxed/simple; bh=cduwUTy0dA19w2e1JXRwS8/lqpsyvjnafgcUjwDdTCU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QwjRdlCx+dPUvaCZz9vJvHvofCLBqxfOquMiHiuSzZRpyPPl+pWtgHiEy6ZSxUlnGt7hCz/aIJYl5ngY58CQdP8BnA4FSU0h7s9FGdDPGjOIF/kAXG3BHy8EDoeuC7QnhFW4X233MAb9C6R5DVYMpAPtkjdkJB+0OuaX/siSR/U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SX8I5KJO; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SX8I5KJO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6EF26C113D0; Mon, 3 Nov 2025 19:19:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762197594; bh=cduwUTy0dA19w2e1JXRwS8/lqpsyvjnafgcUjwDdTCU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=SX8I5KJOIdK8zCcIZk8nqj9UvnHCMVz6B+Onz+DtUkkiGckeoJynI1sF0TGALwzOD 4BBBu73/UNT5RBiy8p/Fwq535cPVLYddkLsz8G4HrGAdETs5ZaBuXiB8LMC7hyEKV4 a0oIsW5Xbkf6toFvj1Kb04FSBCXB5RJIHrp9Bq6Tt7txSuVPGqXUcoUnH1Jc/I4gd0 125zffiTGHLfo4o+jpspSHj32McAYyWp6gGERb01DWFa+n7RZEfYwunfG2RgR4DNXs j2iWDa2mfzV+LTmMH/WTFG5zFweVUiUQ1Qec3e+rqVrOwt5JUkLo2KhwvvWhkcGJW9 A7fHawxVw3WIg== From: "Matthieu Baerts (NGI0)" Date: Mon, 03 Nov 2025 20:19:34 +0100 Subject: [PATCH mptcp-next 4/5] selftests: mptcp: join: dump stats from history Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251103-slft-nstat-cache-v1-4-56025c09e56a@kernel.org> References: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> In-Reply-To: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2190; i=matttbe@kernel.org; h=from:subject:message-id; bh=cduwUTy0dA19w2e1JXRwS8/lqpsyvjnafgcUjwDdTCU=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDI5GUIT0pmmPjurnVfceH3Sj/KfVjzF+afXMvWHXqgM4 3CY/m5JRykLgxgXg6yYIot0W2T+zOdVvCVefhYwc1iZQIYwcHEKwETu/mZkOFl142u1u/Hn7erl 09l/fYy8dXdJ38a0T79S3iadeaSofonhr/BF5Tf8L7ymL3x6mLvz8PYbHd0r3Bd9LG09+stShUv 9GhcA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 In case of errors, dump the stats from history instead of using nstat. There are multiple advantages to that: - The same filters from pr_err_stats are used, e.g. the unused 'rate' column is not displayed. - The counters are closer to the ones from when the test stopped. - While at it, the errors can be better presented: error colours, a small indentation to distinguish the different parts, extra new lines. Even if it should only happen in rare cases -- internal errors, or netns issues -- if no history is available, 'nstat' is used like before, just in case. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 16 ++++++++++++---- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 6 +++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index ad0981e0b377..6afcf6ad2788 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1163,12 +1163,20 @@ run_tests() do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} } =20 +_dump_stats() +{ + local ns=3D"${1}" + local side=3D"${2}" + + mptcp_lib_print_err "${side} ns stats (${ns2})" + mptcp_lib_pr_nstat "${ns}" + echo +} + dump_stats() { - echo Server ns stats - ip netns exec $ns1 nstat -as | grep Tcp - echo Client ns stats - ip netns exec $ns2 nstat -as | grep Tcp + _dump_stats "${ns1}" "Server" + _dump_stats "${ns2}" "Client" } =20 chk_csum_nr() diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index f59268b25707..603f33885f8e 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -110,7 +110,11 @@ mptcp_lib_pr_nstat() { local ns=3D"${1}" local hist=3D"/tmp/${ns}.out" =20 - cat "${hist}" + if [ -f "${hist}" ]; then + awk '{ print " "$0 }' "${hist}" + else + ip netns exec "${ns}" nstat -as | grep Tcp + fi } =20 # $1-2: listener/connector ns ; $3 port --=20 2.51.0 From nobody Thu Nov 27 14:00:54 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 62BDB347C3 for ; Mon, 3 Nov 2025 19:19:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197596; cv=none; b=Ps22BgA9/EICxAL6H9uv0S04Nre14zk3zvN/c8ysvs/B5b0qeq9O4103nfxajXyw9pINcfTp9+NNw+1UfUMaCnZIAn4cT64pS41mfTBhGO/nIp+n+FBPoHhDOiKNEhlaPcRHX3EcxKlWbCrtW+8ErADkcvfAk1ROFVXtiLvfY1E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762197596; c=relaxed/simple; bh=HRCMiSFufMhJZkGZEyhso8MOl2qrm3bOsvs8o9hMto8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rES0OpttGb4KFSD79HF0bDkOZRl/2JSu7YoSXajuWLK5RkAsaQJ5alrmpDmRfHTaJutRVLmOVGnNCwcDYK1+fbbEhtixcOzDCEL+AJSjeTxWhbvW/iQUibXNVG8+z7mGcnW4WKpLSMYPCyss5dS26LHK6ERaZhnPddMYeNMUzXc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BtFNMLGs; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BtFNMLGs" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45ED3C4CEF8; Mon, 3 Nov 2025 19:19:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762197595; bh=HRCMiSFufMhJZkGZEyhso8MOl2qrm3bOsvs8o9hMto8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BtFNMLGsUXu7HM8QOHXCvtoHZV5Z0n234kSdpQJ4G8z0XBIEVSpMZxj3bLJZYfOa5 ufVPvsl5b6FdTbPkZlSxTVXkfmpeAIJ+qqHyS1iEV942VywalFsaUQtekuSmRGv8y2 1Kj9dbyd2o5fmvEDixwqufZDbHgjk3WaQBWaPMF2UjfJh87Xv+kImJQGBzG43pJURl dlZWuLgI+PPI5o3AB3PcN8b9wXHXekAu92zQmOySgOwQatFxagaAcODXkXjArrIn4y CEPpzQo4FV6LOvqOuBTnWSNoVW+mq7YQfbRGbwcK6FIyYoWYeOo4k5iULmvUuzumCJ 8Xx9NXSM7flcA== From: "Matthieu Baerts (NGI0)" Date: Mon, 03 Nov 2025 20:19:35 +0100 Subject: [PATCH mptcp-next 5/5] selftests: mptcp: lib: get counters from nstat history Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251103-slft-nstat-cache-v1-5-56025c09e56a@kernel.org> References: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> In-Reply-To: <20251103-slft-nstat-cache-v1-0-56025c09e56a@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=9412; i=matttbe@kernel.org; h=from:subject:message-id; bh=HRCMiSFufMhJZkGZEyhso8MOl2qrm3bOsvs8o9hMto8=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDI5GcIu9reHqn45eei8YX/nLo1rXz4ZWt75KfZM9/8cw +t/19253FHKwiDGxSArpsgi3RaZP/N5FW+Jl58FzBxWJpAhDFycAjARjusM/90+937PdTm6TNt3 c/Wa17v+7GOSZnb25Mp0PzPJoCIsuIiR4bfMFP9vBnoe17a7uLd7mfuXy/6cUxd34QZbYlODfLg gJwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Before, 'nstat' was used to retrieve each individual counter: this means querying 4 different sources from /proc/net and iterating over 100+ counters each time. Instead, the stats could be retrieved once, and the output file could be parsed for each counter. Even better, such file is already present: the nstat history file. To be able to get this working, the nstat history file also needs to contains zero counters too, so it is still possible to know if a counter is missing or set to 0. This also simplifies mptcp_connect.sh: instead of checking multiple counters before and after a test to compute the difference, the stats history files can be reset before each test, and nstat can display only the difference. mptcp_lib_get_counter() continues to work when no history file is available: by fetching nstat directly, like before. This is the case in diag.sh and userspace_pm.sh where there is no need to save the history file. This is also the case in mptcp_join.sh, when 'run_tests' is executed in the background: easier to continue fetching counters than updating the history each time it is needed. Note: 'nstat' is called with '-s' in mptcp_lib_nstat_get(), so this helper can be called multiple times during the test if needed. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_connect.sh | 85 +++++++++---------= ---- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 16 +++- 2 files changed, 46 insertions(+), 55 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_connect.sh index 4ff2d02429d3..3a804abebd2c 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -389,21 +389,6 @@ do_transfer() mptcp_lib_nstat_init "${connector_ns}" fi =20 - local stat_synrx_last_l - local stat_ackrx_last_l - local stat_cookietx_last - local stat_cookierx_last - local stat_csum_err_s - local stat_csum_err_c - local stat_tcpfb_last_l - stat_synrx_last_l=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPC= apableSYNRX") - stat_ackrx_last_l=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPC= apableACKRX") - stat_cookietx_last=3D$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSync= ookiesSent") - stat_cookierx_last=3D$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSync= ookiesRecv") - stat_csum_err_s=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataC= sumErr") - stat_csum_err_c=3D$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtData= CsumErr") - stat_tcpfb_last_l=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPC= apableFallbackACK") - timeout ${timeout_test} \ ip netns exec ${listener_ns} \ ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ @@ -458,38 +443,38 @@ do_transfer() rets=3D$? =20 local extra=3D"" - local stat_synrx_now_l - local stat_ackrx_now_l - local stat_cookietx_now - local stat_cookierx_now - local stat_ooo_now - local stat_tcpfb_now_l - stat_synrx_now_l=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCa= pableSYNRX") - stat_ackrx_now_l=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCa= pableACKRX") - stat_cookietx_now=3D$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSynco= okiesSent") - stat_cookierx_now=3D$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSynco= okiesRecv") - stat_ooo_now=3D$(mptcp_lib_get_counter "${listener_ns}" "TcpExtTCPOFOQueu= e") - stat_tcpfb_now_l=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCa= pableFallbackACK") + local stat_synrx + local stat_ackrx + local stat_cookietx + local stat_cookierx + local stat_ooo + local stat_tcpfb + stat_synrx=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableS= YNRX") + stat_ackrx=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableA= CKRX") + stat_cookietx=3D$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookie= sSent") + stat_cookierx=3D$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookie= sRecv") + stat_ooo=3D$(mptcp_lib_get_counter "${listener_ns}" "TcpExtTCPOFOQueue") + stat_tcpfb=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableF= allbackACK") =20 - expect_synrx=3D$((stat_synrx_last_l)) - expect_ackrx=3D$((stat_ackrx_last_l)) + expect_synrx=3D0 + expect_ackrx=3D0 =20 cookies=3D$(ip netns exec ${listener_ns} sysctl net.ipv4.tcp_syncookies) cookies=3D${cookies##*=3D} =20 if [ ${cl_proto} =3D "MPTCP" ] && [ ${srv_proto} =3D "MPTCP" ]; then - expect_synrx=3D$((stat_synrx_last_l+connect_per_transfer)) - expect_ackrx=3D$((stat_ackrx_last_l+connect_per_transfer)) + expect_synrx=3D${connect_per_transfer} + expect_ackrx=3D${connect_per_transfer} fi =20 - if [ ${stat_synrx_now_l} -lt ${expect_synrx} ]; then - mptcp_lib_pr_fail "lower MPC SYN rx (${stat_synrx_now_l})" \ + if [ ${stat_synrx} -lt ${expect_synrx} ]; then + mptcp_lib_pr_fail "lower MPC SYN rx (${stat_synrx})" \ "than expected (${expect_synrx})" retc=3D1 fi - if [ ${stat_ackrx_now_l} -lt ${expect_ackrx} ]; then - if [ ${stat_ooo_now} -eq 0 ]; then - mptcp_lib_pr_fail "lower MPC ACK rx (${stat_ackrx_now_l})" \ + if [ ${stat_ackrx} -lt ${expect_ackrx} ]; then + if [ ${stat_ooo} -eq 0 ]; then + mptcp_lib_pr_fail "lower MPC ACK rx (${stat_ackrx})" \ "than expected (${expect_ackrx})" rets=3D1 else @@ -503,47 +488,45 @@ do_transfer() csum_err_s=3D$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumE= rr") csum_err_c=3D$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsum= Err") =20 - local csum_err_s_nr=3D$((csum_err_s - stat_csum_err_s)) - if [ $csum_err_s_nr -gt 0 ]; then - mptcp_lib_pr_fail "server got ${csum_err_s_nr} data checksum error[s]" + if [ $csum_err_s -gt 0 ]; then + mptcp_lib_pr_fail "server got ${csum_err_s} data checksum error[s]" rets=3D1 fi =20 - local csum_err_c_nr=3D$((csum_err_c - stat_csum_err_c)) - if [ $csum_err_c_nr -gt 0 ]; then - mptcp_lib_pr_fail "client got ${csum_err_c_nr} data checksum error[s]" + if [ $csum_err_c -gt 0 ]; then + mptcp_lib_pr_fail "client got ${csum_err_c} data checksum error[s]" retc=3D1 fi fi =20 - if [ ${stat_ooo_now} -eq 0 ] && [ ${stat_tcpfb_last_l} -ne ${stat_tcpfb_n= ow_l} ]; then + if [ ${stat_ooo} -eq 0 ] && [ ${stat_tcpfb} -gt 0 ]; then mptcp_lib_pr_fail "unexpected fallback to TCP" rets=3D1 fi =20 if [ $cookies -eq 2 ];then - if [ $stat_cookietx_last -ge $stat_cookietx_now ] ;then + if [ $stat_cookietx -eq 0 ] ;then extra+=3D" WARN: CookieSent: did not advance" fi - if [ $stat_cookierx_last -ge $stat_cookierx_now ] ;then + if [ $stat_cookierx -eq 0 ] ;then extra+=3D" WARN: CookieRecv: did not advance" fi else - if [ $stat_cookietx_last -ne $stat_cookietx_now ] ;then + if [ $stat_cookietx -gt 0 ] ;then extra+=3D" WARN: CookieSent: changed" fi - if [ $stat_cookierx_last -ne $stat_cookierx_now ] ;then + if [ $stat_cookierx -gt 0 ] ;then extra+=3D" WARN: CookieRecv: changed" fi fi =20 - if [ ${stat_synrx_now_l} -gt ${expect_synrx} ]; then + if [ ${stat_synrx} -gt ${expect_synrx} ]; then extra+=3D" WARN: SYNRX: expect ${expect_synrx}," - extra+=3D" got ${stat_synrx_now_l} (probably retransmissions)" + extra+=3D" got ${stat_synrx} (probably retransmissions)" fi - if [ ${stat_ackrx_now_l} -gt ${expect_ackrx} ]; then + if [ ${stat_ackrx} -gt ${expect_ackrx} ]; then extra+=3D" WARN: ACKRX: expect ${expect_ackrx}," - extra+=3D" got ${stat_ackrx_now_l} (probably retransmissions)" + extra+=3D" got ${stat_ackrx} (probably retransmissions)" fi =20 if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index 603f33885f8e..ce6c92826be7 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -111,7 +111,7 @@ mptcp_lib_pr_nstat() { local hist=3D"/tmp/${ns}.out" =20 if [ -f "${hist}" ]; then - awk '{ print " "$0 }' "${hist}" + awk '$2 !=3D 0 { print " "$0 }' "${hist}" else ip netns exec "${ns}" nstat -as | grep Tcp fi @@ -367,6 +367,7 @@ mptcp_lib_is_v6() { mptcp_lib_nstat_init() { local ns=3D"${1}" =20 + rm -f "/tmp/${ns}."{nstat,out} NSTAT_HISTORY=3D"/tmp/${ns}.nstat" ip netns exec "${ns}" nstat -n } =20 @@ -374,18 +375,25 @@ mptcp_lib_nstat_get() { local ns=3D"${1}" =20 # filter out non-*TCP stats, and the rate (last column) - NSTAT_HISTORY=3D"/tmp/${ns}.nstat" ip netns exec "${ns}" nstat | + NSTAT_HISTORY=3D"/tmp/${ns}.nstat" ip netns exec "${ns}" nstat -sz | grep -o ".*Tcp\S\+\s\+[0-9]\+" > "/tmp/${ns}.out" } =20 # $1: ns, $2: MIB counter +# Get the counter from the history (mptcp_lib_nstat_{init,get}()) if avail= able. +# If not, get the counter from nstat ignoring any history. mptcp_lib_get_counter() { local ns=3D"${1}" local counter=3D"${2}" + local hist=3D"/tmp/${ns}.out" local count =20 - count=3D$(ip netns exec "${ns}" nstat -asz "${counter}" | - awk 'NR=3D=3D1 {next} {print $2}') + if [[ -s "${hist}" && "${counter}" =3D=3D *"Tcp"* ]]; then + count=3D$(awk "/^${counter} / {print \$2; exit}" "${hist}") + else + count=3D$(ip netns exec "${ns}" nstat -asz "${counter}" | + awk 'NR=3D=3D1 {next} {print $2}') + fi if [ -z "${count}" ]; then mptcp_lib_fail_if_expected_feature "${counter} counter" return 1 --=20 2.51.0