MPTCP Linux Development
 help / color / mirror / Atom feed
* [PATCH mptcp-next v6 00/13] refactor push pending
@ 2022-10-11 12:01 Geliang Tang
  2022-10-11 12:01 ` [PATCH mptcp-next v6 01/13] Squash to "mptcp: add get_subflow wrappers" Geliang Tang
                   ` (12 more replies)
  0 siblings, 13 replies; 26+ messages in thread
From: Geliang Tang @ 2022-10-11 12:01 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

v6:
- drop all msk->last_snd, add last_snd variable instead in patch 13
- fix lock_sock issue in patch 3
- merge squash-to patches
- This series should be merged between the commit "mptcp: add get_subflow
wrappers" and "bpf: Add bpf_mptcp_sched_ops", except the last squash-to
patch.

v5:
- address Mat's comments in v4.

v4:
- update __mptcp_subflow_push_pending as Mat suggested.
- add more patches from "BPF redundant scheduler" series.

v3:
- add a cleanup patch.
- remove msk->last_snd in mptcp_subflow_get_send().
- add the loop that calls the scheduler again in __mptcp_push_pending().

v2:
- add snd_burst check in dfrags loop as Mat suggested.

Refactor __mptcp_push_pending() and __mptcp_subflow_push_pending() to
remove duplicate code and support redundant scheduler more easily in
__mptcp_subflow_push_pending().

Geliang Tang (13):
  Squash to "mptcp: add get_subflow wrappers"
  mptcp: change 'first' as a parameter
  mptcp: refactor push_pending logic
  mptcp: drop last_snd of struct mptcp_sock
  mptcp: simplify push_pending
  mptcp: multi subflows push_pending
  mptcp: don't delegate sending repeatedly
  mptcp: use msk instead of mptcp_sk
  mptcp: refactor subflow_push_pending logic
  mptcp: simplify subflow_push_pending
  mptcp: multi subflows subflow_push_pending
  mptcp: multi subflows retrans support
  Squash to "selftests/bpf: Add bpf_rr scheduler"

 net/mptcp/pm.c                                |   9 +-
 net/mptcp/pm_netlink.c                        |   3 -
 net/mptcp/protocol.c                          | 280 +++++++++---------
 net/mptcp/protocol.h                          |   6 +-
 net/mptcp/sched.c                             |  61 ++--
 tools/testing/selftests/bpf/bpf_tcp_helpers.h |   1 -
 .../selftests/bpf/progs/mptcp_bpf_rr.c        |   6 +-
 7 files changed, 182 insertions(+), 184 deletions(-)

-- 
2.35.3


^ permalink raw reply	[flat|nested] 26+ messages in thread
* [PATCH mptcp-next 8/8] Squash to "selftests/bpf: Add bpf_rr scheduler"
@ 2023-05-27 12:55 Geliang Tang
  2023-05-27 15:28 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
  0 siblings, 1 reply; 26+ messages in thread
From: Geliang Tang @ 2023-05-27 12:55 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Use data->last_snd instead of msk->last_snd.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 tools/testing/selftests/bpf/bpf_tcp_helpers.h    | 2 +-
 tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
