From nobody Tue May 6 04:41:17 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 D9D8C226165 for <mptcp@lists.linux.dev>; Thu, 6 Feb 2025 09:05: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=1738832708; cv=none; b=WFNwQqrBNY9DiPgtvFQk6uj1MudrwTHP3hBQq3++wKtcXstAn1LRNaKDogEHce3d1clp3DL8R9s1BvV9qKYYVz05BdB7sCjF7hnHY3Z7zL8EgB+Mymi9gQ5uQtEnmjtsWUmHh5DXqKCqwY5+89Ds/HFUPNSTYBkjJREf7OrMT0g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738832708; c=relaxed/simple; bh=ZmUi+Hu4+KCl5twoWAZqKOBKxfzJ+JWFal9xUmOfOVc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S4Jsrx/3Hrki/V4orJ/bhCF3yMJU85Re6VCAkhelswci6EJVIw4z/7tENztXtbE/C49vYm82H+zOLLuEleDDpF+/RkL9pV3z4jDPn0mD8/ZUCDj79EnYRXpAQ7HVfTDuZsa3fEuduuKnLVpIW2PG2zfwa7oyb+swBMNbmjsqZQM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nhwHNEU8; 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="nhwHNEU8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2B538C4CEE0; Thu, 6 Feb 2025 09:05:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738832708; bh=ZmUi+Hu4+KCl5twoWAZqKOBKxfzJ+JWFal9xUmOfOVc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nhwHNEU8nasuclKepQzxZEVNdEvJNTCrGx8XJ7TuHClGaimtIEESJf9jvxRirS/kT LI1w1aykN2bXcw0a3LoFdzcKfslIy7jJ4XZikzymqXOQWLE5TZH7krJ/HzhEc+OdSa 8a0mKvZ3BDQyUy/HOCJAWpmuadj2UFz+lc8MXLnaQBOHoyrgn6o5hiKHqH/v+glVHB 57bz890Fjqd5dPBYkSovmBurz3N4Oj1haKGYNZAtFI2VI8xRoj7cVXOtaEWEEkDu1F MQKuD1FvpF7AF8JIqzocgnS1dMVhCBzK/wfu58r7bcgn5MKWRilA4Xh/l0X8TR+Cf9 s7POQRa79uDyg== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v13 1/9] Squash to "bpf: Register mptcp common kfunc set" Date: Thu, 6 Feb 2025 17:04:51 +0800 Message-ID: <caad268606d9a2a08fa7bdfdd08902bf0a85eefc.1738832147.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1738832147.git.tanggeliang@kylinos.cn> References: <cover.1738832147.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> 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. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- net/mptcp/bpf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index a74173cc8998..c09d5526d976 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -224,11 +224,11 @@ 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) { - if (sk && sk_fullsock(sk) && - sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_mptcp(sk)) - return mptcp_subflow_ctx(sk); + if (sk__ign && sk_fullsock(sk__ign) && + sk__ign->sk_protocol =3D=3D IPPROTO_TCP && sk_is_mptcp(sk__ign)) + return mptcp_subflow_ctx(sk__ign); =20 return NULL; } --=20 2.43.0 From nobody Tue May 6 04:41:17 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 AFDF122577D for <mptcp@lists.linux.dev>; Thu, 6 Feb 2025 09:05:10 +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=1738832710; cv=none; b=YaXXsfwlwIp4ctRi3tzAxtHI7LIby2kzfkJaP9AoTKHLIh3qOOqubGgHfh4in36741VTGm4wLqqPdI6HFvVjPdrqS556wa21kSjxAe4ZI/5aLDdwWH7Z928xOOxfBmETyWrfukZkIPhCYWAK6UkcvDINLNHys2tEfUwJcwS6Q+s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738832710; c=relaxed/simple; bh=R5Umg4M3oug08UUDC8vXh8uvtSOxGxFqijHEh2c7tX8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cNKcZHmZ+K6aArymOQBWaUgu/3IMkFb59cla4NGksjMK5MZVDBINfhLmoqwzWqMXGEgNbm6tsvA+Y3eV5BWT7vpSKQtqQDbdbGNsSTKqVp/k07ZOqTXiy9Z9QK+ZukLsyLN7SSX5tK7PbdEmObjndGetx9tqXmtmAzlL7HorXDw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FyhU6Val; 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="FyhU6Val" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0562FC4CEE4; Thu, 6 Feb 2025 09:05:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738832710; bh=R5Umg4M3oug08UUDC8vXh8uvtSOxGxFqijHEh2c7tX8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FyhU6ValymF+pjmiy6MOI4ENP9t2w6YWykAxuiF+gYv0qVgXO5F80/s9Dm63wV98A e9yeOG4nJhUiTiPORFBsP/DsWUuNecbr7wraWCpzjvVt1CAIxoQOxGpzBCQAkDrUmT UjAmjz/7eD8kpN2uYAr0LbtkKpUvJ7xGwK6lCMaZY3WdoIdKr5EwTmi+xleb5IdDr3 YJAD7WKqSjmKb+zdObJx6MmOjMwFDgPYEMinixKpBuoXhWlKp+8Go2lf3M4vwwJ4hb uAJMbM5w+wXqo2oa98Q3CQa0YskotLxNS6XfDXbBGHQT9KySTSEsD+uufMr1Ct0KU8 5wIi8s1PdNtqg== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v13 2/9] Revert "mptcp: add sched_data helpers" Date: Thu, 6 Feb 2025 17:04:52 +0800 Message-ID: <faa21385be99fa196f8e3736ae61c5b4130bb824.1738832147.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1738832147.git.tanggeliang@kylinos.cn> References: <cover.1738832147.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> Drop this patch. bpf_mptcp_subflow_ctx_by_pos and mptcp_sched_data_set_contexts are uesless now. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- net/mptcp/bpf.c | 8 -------- net/mptcp/protocol.h | 2 -- net/mptcp/sched.c | 22 ---------------------- 3 files changed, 32 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index c09d5526d976..76fe99ffe10a 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..c2a95d6590e7 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -154,26 +154,6 @@ void mptcp_subflow_set_scheduled(struct mptcp_subflow_= context *subflow, WRITE_ONCE(subflow->scheduled, scheduled); } =20 -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; -} - int mptcp_sched_get_send(struct mptcp_sock *msk) { struct mptcp_subflow_context *subflow; @@ -199,7 +179,6 @@ int mptcp_sched_get_send(struct mptcp_sock *msk) =20 if (msk->sched =3D=3D &mptcp_sched_default || !msk->sched) return mptcp_sched_default_get_send(msk, &data); - mptcp_sched_data_set_contexts(msk, &data); return msk->sched->get_send(msk, &data); } =20 @@ -222,7 +201,6 @@ int mptcp_sched_get_retrans(struct mptcp_sock *msk) if (msk->sched =3D=3D &mptcp_sched_default || !msk->sched) return mptcp_sched_default_get_retrans(msk, &data); =20 - mptcp_sched_data_set_contexts(msk, &data); if (msk->sched->get_retrans) return msk->sched->get_retrans(msk, &data); return msk->sched->get_send(msk, &data); --=20 2.43.0 From nobody Tue May 6 04:41:17 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 9257F225A2B for <mptcp@lists.linux.dev>; Thu, 6 Feb 2025 09:05: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=1738832712; cv=none; b=JI50Syn/mJBNenmx4w1PTkkot2Gj7MxR+IhWz1XmYfveG+mibHdJykI30Vdh42xWoL5EmodAk+As5upXrJD54Mti0HnuuzCR+CxzMCyXX3F5SuMBZ8ZcjFfOPrzxtJoU3TfzVMpNlu9EBRDMT5qIztirb7A9HB+Nq2CA577TFrk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738832712; c=relaxed/simple; bh=zs++kNZUDyiUfjYrXi2A8zXJqhZ1CIyo4SHfazh+tj0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZClLX2riUmLzDE+fGmzWDeqEby9ciJXOgki5r0YbBgfXtevPpz08dgyazFLG4PxCA8ifCIXdYMSDWAbxSFi9guMkhjScj+jrFOxBxsr4Mb8kIKmCc9xPepZmDx/kV4uVFMMTBhCBLnZNbrQqMZx8dnM7Lzuai5/zOEUFOAB9hPU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fRNFKmYH; 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="fRNFKmYH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D2FF2C4CEDD; Thu, 6 Feb 2025 09:05:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738832712; bh=zs++kNZUDyiUfjYrXi2A8zXJqhZ1CIyo4SHfazh+tj0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fRNFKmYHJt0RCKzCiSgzRo5nOI40j3cOfNVMZNYShzDnsCxS3wdSVVwdP1JlQ5xjL QxET/jBJExotVPCV8xoaidf+sLlhNttIOryOsnqQlgSiq49nAuJgAJilOoCsxifkf6 f439W6Rk/pzOP7nGL11NCZBbHsCWPQs81rNQ+TiYMqbWyUe7RdM3KMn9/HOZcg50NZ 7Y+fhGoeP+ZtTAXmtjU1gBnNiVap8KfpizsAhU9aIS7wxTcs3uB0ggUVQkx7I+kHkr Ymb6zgdEz3+JtO4B9lpUjrODzyUPJJfpNWKayEgD2fVNqeBfamdXBQXbWluQsynYTY g0s0vKZ56huLw== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v13 3/9] Squash to "bpf: Export mptcp packet scheduler helpers" Date: Thu, 6 Feb 2025 17:04:53 +0800 Message-ID: <55948ff7f8df83e08a3a34e430c4e4cd9f411cd5.1738832147.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1738832147.git.tanggeliang@kylinos.cn> References: <cover.1738832147.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> 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 <tanggeliang@kylinos.cn> --- net/mptcp/bpf.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index 76fe99ffe10a..3f67a24ef372 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -233,6 +233,15 @@ bpf_mptcp_subflow_ctx(const struct sock *sk__ign) 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 +290,35 @@ __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) +{ + if (sk__ign && sk_fullsock(sk__ign) && + sk__ign->sk_protocol =3D=3D IPPROTO_TCP && sk_is_mptcp(sk__ign)) + return sk_stream_memory_free(sk__ign); + + 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 +329,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 Tue May 6 04:41:17 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 3C65522577D for <mptcp@lists.linux.dev>; Thu, 6 Feb 2025 09:05:14 +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=1738832717; cv=none; b=Mb2uysBUYai+WLtAJ3gbskPftDZb3eKrUZL+27aCa+3aFEIMdoUXvMk5wY3QzwqUTfOqRyJ+8/VlvKyZt0R5xTpApLdNEF9KBiS5pOON1/KkfsC7ZZRr7jm5DHNdWvAGL6UpjUP8AGk6vBHOEglvUGnOiYK8V/BiRWC/V5Z9WZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738832717; c=relaxed/simple; bh=BO2T5ZZjik4RVsV1yvAk+xTNXjhcBH1jTU7iLLtP4so=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XlMbA0A8sdvxzX9Yz48SHId3LAfSqWsWvnw7PsQPnkS47LdM/5IjtP8PZTu01UsCIoXz//sVm+Yh8nea3gwIeTf/7nRsr6NHYuZnwayjfRgaVxME5PEmlJyD4Gth9+kGNAGDEE/K5rBcjRQ289PP4lbDDSnh4sSW5ZP9A1m7ikA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=V8OHU3mZ; 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="V8OHU3mZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id ACF27C4CEE0; Thu, 6 Feb 2025 09:05:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738832713; bh=BO2T5ZZjik4RVsV1yvAk+xTNXjhcBH1jTU7iLLtP4so=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=V8OHU3mZmcqpUbogoGv4f0xY9G547drSDPhuU76HhBmrPvq0NbjJDGUu2rADGKJVK 5hYw0TJFedTN9tuG5Ngwg7qV+cQIJ3Jj4yas+gS7PIfiBEper7arBENSQVyKwblwd2 1z5wSztUcnDg3M/6255nTqKea0uGz5mykXviFPs93I7WpsKEBwZYScJ8UMwfU2KzE7 PximnsQ175vMXFm6SyXcQ9o1AEeeY/4iNzMj57VSdX/goBim5g9DOqma3QvaDyJd7T uM03T/Y89gcSKmX6DFJiBBbaIRENyt4IOj3n/mchxBKP09mAd73IvT7UlPTdn7bwDN zqieaXktUhUtA== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v13 4/9] Squash to "selftests/bpf: Add bpf_first scheduler & test" Date: Thu, 6 Feb 2025 17:04:54 +0800 Message-ID: <bf236e54cdeeb0ae23fc6437acb05573f0c99942.1738832147.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1738832147.git.tanggeliang@kylinos.cn> References: <cover.1738832147.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> 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 <tanggeliang@kylinos.cn> --- 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 Tue May 6 04:41:17 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 3C6F2225A27 for <mptcp@lists.linux.dev>; Thu, 6 Feb 2025 09:05: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=1738832717; cv=none; b=e9rGJ5zr1atB+g7E9vmu7b69rg0hKIJqqZzAl2a69eHrJ7yuiUPryZERklSvwvL+nxBQaVSBo4NFCEs7AFaE4rcMgrogZ7FNgv3t2eHyCfvE33AEOoYYvHlnRtdF8aLp6FV5awyy5WV/FhfiDgLBdCfBNjPjerIfQjw9MuCsgTo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738832717; c=relaxed/simple; bh=1su1M3eNFxvg6tCEug8h33AMhzMJVn4aAseRa4VGjmg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UPwxLDuATD5oBea3+XWDTVf2eWzOd6qFyoQa0KhoqvKg8DFzkdPxr4diPsQgmN5Ig4sCn0VUy0BUGDmKHrlSUlNk7Mrm6h8kLR2P+UNel+MANb5MoVyU0ZxhenlgdWp+cJxueiWAdaohtgjesf/hhXksCZZgUrI7MBvdv37my84= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dTFNN+mb; 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="dTFNN+mb" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 867CBC4CEDD; Thu, 6 Feb 2025 09:05:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738832715; bh=1su1M3eNFxvg6tCEug8h33AMhzMJVn4aAseRa4VGjmg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dTFNN+mb+PGeZlpCrp911pUr44rNfcjMMNWMdvUNNfzeIU8AbH/9m59SespEgnTJ1 jm4k3HHGqJvlez+MwyIbdgldBM0eC7HAz+DlRM7I+EFiXIMWXH+VY+iHvPP86WvmAL zSluUhPAai/uiq6ZgreE0PJuGlhQnazv2jOL9Yz6T1S6ghBz+3f2oeFlLOPwrrtVF2 lwE5Ugu0iWbKyIvMVFafBSMNSAY9KH2PO83iJGtVEOJnCVk6OEq3LOuMfv3//fZr2I uTADr7y1+t2RmFO8gFd1nJz6cJdCXlJfLAITgcDtLHxSNGykkdl37bzBuOmfPsx7tW Z8xAl2fDkLPow== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v13 5/9] Squash to "selftests/bpf: Add bpf_bkup scheduler & test" Date: Thu, 6 Feb 2025 17:04:55 +0800 Message-ID: <2beb96c1dc2fb8c52977a4191da318ed55d08f47.1738832147.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1738832147.git.tanggeliang@kylinos.cn> References: <cover.1738832147.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> Use the newly added bpf_for_each() helper to walk the conn_list. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- .../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 Tue May 6 04:41:17 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 25FD8225A23 for <mptcp@lists.linux.dev>; Thu, 6 Feb 2025 09:05:17 +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=1738832718; cv=none; b=krKZJ0rTKbtkcj+sy2SoKG+MnK/LMxadMEir9X5ZBweoUFHtGkKigUUb33zrA8SgvhbIRZzV3iXp6QGb2H+ZfDRUMNcahA/sfkSee/CDdF8F/254yrzfm6NxCLaOgDS5rcR3UwgFd0Xl/s01fYi0v91HKr425+Whj3su01RsPvU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738832718; c=relaxed/simple; bh=NGXQE9Kif6loAReYC7iiycV9qt5iAyr/88XdrWpLpD0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KCVgFj2Y0MJKLOST7gYK4X+kM5R7Fujp/0wQunm6K3wDvJS8ddbaWmDPTSUNUls8i7vfAEPR2oMYWYEOk4hPRYugzTT+UC94tCfaZN0mrdIQRC2YLZ9iDkj6DNklSxKf7qlLsEb4dcbwQaqgEtlug7FGwrHQhiHjJVsNO1YNIrw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IlvAAE7Z; 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="IlvAAE7Z" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6074BC4CEE2; Thu, 6 Feb 2025 09:05:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738832717; bh=NGXQE9Kif6loAReYC7iiycV9qt5iAyr/88XdrWpLpD0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IlvAAE7ZDIHBmEZqqt2OJ54Em5la75IIanhx61Tq46NWvUGp/wVVNCpf6Voj9xGnv ZwpmwWYbMZLaixyNlZ76EFutsRbNDjN4FecZWnl0na0jV3M9xfI6gp7xcIHDEE1tYL 0obQUWyX0bFYOepJPegLxalBQETGCT7UM1XOSBamvwVcbkuGX3b6Zy3XFJs9rItyM9 qtIuu62nY00OLa0WO4lE/nfCuRKvaJ6LjM0lDCpJYklWpLZeoA5tW0GQkTY5TO8EQk 3o3SJm9u8gnphP+bCJMKNiHquQX3H8a+tK6Jb51USXLs45U2MuuqXRxcvlo+3TRdzX Li+SQLzRt+H/g== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v13 6/9] Squash to "selftests/bpf: Add bpf_rr scheduler & test" Date: Thu, 6 Feb 2025 17:04:56 +0800 Message-ID: <906b01c2052eeb25cc933876994511ae15de5a55.1738832147.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1738832147.git.tanggeliang@kylinos.cn> References: <cover.1738832147.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> Use the newly added bpf_for_each() helper to walk the conn_list. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- .../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 Tue May 6 04:41:17 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 F0A96225A23 for <mptcp@lists.linux.dev>; Thu, 6 Feb 2025 09:05: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=1738832720; cv=none; b=I+B0f+DkkL2g7B9l1h+agXLUhxs0MOwlKRXZdfsNzAOQKJl9mnOOle9Xey/KUop3+rb0r7hVrgV2odRotYYkP5oTgTk3b8nlvsd3Mt37nnCHE0z1d/zy8WbbEc0xxk1UDgDXCmUj8xMPhVvnKp9VmNtlddrD782RLSIirwj9jQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738832720; c=relaxed/simple; bh=PvRlww9oxwxOA+huQBk1xHRyv5mmqZH7amLe1b0bbxw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ty2kecqUB+2JFzcWANaSj5Dih6Cs1a+up5cQQkYtn0q/nKqzIdKK2BZ5yKZ03s7KEBJ49A82Y56rzNQOvS86mnFPUv1IU4iUIOV98XNre2qEH4ZhPOtIIHTmTi02eEY/sqqTd7Q8tTCpCyhqd8JpeSSra7QL/fFOqVGQHOXD40A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nsXWy58u; 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="nsXWy58u" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 39DF5C4CEDD; Thu, 6 Feb 2025 09:05:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738832719; bh=PvRlww9oxwxOA+huQBk1xHRyv5mmqZH7amLe1b0bbxw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nsXWy58u6xs4eDr++EpYhxEmPEY8HH1TDapcooQVkwT7hKsR07YTy+3uLgeDdTGc1 EIwy5z9Mtb2JZ8KU/HBf5/42okkje1VLLGhnEnq6GuMoMJpyoQKvdjSbNPJwbHdM+8 PhLPnwr5eRNjJ36xCfwVFOnBxN14RXwLYbQpVAmSueGNs5EP81DuCiTOxw5XwZfFIL HqxV06uhgTxhxe2OFExg7MoQq4jT+9SIwdSOU0uHef9JJt7wAiYpKbu9acBojLNZ/Y K6piPYg1GdpnGEH36HqolfApw6J3o94OrS3/2YevVi83Wl0013Ez+FNNWm8oZtUsbw zL1z1zu9Usxhw== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v13 7/9] Squash to "selftests/bpf: Add bpf_red scheduler & test" Date: Thu, 6 Feb 2025 17:04:57 +0800 Message-ID: <9d7a68667502d02b73d2ca922f9664da44ec9380.1738832147.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1738832147.git.tanggeliang@kylinos.cn> References: <cover.1738832147.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> Use the newly added bpf_for_each() helper to walk the conn_list. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- 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 Tue May 6 04:41:17 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 92BB6225A23 for <mptcp@lists.linux.dev>; Thu, 6 Feb 2025 09:05:21 +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=1738832721; cv=none; b=mMBa6k4RzDw2IgvEGDMRsayhFWCkO2C4m580/CwdSIzoXSRHhvo8oDMnHBNGNhU3O+M65BwAMqN475sdndS01iF2aPASW5ZGA6o8bvBMME6PEQMtAKRkSwo0KezGYYj3Ef4Iyo1tHGIYDkr6hvrqxwto1LxU4AOax7O0TPFKVGQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738832721; c=relaxed/simple; bh=fb2uCNFpuQlFp40NpYrtMpKBUg+F6FlLBd93Ex0V49U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IgXVOF47R6rHG30bQdtoHokm1JKN+10VEE2qWD6gwoUNGpENtsfxLQDrnHTcqj/sh0HSKUL8Y3Zu6s6SKLCc5L7tdSnHyElVfH9nHkJHCbHLqsND3RQZDySGKLC7kM5c2YDSZJaAOib7TsfvUIuTYQvSib2M4F5/OR8MaISqORw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mWGwRy0Z; 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="mWGwRy0Z" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 13D6AC4CEE2; Thu, 6 Feb 2025 09:05:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738832721; bh=fb2uCNFpuQlFp40NpYrtMpKBUg+F6FlLBd93Ex0V49U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mWGwRy0ZRhMNDH6QxcpUxVbkpgxWYXosIAmhK8mGVyzBhfvVmLVmcNJrlcYk1B/IY IxNjwL61HILbtiOWM0BwTQmLyfx7X/PuMYjybT476/0XTIvZ1MsghL3VaTj3LkvRCS KniRTcpSz8WCbpgCDsryt7HX5qU1Ndv3o8N3N4uwFh7zmEYSupTK2tyxLxf1AzzKBn mGjCjGszBqHpZ8UX+wrdr/o6EM9QcINtNOVV/q0MsBzgyxt39lOt+uE9c+en1ibFFf murul8vcMCu3lsFkwJ29xxN441vj1DRdcMp7E73JaLRKVAUjdShzlllz9ua0oJ/Zal jLFuzNSIZaC5g== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v13 8/9] Squash to "selftests/bpf: Add bpf_burst scheduler & test" Date: Thu, 6 Feb 2025 17:04:58 +0800 Message-ID: <f6bc4c771c3a0ca6df24c990d2697bd452244364.1738832147.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1738832147.git.tanggeliang@kylinos.cn> References: <cover.1738832147.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> 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 <tanggeliang@kylinos.cn> --- .../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 Tue May 6 04:41:17 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 CBBCC225A23 for <mptcp@lists.linux.dev>; Thu, 6 Feb 2025 09:05: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=1738832723; cv=none; b=sZhwXqog2yWO+/xyWWT8Ua5dLxvCIh1IumYdQP2olxcLs6t6ayuHW7I5AudHcI+wSSBNwSV0R+4h7vo2alBo0Pow4Xp4ai5JCA1QGA9VOoy1D8pq6yBTtPCXst8O7BjDLvFkRiNMAwZ5w/FO1DcT+k5oOvyGhfGxOCsXlr8+juk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738832723; c=relaxed/simple; bh=y5iRi1GPK3WrbYkk7tVB/B1By0XI7T6LhwuLpU0JvMM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H9plkD2lM4V7vU1LyGqBcaBfNV/lwl5jvka4LzLBp5G1ZlEBC75hZB1QGnKTDF7s9BqyQRTQagR/FO9NlE9/5oHtVgHZxcSj9gRM1RkR//OlXIPOKrDpr2Iq955XVAmb1sqbKY/WJ1CZ786pmH5uxFTvlF1BuL1bn2mBLfYeDDc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dwjHptrj; 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="dwjHptrj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1F6E0C4CEE0; Thu, 6 Feb 2025 09:05:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738832723; bh=y5iRi1GPK3WrbYkk7tVB/B1By0XI7T6LhwuLpU0JvMM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dwjHptrjQKyu4W02Sop6vIWipG1zRfTswygSNeEdA3gNS60fQ+j9dAJTGlhEZeU0z LnXpZDeUu0iNLXDPpRrsFqAk9eqcY9QR7R/B4i/1fuCHTSQ5O6KIJrM9tJ20p069Ww HucHIx9HBuPtPel25PBLexpMcxIaM3KNS56vaRbM6snDGHHRLytYniotcctMbkIGCC Aeu4u86jI9TQVz2maFu6sFNRK0Y38tZY1rHS6WOIUuHnh3eX5tyD+ZDkrvDLDITWgw DbRutHQXUuXss5O5LfyRz0HzwL8vHxx3HP5oa+37GcltjuhfnxeIhH4l7sdtrqrICS J6kUZDzJdf/Jg== From: Geliang Tang <geliang@kernel.org> To: mptcp@lists.linux.dev Cc: Geliang Tang <tanggeliang@kylinos.cn> Subject: [PATCH mptcp-next v13 9/9] mptcp: drop subflow contexts in mptcp_sched_data Date: Thu, 6 Feb 2025 17:04:59 +0800 Message-ID: <675476a73878d2aa9509adbba512376c9d13e508.1738832147.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: <cover.1738832147.git.tanggeliang@kylinos.cn> References: <cover.1738832147.git.tanggeliang@kylinos.cn> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: <mptcp.lists.linux.dev> List-Subscribe: <mailto:mptcp+subscribe@lists.linux.dev> List-Unsubscribe: <mailto:mptcp+unsubscribe@lists.linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang <tanggeliang@kylinos.cn> 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" in struct mptcp_sched_data. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> --- include/net/mptcp.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 2c85ca92bb1c..9f154f509b67 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -100,11 +100,8 @@ 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