From nobody Sun Feb 8 11:16:02 2026 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 8CECD1D5CFE for ; Thu, 29 May 2025 04:09:15 +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=1748491756; cv=none; b=lx3eU9E8swBR02KRS59ZRxTdgxche1YWBJMUJ/aOgcSA/Tyr5o6hCRKyUVe9We8IyddcDhj+RzgEfdsq5K9F+PrPrNZ3C5DPGEsYsNzyUAznmvR8ueNGSthcKF3kdKwgV/csTpQOvBqvqRnU6y5rYdf/bWRk/RqJq4DXMP7TZak= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748491756; c=relaxed/simple; bh=7o+lpUO/lqaGtBPfi1+vrH/tb1aSUWObzvXggcn31IU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Lv4PxCgBIjCrXJvykFBDmbentEteRUMHossL1MdxcE5+Wz4Pe14gM3AiVXpwwm0euepi4bQHrM1Z3GYeBfz2sAkZ38VtT2TxE/KNkUO7oj2gRO0DTyzz1X1lTQRWzX3LELe7cNb8JSmIu2KtON/dXzpGAxLHL5iH4usrX4CHqM8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fXJmrS0/; 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="fXJmrS0/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DD57CC4CEEE; Thu, 29 May 2025 04:09:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748491755; bh=7o+lpUO/lqaGtBPfi1+vrH/tb1aSUWObzvXggcn31IU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fXJmrS0/hnxlht1RKLsf1xAohO9sf/KsS0Z/6tw7NGSVva3e1OX0zTMIVrvHeNQWL qyUGshq8/CU+Zyy++u0uM9fMwsatJpqYai0fg9Ln+YjPD23x/iw+3aqjDP3R9bRI1G eS7XU6z4GdYPUZKFhbXSfFqjxFKhGKukbK0ln2Lf5neGkl5UfclnfaGIVuDPDLt12X 83IY2yiLCaymHZDVWh2WFyltU8oR2ttkDVdV8CjghXefIGNNruggga2tiuZDz/8wJC sn/CrsJ0ExCn3iHLpewqrZkgVKcjmgwgzPLe1MVwNrXHEbZfOqk2nKWUxizNEwGpKF WHC1/Oq1x/ulg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 1/3] selftests/bpf: Add sndbuf for send_recv_data Date: Thu, 29 May 2025 12:09:04 +0800 Message-ID: <1fce74fea292fe168a723b17fadd733e3d0e74d8.1748484770.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang This helper send_recv_data() is used by MPTCP BPF sched tests, but these tests require explicit setting of sockopt SO_SNDBUF, so this patch adds 'sndbuf' parameter to this helper to set this sockopt of the accept socket. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/network_helpers.c | 20 ++++++++++++++++++- tools/testing/selftests/bpf/network_helpers.h | 2 +- .../selftests/bpf/prog_tests/bpf_qdisc.c | 2 +- .../selftests/bpf/prog_tests/bpf_tcp_ca.c | 4 ++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/= selftests/bpf/network_helpers.c index 72b5c174ab3b..9cdb80127804 100644 --- a/tools/testing/selftests/bpf/network_helpers.c +++ b/tools/testing/selftests/bpf/network_helpers.c @@ -92,6 +92,17 @@ int settimeo(int fd, int timeout_ms) return 0; } =20 +static int setsndbuf(int fd, uint32_t sndbuf) +{ + if (sndbuf > 0 && + setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(sndbuf))) { + log_err("Failed to set SO_SNDBUF"); + return -1; + } + + return 0; +} + #define save_errno_close(fd) ({ int __save =3D errno; close(fd); errno =3D= __save; }) =20 int start_server_addr(int type, const struct sockaddr_storage *addr, sockl= en_t addrlen, @@ -667,6 +678,7 @@ int set_hw_ring_size(char *ifname, struct ethtool_ringp= aram *ring_param) struct send_recv_arg { int fd; uint32_t bytes; + uint32_t sndbuf; int stop; }; =20 @@ -690,6 +702,11 @@ static void *send_recv_server(void *arg) goto done; } =20 + if (setsndbuf(fd, a->sndbuf)) { + err =3D -errno; + goto done; + } + while (bytes < a->bytes && !READ_ONCE(a->stop)) { nr_sent =3D send(fd, &batch, MIN(a->bytes - bytes, sizeof(batch)), 0); @@ -718,12 +735,13 @@ static void *send_recv_server(void *arg) return NULL; } =20 -int send_recv_data(int lfd, int fd, uint32_t total_bytes) +int send_recv_data(int lfd, int fd, uint32_t total_bytes, uint32_t sndbuf) { ssize_t nr_recv =3D 0, bytes =3D 0; struct send_recv_arg arg =3D { .fd =3D lfd, .bytes =3D total_bytes, + .sndbuf =3D sndbuf, .stop =3D 0, }; pthread_t srv_thread; diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/= selftests/bpf/network_helpers.h index ef208eefd571..cc0e5f812de2 100644 --- a/tools/testing/selftests/bpf/network_helpers.h +++ b/tools/testing/selftests/bpf/network_helpers.h @@ -98,7 +98,7 @@ struct nstoken; */ struct nstoken *open_netns(const char *name); void close_netns(struct nstoken *token); -int send_recv_data(int lfd, int fd, uint32_t total_bytes); +int send_recv_data(int lfd, int fd, uint32_t total_bytes, uint32_t sndbuf); int make_netns(const char *name); int remove_netns(const char *name); =20 diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_qdisc.c b/tools/tes= ting/selftests/bpf/prog_tests/bpf_qdisc.c index 730357cd0c9a..2c35ce21a4a5 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_qdisc.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_qdisc.c @@ -35,7 +35,7 @@ static void do_test(char *qdisc) if (!ASSERT_OK_FD(cli_fd, "connect to client")) goto done; =20 - err =3D send_recv_data(srv_fd, cli_fd, total_bytes); + err =3D send_recv_data(srv_fd, cli_fd, total_bytes, 0); ASSERT_OK(err, "send_recv_data"); =20 done: diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c b/tools/te= sting/selftests/bpf/prog_tests/bpf_tcp_ca.c index b7d1b52309d0..090d876e0da4 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c @@ -70,7 +70,7 @@ static void do_test(const struct network_helper_opts *opt= s) if (!start_test(NULL, opts, opts, &lfd, &fd)) goto done; =20 - ASSERT_OK(send_recv_data(lfd, fd, total_bytes), "send_recv_data"); + ASSERT_OK(send_recv_data(lfd, fd, total_bytes, 0), "send_recv_data"); =20 done: if (lfd !=3D -1) @@ -169,7 +169,7 @@ static void test_dctcp(void) !ASSERT_EQ(errno, ENOENT, "bpf_map_lookup_elem(sk_stg_map)")) goto done; =20 - ASSERT_OK(send_recv_data(lfd, fd, total_bytes), "send_recv_data"); + ASSERT_OK(send_recv_data(lfd, fd, total_bytes, 0), "send_recv_data"); ASSERT_EQ(dctcp_skel->bss->stg_result, expected_stg, "stg_result"); =20 done: --=20 2.43.0 From nobody Sun Feb 8 11:16:02 2026 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 49D2C1D5CFE for ; Thu, 29 May 2025 04:09:16 +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=1748491759; cv=none; b=RPniypHANhMRcQ+UlI0O38U3Lyyff4he4hSC9E+BCgahAJJbWm0TEGbFi+H8wI/j0M1uYY0wuimaC3P8btjuEl917IiPr/IieMg5OjNoOjvmQCEWIYTwhvpmBYtISACyRphgDu8VQK4/YzSh6dcI2qYmjOoqQZmBQlBF+wQ9SoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748491759; c=relaxed/simple; bh=S9DWn45rd1Gl5UFviND2SaCaiqBYSJ6aCu6pz2elKiI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XDW7YH0dUPd39sSIatGv9W6qfrnHOsZ3/SY1q4ITdLCINGZTgjzl4VQPAbh0AZIKamYAlvw8WeXi5nbbQ9NRGzqYzwwpP0k0M7dy9CcQ42+uiG8zdo3LC9nhutCgug+n0xXw/OWQLzRODbTXoYB6dgatvBPKHhlLIl6NeXK07B8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=my4Rn8/w; 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="my4Rn8/w" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F91AC4CEEA; Thu, 29 May 2025 04:09:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748491756; bh=S9DWn45rd1Gl5UFviND2SaCaiqBYSJ6aCu6pz2elKiI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=my4Rn8/wvAeGqbHhdrOIWMrSO593vdlA2XftQ27v80bllSHrwUPA5ETgLNWvQe2CM 24v7BZcD5PNGhBhVIPabL16VkaR/xqaeWvvuh+Okxg60zNO7DtnIvJiJk/jbPufRRz ur3BflEhaYlj+v2pnvUUzj6M9/chfX73yefe0CxB5RG8A/JO3piqQ4AyvlYfgEdqYx dnlH8rz3vV119nhd7vutzQObHqtojJl3Ox87s/Thpv1AwJOdA6c8TiNwxCr6lQ17CB BpNPgoZBpP1SH9m2PdEwJxC+Pdy3c57RGW3QETMoL0wbOaHju6eLMkdXflN8wzPlzq jb2QCrL0EZ0IA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 2/3] Squash to "selftests/bpf: Add bpf scheduler test" Date: Thu, 29 May 2025 12:09:05 +0800 Message-ID: <2904b1a5d923ca8de14475a833da6edab3fa1582.1748484770.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang BPF tests fail sometimes (a probability of approximately 1%) with "bytes !=3D total_bytes" errors: test_burst:PASS:open_and_load:burst 0 nsec test_bpf_sched:PASS:Scheduler name too long 0 nsec test_bpf_sched:PASS:burst 0 nsec create_netns:PASS:ip netns add mptcp_ns 0 nsec create_netns:PASS:ip -net mptcp_ns link set dev lo up 0 nsec sched_init:PASS:create_netns 0 nsec endpoint_init:PASS:ip -net mptcp_ns link add veth1 type veth peer name endpoint_init:PASS:ip -net mptcp_ns addr add 10.0.1.1/24 dev veth1 0 nsec endpoint_init:PASS:ip -net mptcp_ns link set dev veth1 up 0 nsec endpoint_init:PASS:ip -net mptcp_ns addr add 10.0.1.2/24 dev veth2 0 nsec endpoint_init:PASS:ip -net mptcp_ns link set dev veth2 up 0 nsec endpoint_init:PASS:ip -net mptcp_ns mptcp endpoint add 10.0.1.2 subflow sched_init:PASS:endpoint_init 0 nsec test_bpf_sched:PASS:burst 0 nsec send_data_and_verify:PASS:burst 0 nsec send_data_and_verify:PASS:burst 0 nsec (network_helpers.c:613: errno: Resource temporarily unavailable) \ send 5608500 expected 10485760 (network_helpers.c:661: errno: None) recv 2755984 expected 10485760 (network_helpers.c:669: errno: None) Failed in thread_ret -11 send_data_and_verify:FAIL:send_recv_data unexpected error: -4 (errno 0) multipath-tcp#162/9 mptcp/burst:FAIL multipath-tcp#162 mptcp:FAIL This patch fixes this issue by setting SO_SNDBUF, while deliberately not setting SO_RCVBUF. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/487 Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/mptcp.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 7c51250e7161..5402d42335c3 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -590,6 +590,8 @@ static void send_data_and_verify(char *sched, bool addr= 1, bool addr2) struct timespec start, end; int server_fd, client_fd; unsigned int delta_ms; + unsigned int rcvbuf; + socklen_t optlen; =20 server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); if (!ASSERT_OK_FD(server_fd, "start_mptcp_server")) @@ -602,7 +604,14 @@ static void send_data_and_verify(char *sched, bool add= r1, bool addr2) if (clock_gettime(CLOCK_MONOTONIC, &start) < 0) goto fail; =20 - if (!ASSERT_OK(send_recv_data(server_fd, client_fd, total_bytes), + optlen =3D sizeof(rcvbuf); + if (getsockopt(server_fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, &optlen) < 0) + goto fail; + + if (setsockopt(server_fd, SOL_SOCKET, SO_SNDBUF, &rcvbuf, sizeof(rcvbuf))= < 0) + goto fail; + + if (!ASSERT_OK(send_recv_data(server_fd, client_fd, total_bytes, rcvbuf), "send_recv_data")) goto fail; =20 --=20 2.43.0 From nobody Sun Feb 8 11:16:02 2026 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 49D7A1DED52 for ; Thu, 29 May 2025 04:09:18 +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=1748491759; cv=none; b=I5hNxJjw3LvQuhPNTWZ5t5xy8V9t/mJVgRY86HH625AUCHC1VtafEtiJvbxW1KlhjqClEsd6w7B0++6T/YufYhDtnlFj9aox51aGkJGqUQ7B6opJnECy1bHDuKUwhbtOHvyKp/AQ+t8y/T38GaJVb/0fWz2G3+f2fH1mTbABm+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748491759; c=relaxed/simple; bh=zbPqWnL/aONW6MTgvQVjaEKHdEhgP05v11xrTpWF1yU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=p28p31lS8S2IpQxKH8IAz39jqU/e4jrAzkRO25FfabLDqBEiFEFFfQhfdbPvIrXUj7C0gEjzEa6/uClRPEUplBr0JuwrCuloZlV2ePGXsW2oZnTDWX6R4KJizrFIDKGPZ4p5qK06wZuQIHqB02WDBJkqNMbhbpv5FKopMgYFhtY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XbuL62Rg; 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="XbuL62Rg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 91A25C4CEEB; Thu, 29 May 2025 04:09:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748491758; bh=zbPqWnL/aONW6MTgvQVjaEKHdEhgP05v11xrTpWF1yU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XbuL62RgqoNDBsWLd9u8m8lTB13jd36eyt9uskqaIktEPA6ShRrB+WxzmyqjcESnP wT/LHUsrMHmWq/uNi6i8Ib1+B12WlVhvaRQd7yH9zI6dS9VOciFWVRPDaNjrYGMTgm F0o5UdzHz4CWRIuBdadlwfw37P+iwz1qGl6PYGas/6vrLEsSaqtJBC6Y1/AZOqyrBj +nOxYJ2yKxCZDoTcY6cYKY61M1i6w5ru7MticnvMXUDoSbX+QxOBKhl78dAISfazlg rIRb5ISnc3wWqBW5IWliB0opK+QGEgD31mO78HyP+7ISrK104JRLCBnGjLFxX7axYH gBC2NZ2ESp3fg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 3/3] DO-NOT-MERGE: selftests/bpf: Increase total_bytes of bpf sched tests Date: Thu, 29 May 2025 12:09:06 +0800 Message-ID: <7d761d89ba5ffa5693c221d62ba448c194a54818.1748484770.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Increase total_bytes to make #487 easier to reproduce, to verify that the previous two patches can indeed fix #487. This patch is only for testing, please do not merge it, it will make mptcp bpf sched testing particularly time-consuming. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/mptcp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 5402d42335c3..0b40a9a07b5c 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -56,7 +56,7 @@ #endif #define MPTCP_SCHED_NAME_MAX 16 =20 -static const unsigned int total_bytes =3D 10 * 1024 * 1024; +static const unsigned int total_bytes =3D 100 * 1024 * 1024; static int duration; =20 struct __mptcp_info { --=20 2.43.0