From nobody Fri Mar 14 08:16:07 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 89A1D339A8 for ; Sun, 9 Feb 2025 10:02: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=1739095338; cv=none; b=U7LAFhtrBLT3sypP6xVV4ZVN22UcL8xLuevmfx0uXRk92uqxhasqVnPP9Dv5G5ypo/BjdytwgKkHFcejydW1fuUo3INiC+2Hpf/4XOMFPPPQV7giTygDz8RzJoDBu1dVhHFg2vnL3vyQPC4OFdT0LkQjTytJvSrjywRIdHRkHtA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739095338; c=relaxed/simple; bh=SMy40aLgBVrtJFxuhjl6CllCn0Y5zvg4tw/PCEfFLts=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D1Oj0q8B/3xSi4272fDSxrSe4pwOxhQTtRadUYJZCi/ZXApRygcjPm6GCRtgzwRx0/rcsuUG6L7V55/ZGiYtjFJY3I3NFoAlbjJaEFQPPI/y24rN1J1dy6SKFG1WyjG9ywEroon3k+qgI2gpGL2s5bATI0Gx8M736THxqXqmRQw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=c3dS6YcC; 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="c3dS6YcC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 234AFC4CEDF; Sun, 9 Feb 2025 10:02:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739095338; bh=SMy40aLgBVrtJFxuhjl6CllCn0Y5zvg4tw/PCEfFLts=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c3dS6YcCxkScAbpyo6BimQXjGVxEHZJBBoYwZL6P627XP7UQnzUZnlLWZ1poi38d/ E9qAuhjCwhixzqaKCAtzhw1TCFhDVMKooBf6MsM4xNr58iH/c8NZwffyCS8nu6qMQy ki3odrkpyvYPHtprlR4yasVwzLLxfRSrETLVPvbR34pt11tINZh5+65v5tv6CqwiLX 4z7Zhv1J1hLe+2aZStsjY42FsvjYCFnuNF+82z48UTUej8i1NsMzBN1OXCtMI4O/xU afSSPbRnb7/2MouZs7GapGWk+4TmWJlRtM49eHbFoT5gR292brQtyd0yGSGGokPc3a Es3gvsOyQ5pDA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 1/8] Squash to "mptcp: add sched_data helpers" Date: Sun, 9 Feb 2025 18:02:00 +0800 Message-ID: <67df18568854d63f58ee33d59fd513390ed16e92.1739083793.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 Drop bpf_mptcp_subflow_ctx_by_pos. Keep mptcp_sched_data_set_contexts for future use. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 8 -------- net/mptcp/protocol.h | 2 -- net/mptcp/sched.c | 15 --------------- 3 files changed, 25 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index a74173cc8998..2e713076af5e 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -276,14 +276,6 @@ bpf_iter_mptcp_subflow_destroy(struct bpf_iter_mptcp_s= ubflow *it) { } =20 -__bpf_kfunc struct mptcp_subflow_context * -bpf_mptcp_subflow_ctx_by_pos(const struct mptcp_sched_data *data, unsigned= int pos) -{ - if (pos >=3D MPTCP_SUBFLOWS_MAX) - return NULL; - return data->contexts[pos]; -} - __bpf_kfunc static bool bpf_mptcp_subflow_queues_empty(struct sock *sk) { return tcp_rtx_queue_empty(sk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index bac5c925a72f..a1d6d996aa93 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -718,8 +718,6 @@ void mptcp_subflow_queue_clean(struct sock *sk, struct = sock *ssk); void mptcp_sock_graft(struct sock *sk, struct socket *parent); u64 mptcp_wnd_end(const struct mptcp_sock *msk); void mptcp_set_timeout(struct sock *sk); -struct mptcp_subflow_context * -bpf_mptcp_subflow_ctx_by_pos(const struct mptcp_sched_data *data, unsigned= int pos); struct sock *__mptcp_nmpc_sk(struct mptcp_sock *msk); bool __mptcp_close(struct sock *sk, long timeout); void mptcp_cancel_work(struct sock *sk); diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index 37d86aadaeaa..ef3f0250ae1f 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -157,21 +157,6 @@ void mptcp_subflow_set_scheduled(struct mptcp_subflow_= context *subflow, static void mptcp_sched_data_set_contexts(const struct mptcp_sock *msk, struct mptcp_sched_data *data) { - struct mptcp_subflow_context *subflow; - int i =3D 0; - - mptcp_for_each_subflow(msk, subflow) { - if (i =3D=3D MPTCP_SUBFLOWS_MAX) { - pr_warn_once("too many subflows"); - break; - } - mptcp_subflow_set_scheduled(subflow, false); - data->contexts[i++] =3D subflow; - } - data->subflows =3D i; - - for (; i < MPTCP_SUBFLOWS_MAX; i++) - data->contexts[i] =3D NULL; } =20 int mptcp_sched_get_send(struct mptcp_sock *msk) --=20 2.43.0 From nobody Fri Mar 14 08:16:07 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 1902B339A8 for ; Sun, 9 Feb 2025 10:02:19 +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=1739095340; cv=none; b=mag28/Kl2/LldKK2oALF1i1gqoOQSjGMkSE/hsx9GjxdgZOtK/b1UTi0cxZzI/TGv1QS/8xVy7VZgN2zIt6f7vppMeFKTwCajeUxma7X3V/MlRTyu2amYeaRzf7TsOyN7kWn2XXQiTT+z4SiSgsDp9dmHuMxCvJv6RCcS3itl5M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739095340; c=relaxed/simple; bh=VqTVAsqhSGUXZftE1OL9j2P0yI9has7rAi/l33rfbGA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dbK2GARp20AsKgMPfFnSWBa5PxlmJg4GX8XegV9vj11cFykJaF3qYIZtSDoh0DkBW4pO4xcBFRa8y9K5OLBHZmuLSWaYLZH94gppqEt855hXFAfCrC2/nHP1B2tI3eQnRdboBAlAsZjxRCLW1Oyt4Rzokgq/yzGWMGEQOUpFK5o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KRAO85/t; 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="KRAO85/t" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C13C5C4CEDD; Sun, 9 Feb 2025 10:02:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739095339; bh=VqTVAsqhSGUXZftE1OL9j2P0yI9has7rAi/l33rfbGA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KRAO85/tCZLvHMYs1cxLHsqbBw7EOXKCKrxn+uQ3yqiYptMbFvuHPRUgcDP1j7YxE BlCsFXYAVK0+QIe0A4aYFnQP/IaVNOQmXlbBhcmunV4AspAS+JPCi5Vlk4zCcb7PoJ YTpiQalFwQ1wPrtH/IOX2Jk8sEtDy/mi+hZjdNnH+bwgFNTVaLGIXASfTwDgxN1kYb ac4pk+aWoBW7f/SUEZUuxitSzUqv6n+6lQ1w2nkQRy43Hlca1w0o7kZ0jl0Wh/abVk UnDgfHQIRYNcEYzyitAP+V14hecFKsUCUsrhQLJPlhdyYeg6P+a3Z0hA7ziC+i+q/O KK5hcozpLxP2g== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 2/8] Squash to "bpf: Export mptcp packet scheduler helpers" Date: Sun, 9 Feb 2025 18:02:01 +0800 Message-ID: <4b4167eb1a323539e842c243ef5a70e85695edcd.1739083794.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 Instead of adding a new BPF function bpf_mptcp_send_info_to_ssk() in v12, this patch uses a much more simpler approach, which using '__ign' suffix for the argument of bpf_mptcp_subflow_ctx() to let BPF to ignore the type check of this argument. Remove bpf_mptcp_subflow_ctx_by_pos from BPF kfunc set. Drop bpf_mptcp_sched_kfunc_set, use bpf_mptcp_common_kfunc_set instead. Add new helpers bpf_mptcp_subflow_tcp_sock() and bpf_sk_stream_memory_free(). Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index 2e713076af5e..a987cecd787b 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -224,8 +224,10 @@ struct bpf_iter_mptcp_subflow_kern { __bpf_kfunc_start_defs(); =20 __bpf_kfunc static struct mptcp_subflow_context * -bpf_mptcp_subflow_ctx(const struct sock *sk) +bpf_mptcp_subflow_ctx(const struct sock *sk__ign) { + const struct sock *sk =3D sk__ign; + if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_mptcp(sk)) return mptcp_subflow_ctx(sk); @@ -233,6 +235,15 @@ bpf_mptcp_subflow_ctx(const struct sock *sk) return NULL; } =20 +__bpf_kfunc static struct sock * +bpf_mptcp_subflow_tcp_sock(const struct mptcp_subflow_context *subflow) +{ + if (!subflow) + return NULL; + + return mptcp_subflow_tcp_sock(subflow); +} + __bpf_kfunc static int bpf_iter_mptcp_subflow_new(struct bpf_iter_mptcp_subflow *it, struct sock *sk) @@ -281,34 +292,37 @@ __bpf_kfunc static bool bpf_mptcp_subflow_queues_empt= y(struct sock *sk) return tcp_rtx_queue_empty(sk); } =20 +__bpf_kfunc static bool bpf_sk_stream_memory_free(const struct sock *sk__i= gn) +{ + const struct sock *sk =3D sk__ign; + + if (sk && sk_fullsock(sk) && + sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_mptcp(sk)) + return sk_stream_memory_free(sk); + + return NULL; +} + __bpf_kfunc_end_defs(); =20 BTF_KFUNCS_START(bpf_mptcp_common_kfunc_ids) BTF_ID_FLAGS(func, bpf_mptcp_subflow_ctx, KF_RET_NULL) +BTF_ID_FLAGS(func, bpf_mptcp_subflow_tcp_sock, KF_RET_NULL) BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_new, KF_ITER_NEW | KF_TRUSTED_AR= GS) BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_next, KF_ITER_NEXT | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_iter_mptcp_subflow_destroy, KF_ITER_DESTROY) -BTF_KFUNCS_END(bpf_mptcp_common_kfunc_ids) - -static const struct btf_kfunc_id_set bpf_mptcp_common_kfunc_set =3D { - .owner =3D THIS_MODULE, - .set =3D &bpf_mptcp_common_kfunc_ids, -}; - -BTF_KFUNCS_START(bpf_mptcp_sched_kfunc_ids) BTF_ID_FLAGS(func, mptcp_subflow_set_scheduled) -BTF_ID_FLAGS(func, bpf_mptcp_subflow_ctx_by_pos) BTF_ID_FLAGS(func, mptcp_subflow_active) BTF_ID_FLAGS(func, mptcp_set_timeout) BTF_ID_FLAGS(func, mptcp_wnd_end) -BTF_ID_FLAGS(func, tcp_stream_memory_free) +BTF_ID_FLAGS(func, bpf_sk_stream_memory_free, KF_RET_NULL) BTF_ID_FLAGS(func, bpf_mptcp_subflow_queues_empty) BTF_ID_FLAGS(func, mptcp_pm_subflow_chk_stale, KF_SLEEPABLE) -BTF_KFUNCS_END(bpf_mptcp_sched_kfunc_ids) +BTF_KFUNCS_END(bpf_mptcp_common_kfunc_ids) =20 -static const struct btf_kfunc_id_set bpf_mptcp_sched_kfunc_set =3D { +static const struct btf_kfunc_id_set bpf_mptcp_common_kfunc_set =3D { .owner =3D THIS_MODULE, - .set =3D &bpf_mptcp_sched_kfunc_ids, + .set =3D &bpf_mptcp_common_kfunc_ids, }; =20 static int __init bpf_mptcp_kfunc_init(void) @@ -319,7 +333,7 @@ static int __init bpf_mptcp_kfunc_init(void) ret =3D ret ?: register_btf_kfunc_id_set(BPF_PROG_TYPE_CGROUP_SOCKOPT, &bpf_mptcp_common_kfunc_set); ret =3D ret ?: register_btf_kfunc_id_set(BPF_PROG_TYPE_STRUCT_OPS, - &bpf_mptcp_sched_kfunc_set); + &bpf_mptcp_common_kfunc_set); #ifdef CONFIG_BPF_JIT ret =3D ret ?: register_bpf_struct_ops(&bpf_mptcp_sched_ops, mptcp_sched_= ops); #endif --=20 2.43.0 From nobody Fri Mar 14 08:16:07 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 67419339A8 for ; Sun, 9 Feb 2025 10:02:20 +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=1739095341; cv=none; b=k6ddgnvMdb6VuJnZJfXZuESfT33uJSurUG7tl2BCICtV8pgAWLgsBVIaj660Malfobf476ghKhm8a2ALJbqVn7o4X/QtR/fNiIKMerih6C40o9ERIqih9jA8o//CkrISzI2BmbcVPVibsrq4AeNbfC+bRBTqW+Wae08LNncEkKI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739095341; c=relaxed/simple; bh=BO2T5ZZjik4RVsV1yvAk+xTNXjhcBH1jTU7iLLtP4so=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fqgbKW+YPWMSm43W9MREll2fpV/GqlH9qESakHKq5dCIr+3F/6iO/SfoBtlQhy9OC20V1s76w+rTF2Wk5eEbSbTyEPqb3Yd8lkD6YkY8vQfTiJ0ZbwRsC/eBH/OQOfpS1s+1ZSq14y9qJaPL7iQkOHkCCcdFcWHNuE0+Gj7nFmo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kiILfI+q; 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="kiILfI+q" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 08214C4CEDF; Sun, 9 Feb 2025 10:02:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739095340; bh=BO2T5ZZjik4RVsV1yvAk+xTNXjhcBH1jTU7iLLtP4so=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kiILfI+qsLSTNZxjUV2kaDAuInZwn/mnIsHTpaHPXZogeNu4qT6uvxLKKMwAGJAUN p09jO91lTOtHbrCGkc1IzhF2rqNtg8Ega9NKOMfnuRfi92Udh2Ct7C/LRkHWgXyfB5 aM36FG6cuBjSmgQFDQI4GwxaiiwGsUu7obI4fWwmxrLYcIO26MF4RvRfpxhx1faHNp Tcs3e19dK5DLCHUUZkEi6yLQrjOC2EIbahwYFnNSQ/V4BYl2h+uG8AXpaFmfEK6EVE 0jPAQmedS6YMzcEI30dokbDh36PX7yv2QnOYLuTWSU9kSjks0RzZgFeO79AOJVtL9q 1ZMFW7OtQf1PA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 3/8] Squash to "selftests/bpf: Add bpf_first scheduler & test" Date: Sun, 9 Feb 2025 18:02:02 +0800 Message-ID: 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 Use the newly added bpf_for_each() helper to walk the conn_list. Drop bpf_mptcp_subflow_ctx_by_pos declaration. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/progs/mptcp_bpf.h | 3 --- tools/testing/selftests/bpf/progs/mptcp_bpf_first.c | 8 +++++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf.h b/tools/testing/= selftests/bpf/progs/mptcp_bpf.h index ede9111ee597..badcffe0942c 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf.h +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf.h @@ -51,7 +51,4 @@ bpf_mptcp_subflow_tcp_sock(const struct mptcp_subflow_con= text *subflow) __ksym; extern void mptcp_subflow_set_scheduled(struct mptcp_subflow_context *subf= low, bool scheduled) __ksym; =20 -extern struct mptcp_subflow_context * -bpf_mptcp_subflow_ctx_by_pos(const struct mptcp_sched_data *data, unsigned= int pos) __ksym; - #endif diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_first.c index ab71ae3c6506..73b18eeeb62f 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -20,7 +20,13 @@ SEC("struct_ops") int BPF_PROG(bpf_first_get_send, struct mptcp_sock *msk, struct mptcp_sched_data *data) { - mptcp_subflow_set_scheduled(bpf_mptcp_subflow_ctx_by_pos(data, 0), true); + struct mptcp_subflow_context *subflow; + + subflow =3D bpf_mptcp_subflow_ctx(msk->first); + if (!subflow) + return -1; + + mptcp_subflow_set_scheduled(subflow, true); return 0; } =20 --=20 2.43.0 From nobody Fri Mar 14 08:16:07 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 3C303339A8 for ; Sun, 9 Feb 2025 10:02:22 +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=1739095342; cv=none; b=EYwqaxrFrxSNOasTrsJ/rnMCAhSV7A6QM8vqeuBlSRHvblcFGEi3BPgJ7IrKWAwLxv3YNoH9CfyGaYJFWM0RMah912f6V0halsNZZKcRiDFidLhloUxheG7xR9i5T7I24EORgJnoPhBLLfSKZc9NYm2oWHpQ8pgeiEj0sKOdpNU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739095342; c=relaxed/simple; bh=1su1M3eNFxvg6tCEug8h33AMhzMJVn4aAseRa4VGjmg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QFxhLFNSRzwdY13bngxR7PgskC5KFFcu/MGnfOBlME2DXW4YuNzumV1LJMo0NEh7Wm+37R2XaXt9tdsVjuzeOazBfR4EyxNrwrESQ60jFD0UICeSAg7yFLvvUgw9BpHJoEf2tXHYZPnznXRGypKf3No4P+SlifvWoZhhCvjSJO8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=O+63vQe3; 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="O+63vQe3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4FFDCC4CEE2; Sun, 9 Feb 2025 10:02:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739095342; bh=1su1M3eNFxvg6tCEug8h33AMhzMJVn4aAseRa4VGjmg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=O+63vQe33fgAtYd0vbSfnHsd8LTQzOAl0K9XFbTcayTrR+HGiLNEDE8+uZLtQkvgY ulD5/0Gw4ind622SdHYZX04Zv+HeJEGOSfOYYWstftE15VCrICMydSsDtHJaeMNMNG XSXRxZQWucyxrcrEPaVGb2Fs5NVrIppfr8ozxU5DqU12kKW03g2+jaOZO4qXVLrggw Fxmg+ziygCWoky6y9+/oxztMjBznbvAmkC5Xfmnt6fcmkuPz577PUK8MUgzGKTqE3t KABIY91q+dL0Z9Hw22fIb5LVsBOz/FbdqcnXiHC1xy9QMp94xqVXbx4fKLzQaOyhEs 0XypiSQBtjVeg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 4/8] Squash to "selftests/bpf: Add bpf_bkup scheduler & test" Date: Sun, 9 Feb 2025 18:02:03 +0800 Message-ID: <7a9c57f54823fe3608af1dc92f1cfff9f8f65417.1739083794.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 Use the newly added bpf_for_each() helper to walk the conn_list. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/progs/mptcp_bpf_bkup.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c b/tools/tes= ting/selftests/bpf/progs/mptcp_bpf_bkup.c index 29be67e2f2ef..b7212101705d 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c @@ -20,26 +20,16 @@ SEC("struct_ops") int BPF_PROG(bpf_bkup_get_send, struct mptcp_sock *msk, struct mptcp_sched_data *data) { - int nr =3D -1; - - for (int i =3D 0; i < data->subflows && i < MPTCP_SUBFLOWS_MAX; i++) { - struct mptcp_subflow_context *subflow; - - subflow =3D bpf_mptcp_subflow_ctx_by_pos(data, i); - if (!subflow) - break; + struct mptcp_subflow_context *subflow; =20 + bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) { if (!BPF_CORE_READ_BITFIELD_PROBED(subflow, backup) || !BPF_CORE_READ_BITFIELD_PROBED(subflow, request_bkup)) { - nr =3D i; + mptcp_subflow_set_scheduled(subflow, true); break; } } =20 - if (nr !=3D -1) { - mptcp_subflow_set_scheduled(bpf_mptcp_subflow_ctx_by_pos(data, nr), true= ); - return -1; - } return 0; } =20 --=20 2.43.0 From nobody Fri Mar 14 08:16:07 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 27477339A8 for ; Sun, 9 Feb 2025 10:02:23 +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=1739095344; cv=none; b=MOHCqIllM8/ByQWC6n/3/3hH+F7dNI3VL5O5ujsr99COWQxWwG+v8fZrnMjus1JkdMwlXxqdzMquW/ewK4SSaENupFx5bj1VFVSLVNUyq2RDJbmmI7QS09FqiigJ/RWw0+tIpHWkDRwdK7SfAVSkNOnb/FlBHmVLXFtbtrKwu04= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739095344; c=relaxed/simple; bh=NGXQE9Kif6loAReYC7iiycV9qt5iAyr/88XdrWpLpD0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Sw9iyOjoYTQXcQv+8kmsZKRAS3Ee4zrHRFFS2q4G9LnfPWW8riS6rU6QfBDUySB4dILL1Cq5zhx+gjAJuKn86FSLkXGw7tH+QOJ3MnpugRxyCrOylgagwWd7pGRKxsZAYvy3R6sAAwZKi9jpldn2uqYgChTY4NsUsBcqG+xOS7E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=L9HoVCXo; 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="L9HoVCXo" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B9BC0C4CEDF; Sun, 9 Feb 2025 10:02:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739095343; bh=NGXQE9Kif6loAReYC7iiycV9qt5iAyr/88XdrWpLpD0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L9HoVCXosXUafaI7u6JIHKrqF7UwD12tGx9RMWMJ4s8GijxRvs376h5KUmnDHUO5b AG/Xt/wL/l1p5UQn4+Wzb5P97gP4L6kZfFsJOrNuac/IUjTL59t+pA/VXkhzxkZS0K uZwHU3+x3XFxCIPqnS2g0GigDAOHTPflLP/AwGKCQIUdjTRg0rC2xEH+3E/3VpRdB5 Khm0G8otBDASMAGQJqdZ6+a9zu1uEMoA8SLS4WbRXq7dgZje/Yq8xlrKyHYgVGUHxV qYRm9AKB3bfSIbjP+LG1f8sAGVDDkjxmgApoyxIsk4zijNG3ZUjggyl4ETlO8j9/PQ BDI02z6GKiclw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 5/8] Squash to "selftests/bpf: Add bpf_rr scheduler & test" Date: Sun, 9 Feb 2025 18:02:04 +0800 Message-ID: <92bef46cc3cf030b91b27f9108045969d9bdb824.1739083794.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 Use the newly added bpf_for_each() helper to walk the conn_list. Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_rr.c | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testi= ng/selftests/bpf/progs/mptcp_bpf_rr.c index 405e96c116d5..4b109adc3602 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c @@ -34,38 +34,35 @@ SEC("struct_ops") int BPF_PROG(bpf_rr_get_send, struct mptcp_sock *msk, struct mptcp_sched_data *data) { - struct mptcp_subflow_context *subflow; + struct mptcp_subflow_context *subflow, *next; struct mptcp_rr_storage *ptr; - struct sock *last_snd =3D NULL; - int nr =3D 0; =20 ptr =3D bpf_sk_storage_get(&mptcp_rr_map, msk, 0, BPF_LOCAL_STORAGE_GET_F_CREATE); if (!ptr) return -1; =20 - last_snd =3D ptr->last_snd; + next =3D bpf_mptcp_subflow_ctx(msk->first); + if (!next) + return -1; =20 - for (int i =3D 0; i < data->subflows && i < MPTCP_SUBFLOWS_MAX; i++) { - subflow =3D bpf_mptcp_subflow_ctx_by_pos(data, i); - if (!last_snd || !subflow) - break; + if (!ptr->last_snd) + goto out; =20 - if (mptcp_subflow_tcp_sock(subflow) =3D=3D last_snd) { - if (i + 1 =3D=3D MPTCP_SUBFLOWS_MAX || - !bpf_mptcp_subflow_ctx_by_pos(data, i + 1)) + bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) { + if (mptcp_subflow_tcp_sock(subflow) =3D=3D ptr->last_snd) { + subflow =3D bpf_iter_mptcp_subflow_next(&___it); + if (!subflow) break; =20 - nr =3D i + 1; + next =3D subflow; break; } } =20 - subflow =3D bpf_mptcp_subflow_ctx_by_pos(data, nr); - if (!subflow) - return -1; - mptcp_subflow_set_scheduled(subflow, true); - ptr->last_snd =3D mptcp_subflow_tcp_sock(subflow); +out: + mptcp_subflow_set_scheduled(next, true); + ptr->last_snd =3D mptcp_subflow_tcp_sock(next); return 0; } =20 --=20 2.43.0 From nobody Fri Mar 14 08:16:07 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 B1B30339A8 for ; Sun, 9 Feb 2025 10:02:25 +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=1739095345; cv=none; b=gnyBpgBiTTnNYDP6IyeSSd8+O8CRO2yy2Tp0I5C2NrwXcGyNqvV+KAdHnvhKNLqlNotZwz9PlGLgSYYzHx838pbKj+AmFuwaPvjYOfkQ2VOCAp0CwJQHeYCHmV8QBGhi26UeJlVZHI4/xo/3jWSepQcJuk6Um6wEjfMusIZH1Fk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739095345; c=relaxed/simple; bh=PvRlww9oxwxOA+huQBk1xHRyv5mmqZH7amLe1b0bbxw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tjbmyq1mm/XOfV+gSF+u/mdmzIPb+w7wjXdP4N2LLdWkggvwMmmutahtyVLg3McSqVQENMPFnlnMGXwzQYMNSyapTu/LuP1EqpbPTVAEfYX6psrLoTIdF9HG7/1WYByCUFGVh0dMB4BFoAF8B5lFLJZk3X3BtT7PzcEOmn0xkrQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mfBd76k2; 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="mfBd76k2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4939CC4CEDF; Sun, 9 Feb 2025 10:02:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739095345; bh=PvRlww9oxwxOA+huQBk1xHRyv5mmqZH7amLe1b0bbxw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mfBd76k2vxWqd1+r5hmAXXHEoBk+RdFbHNuZgi7UFfwkMvpHI61ppKCUI/gAOD5fA slj0iBs2x//FfTgagc8TVVLs9to5o2O4IW8kQgA1fJ2aKIF0XZYzzAIGSSN/vHt2mW OP/1+9oia6KAqCD4ssXq6pxswTornGSISZYpLfIx461pPB3kkPhrVWQBNO50OzAeGi jt/AlepSHvQHs8Mck+z1gw27NZlTufqqSVbbD2/eYfUd2dHMSt5at+6fHj5MN574ja kbX1SNuPQInBxaH6yFEKXmVQ7qjZMzZulvPTIj6cr4/w18T9kcbuqCP3c2TLHPHOC/ YhNf7xVCjIQlQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 6/8] Squash to "selftests/bpf: Add bpf_red scheduler & test" Date: Sun, 9 Feb 2025 18:02:05 +0800 Message-ID: <468fcec9db6b5c487bc0627b47fb055ba07c15d9.1739083794.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 Use the newly added bpf_for_each() helper to walk the conn_list. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/progs/mptcp_bpf_red.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c b/tools/test= ing/selftests/bpf/progs/mptcp_bpf_red.c index 627502e3c851..9f2cab4ba3f7 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_red.c @@ -20,12 +20,10 @@ SEC("struct_ops") int BPF_PROG(bpf_red_get_send, struct mptcp_sock *msk, struct mptcp_sched_data *data) { - for (int i =3D 0; i < data->subflows && i < MPTCP_SUBFLOWS_MAX; i++) { - if (!bpf_mptcp_subflow_ctx_by_pos(data, i)) - break; + struct mptcp_subflow_context *subflow; =20 - mptcp_subflow_set_scheduled(bpf_mptcp_subflow_ctx_by_pos(data, i), true); - } + bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) + mptcp_subflow_set_scheduled(subflow, true); =20 return 0; } --=20 2.43.0 From nobody Fri Mar 14 08:16:07 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 3FE92339A8 for ; Sun, 9 Feb 2025 10:02:26 +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=1739095347; cv=none; b=JA+8ybpIpShySfcmIVY3S6fHl13Kg3DLjKNiG92co2TNChOmV1qSMljYMr4z/MifF40xS1UiMqKnMy+Gvg0PVT77hVSz9V7Hg0hhpX3AvsG7D9w74QxnmbFpOPvI0/q+9p5A+4xrLMqA9ntVG+YZDrkucjEaCdUtS9sQp66SqCc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739095347; c=relaxed/simple; bh=fb2uCNFpuQlFp40NpYrtMpKBUg+F6FlLBd93Ex0V49U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AzkUszvKTRjSnNBOUzxIWMzNJ0c4ETJDdCLGajVcynuDUEuMrEWMAl5d/0nrl1xbnb18XS6cNFFneEAiwtHa8VpWCAoouk+Fp+4R+Qy2pker3+du8C0gzZL8sCDC/nfgQ4kDvzNKE/9CkZDbcqH4tu2f9n35CK5b6KqZxeuMMPg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R/I7k7Lq; 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="R/I7k7Lq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B2DCAC4CEE2; Sun, 9 Feb 2025 10:02:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739095346; bh=fb2uCNFpuQlFp40NpYrtMpKBUg+F6FlLBd93Ex0V49U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R/I7k7LqUQoRG/EOMOQSAtU447W8o/24ftiFA0Fj2GuqxTtxVNdHJFcSW7udRymMm gG1EUfZergV4oqe4z4xT8tgli1Cw3TWrTY6Gmffa+YMi28/VBQSGKBfyk661NhmJJ/ gx9njDIntCeiuJTUJnX/GdX1D/+fU2NKe3IwN+fRqy6nCoZF7M0bI+HC9K7GOx11Qp IDcHxOL2q1jA49EJNRM8nh9NX9h22nQK9HJqdoaUjTa4wHD/dpuKOyVEfF3UZtQp1a d/zcLGqozSf7PnAwi81Fh0Tz9An9NfCMeWu/bNkuBOQOLinvdfxEX3kF7DTt0wVDQ/ o9RdJ/Mir+44w== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 7/8] Squash to "selftests/bpf: Add bpf_burst scheduler & test" Date: Sun, 9 Feb 2025 18:02:06 +0800 Message-ID: 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 Use the newly added bpf_for_each() helper to walk the conn_list. Drop bpf_subflow_send_info, use subflow_send_info instead. Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_burst.c | 78 +++++++------------ 1 file changed, 26 insertions(+), 52 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_burst.c index 5743601df9dc..482b30cfb011 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c @@ -11,15 +11,10 @@ char _license[] SEC("license") =3D "GPL"; =20 #define min(a, b) ((a) < (b) ? (a) : (b)) =20 -struct bpf_subflow_send_info { - __u8 subflow_id; - __u64 linger_time; -}; - extern bool mptcp_subflow_active(struct mptcp_subflow_context *subflow) __= ksym; extern void mptcp_set_timeout(struct sock *sk) __ksym; extern __u64 mptcp_wnd_end(const struct mptcp_sock *msk) __ksym; -extern bool tcp_stream_memory_free(const struct sock *sk, int wake) __ksym; +extern bool bpf_sk_stream_memory_free(const struct sock *sk) __ksym; extern bool bpf_mptcp_subflow_queues_empty(struct sock *sk) __ksym; extern void mptcp_pm_subflow_chk_stale(const struct mptcp_sock *msk, struc= t sock *ssk) __ksym; =20 @@ -44,19 +39,6 @@ static __always_inline bool tcp_rtx_and_write_queues_emp= ty(struct sock *sk) return bpf_mptcp_subflow_queues_empty(sk) && tcp_write_queue_empty(sk); } =20 -static __always_inline bool __sk_stream_memory_free(const struct sock *sk,= int wake) -{ - if (sk->sk_wmem_queued >=3D sk->sk_sndbuf) - return false; - - return tcp_stream_memory_free(sk, wake); -} - -static __always_inline bool sk_stream_memory_free(const struct sock *sk) -{ - return __sk_stream_memory_free(sk, 0); -} - SEC("struct_ops") void BPF_PROG(mptcp_sched_burst_init, struct mptcp_sock *msk) { @@ -71,7 +53,7 @@ SEC("struct_ops") int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk, struct mptcp_sched_data *data) { - struct bpf_subflow_send_info send_info[SSK_MODE_MAX]; + struct subflow_send_info send_info[SSK_MODE_MAX]; struct mptcp_subflow_context *subflow; struct sock *sk =3D (struct sock *)msk; __u32 pace, burst, wmem; @@ -81,18 +63,12 @@ int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk, =20 /* pick the subflow with the lower wmem/wspace ratio */ for (i =3D 0; i < SSK_MODE_MAX; ++i) { - send_info[i].subflow_id =3D MPTCP_SUBFLOWS_MAX; + send_info[i].ssk =3D NULL; send_info[i].linger_time =3D -1; } =20 - for (i =3D 0; i < data->subflows && i < MPTCP_SUBFLOWS_MAX; i++) { - bool backup; - - subflow =3D bpf_mptcp_subflow_ctx_by_pos(data, i); - if (!subflow) - break; - - backup =3D subflow->backup || subflow->request_bkup; + bpf_for_each(mptcp_subflow, subflow, sk) { + bool backup =3D subflow->backup || subflow->request_bkup; =20 ssk =3D mptcp_subflow_tcp_sock(subflow); if (!mptcp_subflow_active(subflow)) @@ -110,7 +86,7 @@ int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *msk, =20 linger_time =3D div_u64((__u64)ssk->sk_wmem_queued << 32, pace); if (linger_time < send_info[backup].linger_time) { - send_info[backup].subflow_id =3D i; + send_info[backup].ssk =3D ssk; send_info[backup].linger_time =3D linger_time; } } @@ -118,16 +94,18 @@ int BPF_PROG(bpf_burst_get_send, struct mptcp_sock *ms= k, =20 /* pick the best backup if no other subflow is active */ if (!nr_active) - send_info[SSK_MODE_ACTIVE].subflow_id =3D send_info[SSK_MODE_BACKUP].sub= flow_id; + send_info[SSK_MODE_ACTIVE].ssk =3D send_info[SSK_MODE_BACKUP].ssk; =20 - subflow =3D bpf_mptcp_subflow_ctx_by_pos(data, send_info[SSK_MODE_ACTIVE]= .subflow_id); - if (!subflow) + ssk =3D send_info[SSK_MODE_ACTIVE].ssk; + if (!ssk || !bpf_sk_stream_memory_free(ssk)) return -1; - ssk =3D mptcp_subflow_tcp_sock(subflow); - if (!ssk || !sk_stream_memory_free(ssk)) + + subflow =3D bpf_mptcp_subflow_ctx(ssk); + if (!subflow) return -1; =20 burst =3D min(MPTCP_SEND_BURST_SIZE, mptcp_wnd_end(msk) - msk->snd_nxt); + ssk =3D bpf_core_cast(ssk, struct sock); wmem =3D ssk->sk_wmem_queued; if (!burst) goto out; @@ -146,20 +124,16 @@ SEC("struct_ops") int BPF_PROG(bpf_burst_get_retrans, struct mptcp_sock *msk, struct mptcp_sched_data *data) { - int backup =3D MPTCP_SUBFLOWS_MAX, pick =3D MPTCP_SUBFLOWS_MAX, subflow_i= d; + struct sock *backup =3D NULL, *pick =3D NULL; struct mptcp_subflow_context *subflow; int min_stale_count =3D INT_MAX; - struct sock *ssk; =20 - for (int i =3D 0; i < data->subflows && i < MPTCP_SUBFLOWS_MAX; i++) { - subflow =3D bpf_mptcp_subflow_ctx_by_pos(data, i); - if (!subflow) - break; + bpf_for_each(mptcp_subflow, subflow, (struct sock *)msk) { + struct sock *ssk =3D bpf_mptcp_subflow_tcp_sock(subflow); =20 - if (!mptcp_subflow_active(subflow)) + if (!ssk || !mptcp_subflow_active(subflow)) continue; =20 - ssk =3D mptcp_subflow_tcp_sock(subflow); /* still data outstanding at TCP level? skip this */ if (!tcp_rtx_and_write_queues_empty(ssk)) { mptcp_pm_subflow_chk_stale(msk, ssk); @@ -168,23 +142,23 @@ int BPF_PROG(bpf_burst_get_retrans, struct mptcp_sock= *msk, } =20 if (subflow->backup || subflow->request_bkup) { - if (backup =3D=3D MPTCP_SUBFLOWS_MAX) - backup =3D i; + if (!backup) + backup =3D ssk; continue; } =20 - if (pick =3D=3D MPTCP_SUBFLOWS_MAX) - pick =3D i; + if (!pick) + pick =3D ssk; } =20 - if (pick < MPTCP_SUBFLOWS_MAX) { - subflow_id =3D pick; + if (pick) goto out; - } - subflow_id =3D min_stale_count > 1 ? backup : MPTCP_SUBFLOWS_MAX; + pick =3D min_stale_count > 1 ? backup : NULL; =20 out: - subflow =3D bpf_mptcp_subflow_ctx_by_pos(data, subflow_id); + if (!pick) + return -1; + subflow =3D bpf_mptcp_subflow_ctx(pick); if (!subflow) return -1; mptcp_subflow_set_scheduled(subflow, true); --=20 2.43.0 From nobody Fri Mar 14 08:16:07 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 449B5339A8 for ; Sun, 9 Feb 2025 10:02:28 +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=1739095348; cv=none; b=cyKhAiEE/mQmxu6Kd575/wr061bVav9t9MGKyAeF4t2MzMcYz6YZQ2QXNzized0xafnXBjIyJvG7YUbdpaVwXP76Yl7WB3Y77QNE2W19HTqNdV6MoIHlMI4ISVTCuIje+5PGF5JbV7QFE4zUV7JIB+r6WaSkxWutTuQRQiAJJSM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739095348; c=relaxed/simple; bh=QH8lswTyWVWhcaVom/XLC2qNwS0O3SXO+M66ZfsxXTM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CINWRvcu0AvKMxlqWeKZfIQl3aFjGYYJ0TvXRoTctr/QeSyob3GtHSpImUhTkzXOd0KTTd8mWK6zJxegpL3iWsEu42cOEguXTw8NAjsUq/viwlbh0A+Dybj70cX5Ac7jI1NEfM0x2aMrs1a/8LeP6scdLmUI28BqRIl7pV0N9Io= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kwRJBQJ2; 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="kwRJBQJ2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4110EC4CEDD; Sun, 9 Feb 2025 10:02:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739095348; bh=QH8lswTyWVWhcaVom/XLC2qNwS0O3SXO+M66ZfsxXTM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kwRJBQJ2XwY0vNeZq6W8IVS5iOihQqoRRBbd2ahRGH6qpSNV0qzkZOLXfeiXRS2cu KvkLFgG9xFUijqkstWg8FsPKEyhF1HvuC226jv/EhDRV/CFP+bcQcvrTZU/0Zo2g+O cQtIztQU2OVSDmeo8+rwIhWvbvlCqtI6jZaN9+mlTYXMMxpN2Tdn4dA33H7pUoIajy Ypn796pueufMAFLkPmfsoxIHCc97yiIkhKXTBv0TNGFj2oALkHFzviGbWD4PsUUJ5a FCPsK6iLQtWQOeyEAuS8L6UIrR7vjx2Evz9rCxrEg/I78y5M6JgLc+rr5dKG7F1O2k XHZpktwAIWzgg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 8/8] mptcp: drop subflow contexts in mptcp_sched_data Date: Sun, 9 Feb 2025 18:02:07 +0800 Message-ID: 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 The mptcp_subflow bpf_iter is added now, it's better to use the helper bpf_for_each(mptcp_subflow) to traverse all subflows on the conn_list of an MPTCP socket and then call kfunc to modify the fields of each subflow in the WIP MPTCP BPF packet scheduler examples, instead of converting them to a fixed array. With this helper, we can get rid of this subflow array "contexts" and the size of it "subflows" in struct mptcp_sched_data. And keep struct mptcp_sched_data for future use. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 2c85ca92bb1c..df87114deb1c 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -100,11 +100,7 @@ struct mptcp_out_options { #define MPTCP_SCHED_MAX 128 #define MPTCP_SCHED_BUF_MAX (MPTCP_SCHED_NAME_MAX * MPTCP_SCHED_MAX) =20 -#define MPTCP_SUBFLOWS_MAX 8 - struct mptcp_sched_data { - u8 subflows; - struct mptcp_subflow_context *contexts[MPTCP_SUBFLOWS_MAX]; }; =20 struct mptcp_sched_ops { --=20 2.43.0