index fcb023a749ad..b6a0789fe33b 100644
--- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
@@ -240,6 +240,7 @@ struct mptcp_subflow_context {
 
 struct mptcp_sched_data {
 	bool		reinject;
+	struct sock	*last_snd;
 	struct mptcp_subflow_context *contexts[MPTCP_SUBFLOWS_MAX];
 } __attribute__((preserve_access_index));
 
@@ -259,7 +260,6 @@ struct mptcp_sched_ops {
 struct mptcp_sock {
 	struct inet_connection_sock	sk;
 
-	struct sock	*last_snd;
 	__u32		token;
 	struct sock	*first;
 	char		ca_name[TCP_CA_NAME_MAX];
diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
index e101428e5906..4b4141056fe2 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
@@ -28,10 +28,10 @@ int BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
 	int nr = 0;
 
 	for (int i = 0; i < MPTCP_SUBFLOWS_MAX; i++) {
-		if (!msk->last_snd || !data->contexts[i])
+		if (!data->last_snd || !data->contexts[i])
 			break;
 
-		if (data->contexts[i]->tcp_sock == msk->last_snd) {
+		if (data->contexts[i]->tcp_sock == data->last_snd) {
 			if (i + 1 == MPTCP_SUBFLOWS_MAX || !data->contexts[i + 1])
 				break;
 
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 26+ messages in thread
* [PATCH mptcp-next v19 9/9] Squash to "selftests/bpf: Add bpf_rr scheduler"
@ 2022-11-11  7:48 Geliang Tang
  2022-11-11  9:53 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
  2022-11-16  2:38 ` MPTCP CI
  0 siblings, 2 replies; 26+ messages in thread
From: Geliang Tang @ 2022-11-11  7:48 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Use new API.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
index ce4e98f83e43..e101428e5906 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
@@ -16,8 +16,14 @@ void BPF_PROG(mptcp_sched_rr_release, const struct mptcp_sock *msk)
 {
 }
 
-void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
+void BPF_STRUCT_OPS(bpf_rr_data_init, const struct mptcp_sock *msk,
 		    struct mptcp_sched_data *data)
+{
+	mptcp_sched_data_set_contexts(msk, data);
+}
+
+int BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
+		   struct mptcp_sched_data *data)
 {
 	int nr = 0;
 
@@ -35,12 +41,14 @@ void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
 	}
 
 	mptcp_subflow_set_scheduled(data->contexts[nr], true);
+	return 0;
 }
 
 SEC(".struct_ops")
 struct mptcp_sched_ops rr = {
 	.init		= (void *)mptcp_sched_rr_init,
 	.release	= (void *)mptcp_sched_rr_release,
+	.data_init	= (void *)bpf_rr_data_init,
 	.get_subflow	= (void *)bpf_rr_get_subflow,
 	.name		= "bpf_rr",
 };
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 26+ messages in thread
* [PATCH mptcp-next v8 15/15] Squash to "selftests/bpf: Add bpf_rr scheduler"
@ 2022-10-14 13:32 Geliang Tang
  2022-10-14 15:49 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
  0 siblings, 1 reply; 26+ messages in thread
From: Geliang Tang @ 2022-10-14 13:32 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Use last_snd instead of msk->last_snd, then last_snd of struct
mptcp_sock could be removed.

Use new API.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 tools/testing/selftests/bpf/bpf_tcp_helpers.h    |  1 -
 tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c | 16 +++++++++++++---
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
index 701cc31359d3..ee64b29bf9bb 100644
--- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
@@ -260,7 +260,6 @@ struct mptcp_sched_ops {
 struct mptcp_sock {
 	struct inet_connection_sock	sk;
 
-	struct sock	*last_snd;
 	__u32		token;
 	struct sock	*first;
 	char		ca_name[TCP_CA_NAME_MAX];
diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
index ce4e98f83e43..2d27523b5a7c 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
@@ -5,6 +5,7 @@
 #include "bpf_tcp_helpers.h"
 
 char _license[] SEC("license") = "GPL";
+struct sock *last_snd = NULL;
 
 SEC("struct_ops/mptcp_sched_rr_init")
 void BPF_PROG(mptcp_sched_rr_init, const struct mptcp_sock *msk)
@@ -16,16 +17,22 @@ void BPF_PROG(mptcp_sched_rr_release, const struct mptcp_sock *msk)
 {
 }
 
-void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
+void BPF_STRUCT_OPS(bpf_rr_data_init, const struct mptcp_sock *msk,
 		    struct mptcp_sched_data *data)
+{
+	mptcp_sched_data_set_contexts(msk, data);
+}
+
+int BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
+		   struct mptcp_sched_data *data)
 {
 	int nr = 0;
 
 	for (int i = 0; i < MPTCP_SUBFLOWS_MAX; i++) {
-		if (!msk->last_snd || !data->contexts[i])
+		if (!last_snd || !data->contexts[i])
 			break;
 
-		if (data->contexts[i]->tcp_sock == msk->last_snd) {
+		if (data->contexts[i]->tcp_sock == last_snd) {
 			if (i + 1 == MPTCP_SUBFLOWS_MAX || !data->contexts[i + 1])
 				break;
 
@@ -35,12 +42,15 @@ void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
 	}
 
 	mptcp_subflow_set_scheduled(data->contexts[nr], true);
+	last_snd = data->contexts[nr]->tcp_sock;
+	return 0;
 }
 
 SEC(".struct_ops")
 struct mptcp_sched_ops rr = {
 	.init		= (void *)mptcp_sched_rr_init,
 	.release	= (void *)mptcp_sched_rr_release,
+	.data_init	= (void *)bpf_rr_data_init,
 	.get_subflow	= (void *)bpf_rr_get_subflow,
 	.name		= "bpf_rr",
 };
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 26+ messages in thread
* [PATCH mptcp-next v7 12/12] Squash to "selftests/bpf: Add bpf_rr scheduler"
@ 2022-10-12  4:40 Geliang Tang
  2022-10-12  6:08 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
  0 siblings, 1 reply; 26+ messages in thread
From: Geliang Tang @ 2022-10-12  4:40 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Use last_snd instead of msk->last_snd, then last_snd of struct
mptcp_sock could be removed.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 tools/testing/selftests/bpf/bpf_tcp_helpers.h    | 1 -
 tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c | 6 ++++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
index c7d4a9a69cfc..c8792e6f125a 100644
--- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
@@ -257,7 +257,6 @@ struct mptcp_sched_ops {
 struct mptcp_sock {
 	struct inet_connection_sock	sk;
 
-	struct sock	*last_snd;
 	__u32		token;
 	struct sock	*first;
 	char		ca_name[TCP_CA_NAME_MAX];
diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
index ce4e98f83e43..b7156f6aae8b 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
@@ -5,6 +5,7 @@
 #include "bpf_tcp_helpers.h"
 
 char _license[] SEC("license") = "GPL";
+struct sock *last_snd = NULL;
 
 SEC("struct_ops/mptcp_sched_rr_init")
 void BPF_PROG(mptcp_sched_rr_init, const struct mptcp_sock *msk)
@@ -22,10 +23,10 @@ void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
 	int nr = 0;
 
 	for (int i = 0; i < MPTCP_SUBFLOWS_MAX; i++) {
-		if (!msk->last_snd || !data->contexts[i])
+		if (!last_snd || !data->contexts[i])
 			break;
 
-		if (data->contexts[i]->tcp_sock == msk->last_snd) {
+		if (data->contexts[i]->tcp_sock == last_snd) {
 			if (i + 1 == MPTCP_SUBFLOWS_MAX || !data->contexts[i + 1])
 				break;
 
@@ -35,6 +36,7 @@ void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
 	}
 
 	mptcp_subflow_set_scheduled(data->contexts[nr], true);
+	last_snd = data->contexts[nr]->tcp_sock;
 }
 
 SEC(".struct_ops")
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 26+ messages in thread
* [PATCH mptcp-next] Squash to "selftests/bpf: Add bpf_rr scheduler"
@ 2022-10-09 15:45 Geliang Tang
  2022-10-09 17:24 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
  0 siblings, 1 reply; 26+ messages in thread
From: Geliang Tang @ 2022-10-09 15:45 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Use last_snd instead of msk->last_snd, then last_snd of mptcp_sock could
be removed.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 tools/testing/selftests/bpf/bpf_tcp_helpers.h    | 1 -
 tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c | 7 +++++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
index c7d4a9a69cfc..c8792e6f125a 100644
--- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
@@ -257,7 +257,6 @@ struct mptcp_sched_ops {
 struct mptcp_sock {
 	struct inet_connection_sock	sk;
 
-	struct sock	*last_snd;
 	__u32		token;
 	struct sock	*first;
 	char		ca_name[TCP_CA_NAME_MAX];
diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
index ce4e98f83e43..65d4f7f41bc2 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c
@@ -5,10 +5,12 @@
 #include "bpf_tcp_helpers.h"
 
 char _license[] SEC("license") = "GPL";
+struct sock *last_snd = NULL;
 
 SEC("struct_ops/mptcp_sched_rr_init")
 void BPF_PROG(mptcp_sched_rr_init, const struct mptcp_sock *msk)
 {
+	last_snd = msk->first;
 }
 
 SEC("struct_ops/mptcp_sched_rr_release")
@@ -22,10 +24,10 @@ void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
 	int nr = 0;
 
 	for (int i = 0; i < MPTCP_SUBFLOWS_MAX; i++) {
-		if (!msk->last_snd || !data->contexts[i])
+		if (!last_snd || !data->contexts[i])
 			break;
 
-		if (data->contexts[i]->tcp_sock == msk->last_snd) {
+		if (data->contexts[i]->tcp_sock == last_snd) {
 			if (i + 1 == MPTCP_SUBFLOWS_MAX || !data->contexts[i + 1])
 				break;
 
@@ -35,6 +37,7 @@ void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptcp_sock *msk,
 	}
 
 	mptcp_subflow_set_scheduled(data->contexts[nr], true);
+	last_snd = data->contexts[nr]->tcp_sock;
 }
 
 SEC(".struct_ops")
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2023-05-28 16:37 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-11 12:01 [PATCH mptcp-next v6 00/13] refactor push pending Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 01/13] Squash to "mptcp: add get_subflow wrappers" Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 02/13] mptcp: change 'first' as a parameter Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 03/13] mptcp: refactor push_pending logic Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 04/13] mptcp: drop last_snd of struct mptcp_sock Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 05/13] mptcp: simplify push_pending Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 06/13] mptcp: multi subflows push_pending Geliang Tang
2022-10-11 22:30   ` Mat Martineau
2022-10-12 10:36     ` Geliang Tang
2022-10-18 12:02       ` Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 07/13] mptcp: don't delegate sending repeatedly Geliang Tang
2022-10-11 22:18   ` Mat Martineau
2022-10-11 12:01 ` [PATCH mptcp-next v6 08/13] mptcp: use msk instead of mptcp_sk Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 09/13] mptcp: refactor subflow_push_pending logic Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 10/13] mptcp: simplify subflow_push_pending Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 11/13] mptcp: multi subflows subflow_push_pending Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 12/13] mptcp: multi subflows retrans support Geliang Tang
2022-10-11 12:01 ` [PATCH mptcp-next v6 13/13] Squash to "selftests/bpf: Add bpf_rr scheduler" Geliang Tang
2022-10-11 13:36   ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
  -- strict thread matches above, loose matches on Subject: below --
2023-05-27 12:55 [PATCH mptcp-next 8/8] Squash to "selftests/bpf: Add bpf_rr scheduler" Geliang Tang
2023-05-27 15:28 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
2023-05-28 16:37   ` Matthieu Baerts
2022-11-11  7:48 [PATCH mptcp-next v19 9/9] Squash to "selftests/bpf: Add bpf_rr scheduler" Geliang Tang
2022-11-11  9:53 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
2022-11-16  2:38 ` MPTCP CI
2022-10-14 13:32 [PATCH mptcp-next v8 15/15] Squash to "selftests/bpf: Add bpf_rr scheduler" Geliang Tang
2022-10-14 15:49 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
2022-10-12  4:40 [PATCH mptcp-next v7 12/12] Squash to "selftests/bpf: Add bpf_rr scheduler" Geliang Tang
2022-10-12  6:08 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI
2022-10-09 15:45 [PATCH mptcp-next] Squash to "selftests/bpf: Add bpf_rr scheduler" Geliang Tang
2022-10-09 17:24 ` Squash to "selftests/bpf: Add bpf_rr scheduler": Tests Results MPTCP CI

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox