From nobody Sat May 18 21:00:24 2024 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 D592F3839A for ; Tue, 2 Apr 2024 07:16:04 +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=1712042164; cv=none; b=hdVOIcQpap9LuYeeh4bTG2thZ4K+/O4pVa1LLyEz0lBVwGpgF/gnl8mDxJ6xFTQjTqVkG8sC3sRLG/0+37NyRDUgd6yUeRy0EHv2ZRHNnpY8CPycMjANRDmt6nIM90H/xRjifBEOC+LAfNKy50ZPJU3U0szgRNxNlv13B2FxNf0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042164; c=relaxed/simple; bh=2AX+Is4y3Wk3xT/v83nqHaYe/s/mHl2JO8mleHGsQ7c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JyLvb2hum0df5dv9BF93M9Xj+auh6HxSTEXqHsG+IZJ7fwtf7bFNtKwcFk3bzvh/qnfO4q1qBdejuuehfb3eeIqEP1HUihLteGpi7scjdkkGgkN+blP8C/2SS5xJiPKeBdx1Hpx+Sx9apuj6zWGTyPiNfjORTQ6cVWe03O8wRsE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LW3NxLwo; 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="LW3NxLwo" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 925EEC433C7; Tue, 2 Apr 2024 07:16:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042164; bh=2AX+Is4y3Wk3xT/v83nqHaYe/s/mHl2JO8mleHGsQ7c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LW3NxLwojjJdAn0DwSPMZDH79oI9M/o3C5iofRG9uq82h1NfjFasCSVnWXoGT28se weYMG+LOqJzGjvyUrOBgeyddgRd7a5GMaJT+uGLnDcri7xqHy9vGRQouU3QfoxSafJ Fo2WWKLbHdOo9MoPZ3oUhwG0R6OaNpbq7/gT/wmBHjp+UNQvARhCc+yafMJpJFUC0+ pGDKvJhbh1UVdFaPzC/2GrOeDRqeYBzBvINM9kTZ9C32dmn8oGoKRwUM2nn5QFmZ/U 3U9z2fh0pk/dZFOzRnspdwPStkkgQvTi36ULej0TeIPKvS3L4Jf6xwuwylQTbDqO8X KcClIwaSNDRPA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 01/10] Squash to "selftests/bpf: Add bpf scheduler test" 1 nonblock Date: Tue, 2 Apr 2024 15:15:49 +0800 Message-Id: X-Mailer: git-send-email 2.40.1 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 with "bytes !=3D total_bytes" errors: # test_default:PASS:sched_init:default 0 nsec # send_data:PASS:pthread_create 0 nsec # send_data:FAIL:recv 936000 !=3D 10485760 nr_recv:-1 errno:11 # default: 3041 ms # server:FAIL:send 7579500 !=3D 10485760 nr_sent:-1 errno:11 # send_data:FAIL:pthread_join thread_ret:-11 \ test_default:PASS:has_bytes_sent addr_1 0 nsec # test_default:PASS:has_bytes_sent addr_2 0 nsec # close_netns:PASS:setns 0 nsec Here errno 11 is EAGAIN. This patch sets server socket to nonblock to fix this. It makes BPF tests stable. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/mptcp.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 6e28215d7404..d3d51aee440d 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -88,6 +88,16 @@ static void cleanup_netns(struct nstoken *nstoken) SYS_NOFAIL("ip netns del %s", NS_TEST); } =20 +static int set_nonblock(int fd) +{ + int flags =3D fcntl(fd, F_GETFL); + + if (flags =3D=3D -1) + return -1; + + return fcntl(fd, flags | O_NONBLOCK); +} + static int verify_tsk(int map_fd, int client_fd) { int err, cfd =3D client_fd; @@ -466,6 +476,7 @@ static void test_default(void) server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); client_fd =3D connect_to_fd(server_fd, 0); =20 + set_nonblock(server_fd); send_data(server_fd, client_fd, "default"); ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr_1"); ASSERT_OK(has_bytes_sent(ADDR_2), "has_bytes_sent addr_2"); @@ -639,6 +650,7 @@ static void test_burst(void) server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); client_fd =3D connect_to_fd(server_fd, 0); =20 + set_nonblock(server_fd); send_data(server_fd, client_fd, "bpf_burst"); ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr 1"); ASSERT_OK(has_bytes_sent(ADDR_2), "has_bytes_sent addr 2"); --=20 2.40.1 From nobody Sat May 18 21:00:24 2024 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 D607238DFC for ; Tue, 2 Apr 2024 07:16:05 +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=1712042165; cv=none; b=iufinUptjKgmwkRPQsb/Q0BbTdPJe8Qiaj0NsjvHjG+xBcMn5hDPFwzDX3quWilL2h2goW7xY0jt268NeyPcVZoJ61BaOT3Szuayid7nhFDY3PfPbu6U1vwUklRTbCtowD5cLFKmNAPv8ANNtl7++FdjPG1o/JmzICIOr/Y2cFo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042165; c=relaxed/simple; bh=ujos7wz/wPYZHup/NGzIMh3hJkNhEYi/Ko6EPG//BRo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Tkz8iBgGBhxpLrVjKvZhPcXeojM1gKmx54dUWeKJebNfSa50b921Oyh2T2jDVjfcbNe+WlBcyfjSu8YudKZVCGvuVAqpsiJlkIZNhd/AvM79WbIRF64a1GrPofCB0IaO6xr8ZENtcPylT4Vtdh/79UCT81weK3VM1053uRFXAy4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rDb/zNkh; 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="rDb/zNkh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E16AAC43390; Tue, 2 Apr 2024 07:16:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042165; bh=ujos7wz/wPYZHup/NGzIMh3hJkNhEYi/Ko6EPG//BRo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rDb/zNkh7oFo6gpgeVcsd8oRDoLyQZFo8QVt2x7cMBiJ7i3vUnQOmYHAedbLViO29 UGys+ppklL76YMCcCxR8bxE7lJiT+jLOVf/gGJ6NqKk0rhgKiL0aVgdflo+tGdWY65 jHlMcuAlTpgvFq2X3VSxoQfNsjHmcAELYK4LrA6Hf+GhSonNQEnXGWhk7D8LrLZ3Hw uoFMpW6C5OTAoX8gt530uMYagBg/AY0N1t0Vqv+m7u0kITlz3hYdL9bOn0qtSpAKvm hORo4E/Qvi7S/DcMDahn+asnd5p0u4Xs5bCfG/tl+opIDnyz56EJeX9O/7sNJ6BUjW Di9VKSSSu6AEA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 02/10] selftests/bpf: Add RUN_MPTCP_TEST macro Date: Tue, 2 Apr 2024 15:15:50 +0800 Message-Id: <13d8499431364fa9b386db181b555ce5fa12e3df.1712042049.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 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 Each MPTCP subtest tests test__start_subtest(suffix), then invokes test_suffix(). It makes sense to add a new macro RUN_MPTCP_TEST to simpolify the code. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/mptcp.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index d3d51aee440d..faa0dc37b78e 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -663,12 +663,16 @@ static void test_burst(void) mptcp_bpf_burst__destroy(burst_skel); } =20 +#define RUN_MPTCP_TEST(suffix) \ +do { \ + if (test__start_subtest(#suffix)) \ + test_##suffix(); \ +} while (0) + void test_mptcp(void) { - if (test__start_subtest("base")) - test_base(); - if (test__start_subtest("mptcpify")) - test_mptcpify(); + RUN_MPTCP_TEST(base); + RUN_MPTCP_TEST(mptcpify); if (test__start_subtest("default")) test_default(); if (test__start_subtest("first")) --=20 2.40.1 From nobody Sat May 18 21:00:24 2024 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 8279638DD2 for ; Tue, 2 Apr 2024 07:16:07 +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=1712042167; cv=none; b=iQc1E/I3UF2g28JVm+Sgjbik8RjckxvVRvN7xDqW47iD248QcK8bk/9Ky+yiB7glGR5TUEqiEN2vMNDwK26zudSw9Y89Ph54lQnhsEul7SJEYYwxvH7l11FYjztHQID4x8/wjz/WG57U6W8Bmk5Cc/ORnSnSVqDHwyjpusjw2IM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042167; c=relaxed/simple; bh=RH4KN2+5DJ1d8MBkcVtP10+jza6kUsMOWUgO5//xzQA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JrsPyC21f4HaiX+ZQGa3RN9aT51MjJgpZM34fO51oGxPvYfcf5kN1lSFVru442aTKynSdc8pAQkOR4VYZ2UHaHfQ5lsw0ay8gAJPJNxw2dE5rjup7UaOcb3EWMHonXT8/otMndkpxloQzUaDxEeUxyajZCjYIoxH8bFpp6OJNT0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KbEvCqd6; 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="KbEvCqd6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3CE9AC433C7; Tue, 2 Apr 2024 07:16:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042167; bh=RH4KN2+5DJ1d8MBkcVtP10+jza6kUsMOWUgO5//xzQA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KbEvCqd6qRDJflCqR1twNx2DHqC2su0dXY8gGhQMTJKxXqkcW5rWGb0QrViYyXPTM 5R7lFSCYXSszztgiOcmIiD93B0GGVsu01DB1KHH6Pi/3R2VUoURNn+FmWhiN6njf8A GrzDa2/WwLZQ8/UDXi0vzFxDkdMDak2R7ukqrqWhYX5c+ATOxtj8qC2L3KmWhdb7Wc NxiRnfQLTq1otEprPTtUjKsswdKk/Vfz8Dk9uQ25VCxJOMrbbOFMOsxHe50nJim+wj x0t7DxG3oAQkrmfPM/sbha7ZD3q82qUyv+GpBPk4ZIpKQnm2BPVHKWD6R/1+EsTNCc SZDt3quMGtOvQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 03/10] Squash to "selftests/bpf: Add bpf scheduler test" 2 verify Date: Tue, 2 Apr 2024 15:15:51 +0800 Message-Id: <8d65c3542108e663b4c204cd3ea1945f97e350ff.1712042049.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 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 Add send_data_and_verify helper. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index faa0dc37b78e..24cd0edc03fc 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -465,24 +465,47 @@ static int has_bytes_sent(char *addr) return system(cmd); } =20 -static void test_default(void) +static void send_data_and_verify(char *msg, int addr1, int addr2) { int server_fd, client_fd; - struct nstoken *nstoken; =20 - nstoken =3D sched_init("subflow", "default"); - if (!ASSERT_OK_PTR(nstoken, "sched_init:default")) - goto fail; server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); + if (!ASSERT_NEQ(server_fd, -1, "start_mptcp_server")) + return; + client_fd =3D connect_to_fd(server_fd, 0); + if (!ASSERT_NEQ(client_fd, -1, "connect_to_fd")) + goto close_server; =20 - set_nonblock(server_fd); - send_data(server_fd, client_fd, "default"); - ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr_1"); - ASSERT_OK(has_bytes_sent(ADDR_2), "has_bytes_sent addr_2"); + if (set_nonblock(server_fd)) + goto close_server; + + send_data(server_fd, client_fd, msg); + + if (addr1) + ASSERT_OK(has_bytes_sent(ADDR_1), "Should have bytes_sent on addr1"); + else + ASSERT_GT(has_bytes_sent(ADDR_1), 0, "Shouldn't have bytes_sent on addr1= "); + if (addr2) + ASSERT_OK(has_bytes_sent(ADDR_2), "Should have bytes_sent on addr2"); + else + ASSERT_GT(has_bytes_sent(ADDR_2), 0, "Shouldn't have bytes_sent on addr2= "); =20 close(client_fd); +close_server: close(server_fd); +} + +static void test_default(void) +{ + struct nstoken *nstoken; + + nstoken =3D sched_init("subflow", "default"); + if (!ASSERT_OK_PTR(nstoken, "sched_init:default")) + goto fail; + + send_data_and_verify("default", 1, 1); + fail: cleanup_netns(nstoken); } @@ -673,8 +696,7 @@ void test_mptcp(void) { RUN_MPTCP_TEST(base); RUN_MPTCP_TEST(mptcpify); - if (test__start_subtest("default")) - test_default(); + RUN_MPTCP_TEST(default); if (test__start_subtest("first")) test_first(); if (test__start_subtest("bkup")) --=20 2.40.1 From nobody Sat May 18 21:00:24 2024 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 88ADD383A4 for ; Tue, 2 Apr 2024 07:16:08 +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=1712042168; cv=none; b=q88wPZs8wpM4w/oWCRsDfG9C660CXwEohyLn2LoHhGJJFYn4UuKCijOdrIAszLx+/KMpTnilySuNrrLi1U2xOZTuJvwxLPmuPAkgzRU7CUe6A2V7XZSTXKjX/yXrvyrI5GSOoosdq8Yri3kXTWGD+SzO1C5DxQ4MNEXX6qVuBaQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042168; c=relaxed/simple; bh=ZAyLvZIU1n3LL8wbE2KNAB6b9UVIxS+pNoxnwe1ZMQQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HjGm0Y6zofz3LBY5znl/TstGwrkR8z7wZ6EwaJ7GUPFeDHvktddizQyR+iY1C0J1oe8o8OAVGgajlTDwFS63Dljuxt/vUyKY5RdxHJ/cyhtAsyPTPjR5rLv82WoANCH2sM+p3nSYC++DovLDQB7ylP5R51/yGFxIya95y6a9PrY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kJcu5sgt; 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="kJcu5sgt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8BA86C43390; Tue, 2 Apr 2024 07:16:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042168; bh=ZAyLvZIU1n3LL8wbE2KNAB6b9UVIxS+pNoxnwe1ZMQQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kJcu5sgt6SMaeQeiiv2jeL+80yuUPdpm61y9KJrFtr4obe5Yb4QyH2X3FW1Qjfczr AdbjkwvbZKFpNRMkNI58lZA/bUlVoXzAVPTlVerWlPoqlHlB9ZPni5dpCPU755a18L VRsd7kJ7ewoJ3pD2raqj5qiCgevXZaXuTHRKCNP0bfV973WNNOyUIBjoDx6NyKTVvC 2JLCrGMbjWDP1gVyEw21MoCmyoVd7t6nxjLycPJ0sS1gfuQRzNjsNTYFX5kGWmj3OS pCASsqOFQjFcgzTrF5TlVpC6AQuMhLXAYpUcrvNYMv1Zkw0IYu207MNQRnrZvX9ps2 /LjDAkNaXD1KQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 04/10] Squash to "selftests/bpf: Add bpf scheduler test" 3 time Date: Tue, 2 Apr 2024 15:15:52 +0800 Message-Id: <4b6384814f6284623a1aea48f5db4567505f77a0.1712042049.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 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 Move time related code into send_data_and_verify. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 24cd0edc03fc..31808da47ab6 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -5,7 +5,6 @@ #include #include #include -#include #include "cgroup_helpers.h" #include "network_helpers.h" #include "mptcp_sock.skel.h" @@ -388,16 +387,12 @@ static void *server(void *arg) static void send_data(int lfd, int fd, char *msg) { ssize_t nr_recv =3D 0, bytes =3D 0; - struct timespec start, end; - unsigned int delta_ms; pthread_t srv_thread; void *thread_ret; char batch[1500]; int err; =20 WRITE_ONCE(stop, 0); - if (clock_gettime(CLOCK_MONOTONIC, &start) < 0) - return; =20 err =3D pthread_create(&srv_thread, NULL, server, (void *)(long)lfd); if (CHECK(err !=3D 0, "pthread_create", "err:%d errno:%d\n", err, errno)) @@ -414,16 +409,9 @@ static void send_data(int lfd, int fd, char *msg) bytes +=3D nr_recv; } =20 - if (clock_gettime(CLOCK_MONOTONIC, &end) < 0) - return; - - delta_ms =3D (end.tv_sec - start.tv_sec) * 1000 + (end.tv_nsec - start.tv= _nsec) / 1000000; - CHECK(bytes !=3D total_bytes, "recv", "%zd !=3D %u nr_recv:%zd errno:%d\n= ", bytes, total_bytes, nr_recv, errno); =20 - printf("%s: %u ms\n", msg, delta_ms); - WRITE_ONCE(stop, 1); =20 pthread_join(srv_thread, &thread_ret); @@ -467,7 +455,9 @@ static int has_bytes_sent(char *addr) =20 static void send_data_and_verify(char *msg, int addr1, int addr2) { + struct timespec start, end; int server_fd, client_fd; + unsigned int delta_ms; =20 server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); if (!ASSERT_NEQ(server_fd, -1, "start_mptcp_server")) @@ -480,8 +470,17 @@ static void send_data_and_verify(char *msg, int addr1,= int addr2) if (set_nonblock(server_fd)) goto close_server; =20 + if (clock_gettime(CLOCK_MONOTONIC, &start) < 0) + goto close_server; + send_data(server_fd, client_fd, msg); =20 + if (clock_gettime(CLOCK_MONOTONIC, &end) < 0) + goto close_server; + + delta_ms =3D (end.tv_sec - start.tv_sec) * 1000 + (end.tv_nsec - start.tv= _nsec) / 1000000; + printf("%s: %u ms\n", msg, delta_ms); + if (addr1) ASSERT_OK(has_bytes_sent(ADDR_1), "Should have bytes_sent on addr1"); else --=20 2.40.1 From nobody Sat May 18 21:00:24 2024 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 2704739852 for ; Tue, 2 Apr 2024 07:16:09 +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=1712042170; cv=none; b=A/NYIlS0pBt+j8vvs8y0ZVbNFpnf/lE80UvvSCFBJT8r3wjZfNScIuAu2DvbvYmTG7N8NpfDXvdKg53M3iZbGvwtmatFiPnINN7C4YOco05Xtr+Ct8spsLFdBl4PotbPRTx/rmZfyJ2Hok91XPmzmtrTZuW22GMNsf3Fgn6b/S4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042170; c=relaxed/simple; bh=QafWfS2LZbeSBYlGhUn2bG26PGArW6b9e+VVgunz6RI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=b3dTX10wfkA0LtWtbpfzmfdsMno/1ehINKIy72hkZgXBmMDxojCc7w7PI4FfraeE4DdVd1oitCUQNcr/F+cRug+h6MibTp9rEiTmYUmmgIeo/e1CRhnkwZlhlFlVNNbMZdzNNFnIMKkOUeDD0pH6BYkFwR0x9Z6HrNHQPpEOVWQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=b6W9L5bS; 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="b6W9L5bS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DA7EAC433C7; Tue, 2 Apr 2024 07:16:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042169; bh=QafWfS2LZbeSBYlGhUn2bG26PGArW6b9e+VVgunz6RI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b6W9L5bSoyphEtmxeOXiiR5RUauiyo38fdYBJG2Cmvxh9HCEP/6J3A/LsSu2m2iyk yXpjAYx5YCJIAp6Ypt1/FSpAC44TSfVsb2d0WzqSPZa213qhXvcjdsxmMYhO+4SemC JsvVTiZZ9p6lCM8GhlglfcowvCpo/YL7tg0pe89O12lfqkDGpmVKnkAsAX+pTeGj3X wJoCIHCaWUM8YNOLNQzHPk0t7ZCvj+Lo5uD4Vlva+1uU8Jna/Sxb1OmvmJLEEDyraB uDtQiR2q5AyO6a3yEj6fnduU0AZxUaeielfMc/sDMceYvdHLUzwt5WtoxISPd6sr8k 3NDBNgG33jOhg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 05/10] selftests/bpf: Add MPTCP_SCHED_TEST macro Date: Tue, 2 Apr 2024 15:15:53 +0800 Message-Id: <4dfb7501458615003c1afe3feff373e48d1f8a72.1712042049.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 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 patch defines MPTCP_SCHED_TEST macro, a template for all scheduler tests. Every scheduler is identified by argument name, and use sysctl to set net.mptcp.scheduler as "bpf_name" to use this sched. Add two veth net devices to simulate the multiple addresses case. Use 'ip mptcp endpoint' command to add the new endpoint ADDR2 to PM netlink. Arguments addr1/add2 means whether the data has been sent on the first/second subflow or not. Send data and check bytes_sent of 'ss' output after it using send_data_and_verify(). Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 31808da47ab6..24e3b5a1134c 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -509,6 +509,36 @@ static void test_default(void) cleanup_netns(nstoken); } =20 +#define MPTCP_SCHED_TEST(name, addr1, addr2) \ +static void test_##name(void) \ +{ \ + struct mptcp_bpf_##name *skel; \ + struct nstoken *nstoken; \ + struct bpf_link *link; \ + struct bpf_map *map; \ + \ + skel =3D mptcp_bpf_##name##__open_and_load(); \ + if (!ASSERT_OK_PTR(skel, "open_and_load " #name)) \ + return; \ + \ + map =3D bpf_object__find_map_by_name(skel->obj, #name); \ + link =3D bpf_map__attach_struct_ops(map); \ + if (!ASSERT_OK_PTR(link, "attach_struct_ops " #name)) \ + goto skel_destroy; \ + \ + nstoken =3D sched_init("subflow", "bpf_" #name); \ + if (!ASSERT_OK_PTR(nstoken, "sched_init " #name)) \ + goto link_destroy; \ + \ + send_data_and_verify(#name, atoi(#addr1), atoi(#addr2));\ + \ + cleanup_netns(nstoken); \ +link_destroy: \ + bpf_link__destroy(link); \ +skel_destroy: \ + mptcp_bpf_##name##__destroy(skel); \ +} + static void test_first(void) { struct mptcp_bpf_first *first_skel; --=20 2.40.1 From nobody Sat May 18 21:00:24 2024 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 2CD41383A4 for ; Tue, 2 Apr 2024 07:16:11 +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=1712042171; cv=none; b=sITz8A7PaUFeri2H0UtdpEWfd3EnvAILM74T+zzNfiljQXCleL9n81bl3HNp/x+sofMW52pMdZ3A/khzBV1E4uiboliLVihuNCXj/1YHySGFeGc7W1rJLrwjD2Ez4GKOFs0ObbtL3XRzcNX1jhC7ZzHsWhP/lcZpQMoWWcJB/To= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042171; c=relaxed/simple; bh=HVv3SJtqu4xxghu/VMwv4ka8HYcUnKtJvorb6C70iHw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=joT0dIU43yOWzTQPrPcD8pL3PNzjtPFZhvCAFuqLDmMLFWDNsRrL+kdFXeBjiELXe0+0fw7QqQl/3rYDKYXGzp94XNGkjSpjra4nNKpXslBf+23TBaWnDZ+642mZrK/HwaUcJDdO1kTOODis0Yyvc6Askn46EMd2JZaq2rbe0M4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Mu0JBT9S; 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="Mu0JBT9S" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 34A4EC433F1; Tue, 2 Apr 2024 07:16:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042171; bh=HVv3SJtqu4xxghu/VMwv4ka8HYcUnKtJvorb6C70iHw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Mu0JBT9SDMmsuzFcYsyVqcciQnp5Qt7kcx1BI86ovZ+82Ht63+LF7Mh8wHagNqn0k gtLqKMUxaNq6+qEweVdnFI0sEkIHSAS2rBrtS8+ywXKUQ1nEX3+iqDQtGS9bq/HqfL Toq6cetfB9OSCcV3CEQJ3HNGuUB+k+qq02WcLVF16jhg3IWTH0f+QWSYDFm/ay7nM0 0KkX77zjFWiD2c2yOoMJ//YEjjkbuH2bTXIJ7a6kMHMv383PmS39NLDxd9E6+4sOyo E/QjwA8kroa0nN9tqAehOhYd3zN3OTIpDD3EqDcg3G+EowOAX+k75E78eva08gn24n /N3JXMP7AWUHw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 06/10] Squash to "selftests/bpf: Add bpf_first scheduler & test" Date: Tue, 2 Apr 2024 15:15:54 +0800 Message-Id: <9431df434324d311105c4b05007e6955c62f09dc.1712042049.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 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 After squashing into this change, the patch "selftests/bpf: Add bpf_first test" can be merged into the patch "selftests/bpf: Add bpf_first scheduler" appending the following lines into commit log: ''' Using MPTCP_SCHED_TEST macro to add a new test for this bpf_first scheduler, the arguments "1 0" means data has been only sent on the first subflow ADDR1. Run this test by RUN_MPTCP_TEST macro. ''' And update the subject to "selftests/bpf: Add bpf_first scheduler & test". Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 38 +------------------ .../selftests/bpf/progs/mptcp_bpf_first.c | 1 + 2 files changed, 3 insertions(+), 36 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 24e3b5a1134c..a6eb437b7a42 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -539,40 +539,7 @@ skel_destroy: \ mptcp_bpf_##name##__destroy(skel); \ } =20 -static void test_first(void) -{ - struct mptcp_bpf_first *first_skel; - int server_fd, client_fd; - struct nstoken *nstoken; - struct bpf_link *link; - - first_skel =3D mptcp_bpf_first__open_and_load(); - if (!ASSERT_OK_PTR(first_skel, "bpf_first__open_and_load")) - return; - - link =3D bpf_map__attach_struct_ops(first_skel->maps.first); - if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { - mptcp_bpf_first__destroy(first_skel); - return; - } - - nstoken =3D sched_init("subflow", "bpf_first"); - if (!ASSERT_OK_PTR(nstoken, "sched_init:bpf_first")) - goto fail; - server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); - client_fd =3D connect_to_fd(server_fd, 0); - - send_data(server_fd, client_fd, "bpf_first"); - ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr_1"); - ASSERT_GT(has_bytes_sent(ADDR_2), 0, "has_bytes_sent addr_2"); - - close(client_fd); - close(server_fd); -fail: - cleanup_netns(nstoken); - bpf_link__destroy(link); - mptcp_bpf_first__destroy(first_skel); -} +MPTCP_SCHED_TEST(first, 1, 0); =20 static void test_bkup(void) { @@ -726,8 +693,7 @@ void test_mptcp(void) RUN_MPTCP_TEST(base); RUN_MPTCP_TEST(mptcpify); RUN_MPTCP_TEST(default); - if (test__start_subtest("first")) - test_first(); + RUN_MPTCP_TEST(first); if (test__start_subtest("bkup")) test_bkup(); if (test__start_subtest("rr")) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_first.c index 23a3e8e69e8f..2d067b25d60b 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2022, SUSE. */ +/* Copyright (c) 2024, Kylin Software */ =20 #include #include "bpf_tcp_helpers.h" --=20 2.40.1 From nobody Sat May 18 21:00:24 2024 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 C4FE138DD2 for ; Tue, 2 Apr 2024 07:16:12 +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=1712042172; cv=none; b=Z2OOoKmMSzO6FKW/guLoqoYQz5632epCTkww1j0dZzX3qZRS2KjIb1uZl5jBn1DNfBdqKG1kTI+sE76exf0Ocg1OrP/v6zjG1/Ua0QaxXHlLkJFJk0DW9OLgN7OXDKnuVL/dQX2I+iQUKG9fyznDMGdVOwOoLG+pRMUyx8+QzbA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042172; c=relaxed/simple; bh=HjzHXv6TFDzw7M8ZPXQRhsl70zcbGncq7gVgMp7DhII=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HIdq87uBCUlb7dGgFtFSA74PeRiM0LFEo94YH8MHZBu5e1TAkMNkUT54s5LcfWvsOV+KEn11dh1mAzJNEskvKzPrCKfnmRhhX5WAaAuyeIOUYVaxa+Q4cPi5bSKnAVXP5+KoK45P6UgCe1Zw5mRWHFtuToPHD48nGPeXqfFaMsA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P29dDOYQ; 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="P29dDOYQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 821A1C433F1; Tue, 2 Apr 2024 07:16:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042172; bh=HjzHXv6TFDzw7M8ZPXQRhsl70zcbGncq7gVgMp7DhII=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=P29dDOYQawUp+vO8Re0ZUA89gjLP319UCvx4lP9RTgb9GbTM6RJM1vga/coCdc+F4 ld4oQnzWUtTa7FpPGvH8Mp2q4MT/6IgIt29RPsH+J9ECMDnRgq14UCEsBSo9y1UwZN BZ8V92sVje8yWD9blJ40CNN+zENLfxuE/ICfifJQk1jMMUoX0s7k10ANyoiwwoAvZV e4qjRdxm9fHmM0u/odkZiP/ABnxV3YdY1tFpv3QsyIw8gimpvU3AzGk+7cyCdRGFy6 I5NSthkMQgQTLI3FNhanjmHmWIvMTLmbgyMAwWZM//h/hOywLI9gIW+23g06RE0gFT Eff/Nb4bDtFlQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 07/10] Squash to "selftests/bpf: Add bpf_bkup scheduler & test" Date: Tue, 2 Apr 2024 15:15:55 +0800 Message-Id: <60c20701612f1c466c34093c80d717a5b60ca979.1712042049.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 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 After squashing into this change, the patch "selftests/bpf: Add bpf_bkup test" can be merged into the patch "selftests/bpf: Add bpf_bkup scheduler" appending the following lines into commit log: ''' Using MPTCP_SCHED_TEST macro to add a new test for this bpf_bkup scheduler, the arguments "1 0" means data has been only sent on the first subflow ADDR1. Run this test by RUN_MPTCP_TEST macro. ''' And update the subject to "selftests/bpf: Add bpf_bkup scheduler & test". Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 39 +------------------ .../selftests/bpf/progs/mptcp_bpf_bkup.c | 1 + 2 files changed, 3 insertions(+), 37 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index a6eb437b7a42..39f83a401c02 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -540,41 +540,7 @@ skel_destroy: \ } =20 MPTCP_SCHED_TEST(first, 1, 0); - -static void test_bkup(void) -{ - struct mptcp_bpf_bkup *bkup_skel; - int server_fd, client_fd; - struct nstoken *nstoken; - struct bpf_link *link; - - bkup_skel =3D mptcp_bpf_bkup__open_and_load(); - if (!ASSERT_OK_PTR(bkup_skel, "bpf_bkup__open_and_load")) - return; - - link =3D bpf_map__attach_struct_ops(bkup_skel->maps.bkup); - if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { - mptcp_bpf_bkup__destroy(bkup_skel); - return; - } - - nstoken =3D sched_init("subflow backup", "bpf_bkup"); - if (!ASSERT_OK_PTR(nstoken, "sched_init:bpf_bkup")) - goto fail; - server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); - client_fd =3D connect_to_fd(server_fd, 0); - - send_data(server_fd, client_fd, "bpf_bkup"); - ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr_1"); - ASSERT_GT(has_bytes_sent(ADDR_2), 0, "has_bytes_sent addr_2"); - - close(client_fd); - close(server_fd); -fail: - cleanup_netns(nstoken); - bpf_link__destroy(link); - mptcp_bpf_bkup__destroy(bkup_skel); -} +MPTCP_SCHED_TEST(bkup, 1, 0); =20 static void test_rr(void) { @@ -694,8 +660,7 @@ void test_mptcp(void) RUN_MPTCP_TEST(mptcpify); RUN_MPTCP_TEST(default); RUN_MPTCP_TEST(first); - if (test__start_subtest("bkup")) - test_bkup(); + RUN_MPTCP_TEST(bkup); if (test__start_subtest("rr")) test_rr(); if (test__start_subtest("red")) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c b/tools/tes= ting/selftests/bpf/progs/mptcp_bpf_bkup.c index bfd4644dd592..486407a135c9 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2022, SUSE. */ +/* Copyright (c) 2024, Kylin Software */ =20 #include #include "bpf_tcp_helpers.h" --=20 2.40.1 From nobody Sat May 18 21:00:24 2024 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 1ACBE3839A for ; Tue, 2 Apr 2024 07:16:13 +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=1712042174; cv=none; b=ggo2DpOu7swSU6/Vv1SiS1Gvuo/ZMDXSKq42OWzmNqUW9tcBIQKUU225As4ON/GDOQOavpdFG56M2VI03MUWxGMclLP22GrpilwShUQMBo+KxBMUSDKRZgZxoO4tVJ9oA9TB7Okr/MUP0x8jLENKW+1goJS1mIy2fFv6GNccseM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042174; c=relaxed/simple; bh=mgK+YEJRjUcOX1RYkKiRr1jAwK6tB7nHpnzaJUEQYUg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tGmRZp9Pu+gZXYeUPJcrXSnDVBqek0aybp5PFTt3SK/ulRAcYsTI/CZ5zJYA7pA/1UVr3K74ldwI18cAfwKrJaG4AOT2A8XKrql/ECFbENOUu7PKTWuOWePB3vqQiSSjPzgYBQmGwPIfzUN5gRwGCwskn8nQvgG0OcEGM32mIS4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DCQzp7Io; 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="DCQzp7Io" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D190FC433C7; Tue, 2 Apr 2024 07:16:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042173; bh=mgK+YEJRjUcOX1RYkKiRr1jAwK6tB7nHpnzaJUEQYUg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DCQzp7IoI4iQ091YbxY4O8QuXIuz2qZmPRJ/CB+NSaOukvE/EyJIzuV+NxIs/D+Tc eTo4RoDJ2ubj73fOaO+DQK5odcl1LG0zexjAL0DZ131UqM5Fv5SP1dc75Otrhr72Pf CfgxDP2dp2q//mw/K9DU6ZA3ksUgluJyC3Hmi2zp8PFIlnqYQBO4pXnHOh0xIZXW5y sj8V5u0BCmK3KJ7po/m82K6ofjmtSKal5i3xOHiqIOh/hOahjiF11z2TZzdp6KXkaq 0e23XJSAm0x5NUIH6CWFDYfF4vawn47O+5VW3sKfPv+FltHm6EzRLXvkAvagLvum0J nXG1JaIDuSn+g== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 08/10] Squash to "selftests/bpf: Add bpf_rr scheduler & test" Date: Tue, 2 Apr 2024 15:15:56 +0800 Message-Id: <06d352b040928486be63b808db7ca2b7294399a3.1712042049.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 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 After squashing into this change, the patch "selftests/bpf: Add bpf_rr test" can be merged into the patch "selftests/bpf: Add bpf_rr scheduler" appending the following lines into commit log: ''' Using MPTCP_SCHED_TEST macro to add a new test for this bpf_rr scheduler, the arguments "1 1" means data has been sent on both net devices. Run this test by RUN_MPTCP_TEST macro. ''' And update the subject to "selftests/bpf: Add bpf_rr scheduler & test". Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 39 +------------------ .../selftests/bpf/progs/mptcp_bpf_rr.c | 1 + 2 files changed, 3 insertions(+), 37 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 39f83a401c02..36afc0358f9b 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -541,41 +541,7 @@ skel_destroy: \ =20 MPTCP_SCHED_TEST(first, 1, 0); MPTCP_SCHED_TEST(bkup, 1, 0); - -static void test_rr(void) -{ - struct mptcp_bpf_rr *rr_skel; - int server_fd, client_fd; - struct nstoken *nstoken; - struct bpf_link *link; - - rr_skel =3D mptcp_bpf_rr__open_and_load(); - if (!ASSERT_OK_PTR(rr_skel, "bpf_rr__open_and_load")) - return; - - link =3D bpf_map__attach_struct_ops(rr_skel->maps.rr); - if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { - mptcp_bpf_rr__destroy(rr_skel); - return; - } - - nstoken =3D sched_init("subflow", "bpf_rr"); - if (!ASSERT_OK_PTR(nstoken, "sched_init:bpf_rr")) - goto fail; - server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); - client_fd =3D connect_to_fd(server_fd, 0); - - send_data(server_fd, client_fd, "bpf_rr"); - ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr 1"); - ASSERT_OK(has_bytes_sent(ADDR_2), "has_bytes_sent addr 2"); - - close(client_fd); - close(server_fd); -fail: - cleanup_netns(nstoken); - bpf_link__destroy(link); - mptcp_bpf_rr__destroy(rr_skel); -} +MPTCP_SCHED_TEST(rr, 1, 1); =20 static void test_red(void) { @@ -661,8 +627,7 @@ void test_mptcp(void) RUN_MPTCP_TEST(default); RUN_MPTCP_TEST(first); RUN_MPTCP_TEST(bkup); - if (test__start_subtest("rr")) - test_rr(); + RUN_MPTCP_TEST(rr); if (test__start_subtest("red")) test_red(); if (test__start_subtest("burst")) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testi= ng/selftests/bpf/progs/mptcp_bpf_rr.c index 39b7e1cfbbd5..05621467fe48 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2022, SUSE. */ +/* Copyright (c) 2024, Kylin Software */ =20 #include #include "bpf_tcp_helpers.h" --=20 2.40.1 From nobody Sat May 18 21:00:24 2024 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 5E97B383A4 for ; Tue, 2 Apr 2024 07:16: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=1712042175; cv=none; b=dxc3Z22/3IAIlOo9fJ710N/wUAGnATg1h3kRN/ju53lBu5vT+45kQ3XKK8XJoyf2i6R6PpaK0imtSDncWOZz+TkztAVdRDW4aa4mrsjR9aGcMKxX8rUdW4NuzWSzKqoZ0jQMr2sH/IxmP0QpozfrCNDQSnIIKlmDVeUWpX01Mro= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042175; c=relaxed/simple; bh=Iko8gIByqQgcTboRkBn3wtZj1bbsMEzSKpY6BUVnHBk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qhZ3apENRAoGbZlobYw4zPlgaIu/43x+QFxiev6Yf6sFEE5n1FL8QeQAkdFU2SifIAdg/ULOOMES3w35ZuUaMebWeDiEAaVMWuA16Hlev4Auy+RTGmIS+g7b2PIfuyeBDHuRVIGK6xdHoiUiBduyNpyi+msElSHTUV6pZOvCpdE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RhalkT3Q; 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="RhalkT3Q" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2C687C43394; Tue, 2 Apr 2024 07:16:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042175; bh=Iko8gIByqQgcTboRkBn3wtZj1bbsMEzSKpY6BUVnHBk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RhalkT3QhPqhGbBMeyRXMjci/LYaQs6OThWNZsaockPHg6spxBtqVM/CCoDGccLl3 m/Cqll+VozFL0FCS+T4Y1TpSAzGPW9La4BltKTteBhwaSkBAQXj0OaK6RxdJz3JvC9 GM8iPNe39pVvtGh0c45Wanb9AvR9dc0ehFit1ZfmUrJ/g3iFunMpa1FzMd7yPrn1DX NnrQIMnEfgkFNre2yTzs78KT36pTQqkd27xd/VY+LZkgE2mgGRJIrRhfarAh/3iiLA liA0dOvtKarAnAla2z+bfazWIe8EufdZ8ryzbHqJC838gVAhdjuxTQsDb1kLXYApAa hd7FehLqdIpbw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 09/10] Squash to "selftests/bpf: Add bpf_red scheduler & test" Date: Tue, 2 Apr 2024 15:15:57 +0800 Message-Id: <4cfc0c5c3685f1f1de3eed684165b494f7c85f40.1712042049.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 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 After squashing into this change, the patch "selftests/bpf: Add bpf_red test" can be merged into the patch "selftests/bpf: Add bpf_red scheduler" appending the following lines into commit log: ''' Using MPTCP_SCHED_TEST macro to add a new test for this bpf_red scheduler, the arguments "1 1" means data has been sent on both net devices. Run this test by RUN_MPTCP_TEST macro. ''' And update the subject to "selftests/bpf: Add bpf_red scheduler & test". Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 39 +------------------ .../selftests/bpf/progs/mptcp_bpf_red.c | 1 + 2 files changed, 3 insertions(+), 37 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 36afc0358f9b..110f37e4b159 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -542,41 +542,7 @@ skel_destroy: \ MPTCP_SCHED_TEST(first, 1, 0); MPTCP_SCHED_TEST(bkup, 1, 0); MPTCP_SCHED_TEST(rr, 1, 1); - -static void test_red(void) -{ - struct mptcp_bpf_red *red_skel; - int server_fd, client_fd; - struct nstoken *nstoken; - struct bpf_link *link; - - red_skel =3D mptcp_bpf_red__open_and_load(); - if (!ASSERT_OK_PTR(red_skel, "bpf_red__open_and_load")) - return; - - link =3D bpf_map__attach_struct_ops(red_skel->maps.red); - if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { - mptcp_bpf_red__destroy(red_skel); - return; - } - - nstoken =3D sched_init("subflow", "bpf_red"); - if (!ASSERT_OK_PTR(nstoken, "sched_init:bpf_red")) - goto fail; - server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); - client_fd =3D connect_to_fd(server_fd, 0); - - send_data(server_fd, client_fd, "bpf_red"); - ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr 1"); - ASSERT_OK(has_bytes_sent(ADDR_2), "has_bytes_sent addr 2"); - - close(client_fd); - close(server_fd); -fail: - cleanup_netns(nstoken); - bpf_link__destroy(link); - mptcp_bpf_red__destroy(red_skel); -} +MPTCP_SCHED_TEST(red, 1, 1); =20 static void test_burst(void) { @@ -628,8 +594,7 @@ void test_mptcp(void) RUN_MPTCP_TEST(first); RUN_MPTCP_TEST(bkup); RUN_MPTCP_TEST(rr); - if (test__start_subtest("red")) - test_red(); + RUN_MPTCP_TEST(red); if (test__start_subtest("burst")) test_burst(); } diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c b/tools/test= ing/selftests/bpf/progs/mptcp_bpf_red.c index a3f3e5ca5278..62cba8f2d936 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2022, SUSE. */ +/* Copyright (c) 2024, Kylin Software */ =20 #include #include "bpf_tcp_helpers.h" --=20 2.40.1 From nobody Sat May 18 21:00:24 2024 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 749A43A1A3 for ; Tue, 2 Apr 2024 07:16: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=1712042176; cv=none; b=HDWE9rnvhDA6ridgfgH5vfky5mZlQzf7grqlpTnE73S0EzuYRxbhbu+4pK3O1vQ9aXQlZAmSrBtOEaqJi3e0XigaX0ONraU1PBBZG0/8oRpDpm8rFiXta3f9FkhZf/bJO7QzRYZotqYXNA8mJwRmHQ7fVRS/jIU360/BfaTa9nA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712042176; c=relaxed/simple; bh=hsz8xFeEpK9/3V82Q1b3ON110ZKrBa37/g7/ibKdx90=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MH2HsKPdlWas7X/I3q2who/SQYqHEyoUXBlsgw6gYUUnJS+AT34p0FmSEE1JlOPysywXfM3C5XdUqCd3GxmOM9XUPaiDkerSO1dyn5S5RAq4DxGItey2/KlsP/5V5w1/0OFUeGvWqR9LOD7/iN+zLGUN2mEDM/F2PhiILpDqqkY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P2lRKFAB; 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="P2lRKFAB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7B131C433C7; Tue, 2 Apr 2024 07:16:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712042176; bh=hsz8xFeEpK9/3V82Q1b3ON110ZKrBa37/g7/ibKdx90=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=P2lRKFABI7u9UDZ8FfNJ+J8Yv3QiTlbIKUMAm0qRZQivsJZbRJ4v2+n4dDgVxonl0 CWLuDiqb0Kep7bExP5AkG9fVB3iQZwXyJJelVlhKOLOWmw3rF5mhB+yasBy10I7weD 4OvtVnqMDZpEUgTMNuNp62l4vtH0V2jUr5QvbYUgNTjrH0RHvv3P2vNUdN/jegQc5/ i7V7TNR/PnNa/nQFXHpaxW2mYdKlWVZ+yDvxkynNfouwf7K5tstwfoWWXnRbyy2Wws oqRGo15wMKg8rq47NrOx3j7NEPitYnFWlxcklt2e8zahL7HBKWK5pgJZuKTh9KU1tG ubeyFN7+SHnfQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 10/10] Squash to "selftests/bpf: Add bpf_burst scheduler & test" Date: Tue, 2 Apr 2024 15:15:58 +0800 Message-Id: X-Mailer: git-send-email 2.40.1 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 After squashing into this change, the patch "selftests/bpf: Add bpf_burst test" can be merged into the patch "selftests/bpf: Add bpf_burst scheduler" appending the following lines into commit log: ''' Using MPTCP_SCHED_TEST macro to add a new test for this bpf_burst scheduler, the arguments "1 1" means data has been sent on both net devices. Run this test by RUN_MPTCP_TEST macro. ''' And update the subject to "selftests/bpf: Add bpf_burst scheduler & test". Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 40 +------------------ .../selftests/bpf/progs/mptcp_bpf_burst.c | 1 + 2 files changed, 3 insertions(+), 38 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 110f37e4b159..400d329ef2a0 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -543,42 +543,7 @@ MPTCP_SCHED_TEST(first, 1, 0); MPTCP_SCHED_TEST(bkup, 1, 0); MPTCP_SCHED_TEST(rr, 1, 1); MPTCP_SCHED_TEST(red, 1, 1); - -static void test_burst(void) -{ - struct mptcp_bpf_burst *burst_skel; - int server_fd, client_fd; - struct nstoken *nstoken; - struct bpf_link *link; - - burst_skel =3D mptcp_bpf_burst__open_and_load(); - if (!ASSERT_OK_PTR(burst_skel, "bpf_burst__open_and_load")) - return; - - link =3D bpf_map__attach_struct_ops(burst_skel->maps.burst); - if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { - mptcp_bpf_burst__destroy(burst_skel); - return; - } - - nstoken =3D sched_init("subflow", "bpf_burst"); - if (!ASSERT_OK_PTR(nstoken, "sched_init:bpf_burst")) - goto fail; - server_fd =3D start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0); - client_fd =3D connect_to_fd(server_fd, 0); - - set_nonblock(server_fd); - send_data(server_fd, client_fd, "bpf_burst"); - ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr 1"); - ASSERT_OK(has_bytes_sent(ADDR_2), "has_bytes_sent addr 2"); - - close(client_fd); - close(server_fd); -fail: - cleanup_netns(nstoken); - bpf_link__destroy(link); - mptcp_bpf_burst__destroy(burst_skel); -} +MPTCP_SCHED_TEST(burst, 1, 1); =20 #define RUN_MPTCP_TEST(suffix) \ do { \ @@ -595,6 +560,5 @@ void test_mptcp(void) RUN_MPTCP_TEST(bkup); RUN_MPTCP_TEST(rr); RUN_MPTCP_TEST(red); - if (test__start_subtest("burst")) - test_burst(); + RUN_MPTCP_TEST(burst); } diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_burst.c index b3c811564866..6b79267562f1 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2023, SUSE. */ +/* Copyright (c) 2024, Kylin Software */ =20 #include #include --=20 2.40.1