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