MPTCP Linux Development
 help / color / mirror / Atom feed
* [PATCH mptcp-next] Squash to "selftests/bpf: Add bpf_burst scheduler"
@ 2023-11-22  3:42 Geliang Tang
  2023-11-22  4:49 ` Squash to "selftests/bpf: Add bpf_burst scheduler": Tests Results MPTCP CI
  2023-11-27 17:56 ` [PATCH mptcp-next] Squash to "selftests/bpf: Add bpf_burst scheduler" Matthieu Baerts
  0 siblings, 2 replies; 6+ messages in thread
From: Geliang Tang @ 2023-11-22  3:42 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang, kernel test robot

Fix the bpf selftests build error:

progs/mptcp_bpf_burst.c:37:18: error: no member named 'write_seq' in 'struct tcp_sock'
        return tp ? tp->write_seq == tp->snd_nxt : true;
                    ~~  ^
1 error generated.
make: *** [Makefile:614: tools/testing/selftests/bpf/mptcp_bpf_burst.bpf.o] Error 1
make: *** Waiting for unfinished jobs....

Reported-by: kernel test robot <yujie.liu@intel.com>
Closes: https://lore.kernel.org/r/202311180438.KHYloYBe-lkp@intel.com/
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
index 6b43845f1234..2c71226b3631 100644
--- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
@@ -87,6 +87,7 @@ struct tcp_sock {
 	__u32	lsndtime;
 	__u32	prior_cwnd;
 	__u64	tcp_mstamp;	/* most recent packet received/sent */
+	__u32	write_seq;	/* Tail(+1) of data held in tcp send buffer */
 	bool	is_mptcp;
 } __attribute__((preserve_access_index));
 
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [PATCH mptcp-next 9/9] Squash to "selftests/bpf: Add bpf_burst scheduler"
@ 2023-08-15  6:29 Geliang Tang
  2023-08-15  7:44 ` Squash to "selftests/bpf: Add bpf_burst scheduler": Tests Results MPTCP CI
  0 siblings, 1 reply; 6+ messages in thread
From: Geliang Tang @ 2023-08-15  6:29 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Drop data_init interface.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 .../testing/selftests/bpf/progs/mptcp_bpf_burst.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c
index 8cf2ab32c159..2962067568e7 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c
@@ -77,14 +77,8 @@ void BPF_PROG(mptcp_sched_burst_release, struct mptcp_sock *msk)
 	bpf_sk_storage_delete(&mptcp_burst_map, msk);
 }
 
-void BPF_STRUCT_OPS(bpf_burst_data_init, struct mptcp_sock *msk,
-		    struct mptcp_sched_data *data)
-{
-	mptcp_sched_data_set_contexts(msk, data);
-}
-
 static int bpf_burst_get_send(struct mptcp_sock *msk,
-			      const struct mptcp_sched_data *data)
+			      struct mptcp_sched_data *data)
 {
 	struct subflow_send_info send_info[SSK_MODE_MAX];
 	struct mptcp_subflow_context *subflow;
@@ -157,7 +151,7 @@ static int bpf_burst_get_send(struct mptcp_sock *msk,
 }
 
 static int bpf_burst_get_retrans(struct mptcp_sock *msk,
-				 const struct mptcp_sched_data *data)
+				 struct mptcp_sched_data *data)
 {
 	int backup = MPTCP_SUBFLOWS_MAX, pick = MPTCP_SUBFLOWS_MAX, subflow_id;
 	struct mptcp_subflow_context *subflow;
@@ -205,8 +199,10 @@ static int bpf_burst_get_retrans(struct mptcp_sock *msk,
 }
 
 int BPF_STRUCT_OPS(bpf_burst_get_subflow, struct mptcp_sock *msk,
-		   const struct mptcp_sched_data *data)
+		   struct mptcp_sched_data *data)
 {
+	mptcp_sched_data_set_contexts(msk, data);
+
 	if (data->reinject)
 		return bpf_burst_get_retrans(msk, data);
 	return bpf_burst_get_send(msk, data);
@@ -216,7 +212,6 @@ SEC(".struct_ops")
 struct mptcp_sched_ops burst = {
 	.init		= (void *)mptcp_sched_burst_init,
 	.release	= (void *)mptcp_sched_burst_release,
-	.data_init	= (void *)bpf_burst_data_init,
 	.get_subflow	= (void *)bpf_burst_get_subflow,
 	.name		= "bpf_burst",
 };
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [PATCH mptcp-next v3 6/6] Squash to "selftests/bpf: Add bpf_burst scheduler"
@ 2023-08-03  4:27 Geliang Tang
  2023-08-03  5:31 ` Squash to "selftests/bpf: Add bpf_burst scheduler": Tests Results MPTCP CI
  0 siblings, 1 reply; 6+ messages in thread
From: Geliang Tang @ 2023-08-03  4:27 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Use __always_inline instead of inline.

Define tcp_rtx_and_write_queues_empty() and sk_stream_memory_free() in
BPF context.

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

diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
index ff4dd13fd8c6..776c54948a4a 100644
--- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
@@ -36,6 +36,7 @@ enum sk_pacing {
 struct sock {
 	struct sock_common	__sk_common;
 #define sk_state		__sk_common.skc_state
+	int			sk_sndbuf;
 	int			sk_wmem_queued;
 	unsigned long		sk_pacing_rate;
 	__u32			sk_pacing_status; /* see enum sk_pacing */
diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c
index 7af21d03277d..8cf2ab32c159 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c
@@ -25,22 +25,47 @@ struct subflow_send_info {
 	__u64 linger_time;
 };
 
-static inline __u64 div_u64(__u64 dividend, __u32 divisor)
-{
-	return dividend / divisor;
-}
-
 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 bpf_mptcp_subflow_memory_free(const struct sock *sk) __ksym;
-extern bool bpf_mptcp_subflow_queues_empty(const struct sock *sk) __ksym;
+extern bool tcp_stream_memory_free(const struct sock *sk, int wake) __ksym;
+extern bool bpf_mptcp_subflow_queues_empty(struct sock *sk) __ksym;
 extern void mptcp_pm_subflow_chk_stale(const struct mptcp_sock *msk, struct sock *ssk) __ksym;
 
 #define SSK_MODE_ACTIVE	0
 #define SSK_MODE_BACKUP	1
 #define SSK_MODE_MAX	2
 
+static __always_inline __u64 div_u64(__u64 dividend, __u32 divisor)
+{
+	return dividend / divisor;
+}
+
+static __always_inline bool tcp_write_queue_empty(struct sock *sk)
+{
+	const struct tcp_sock *tp = bpf_skc_to_tcp_sock(sk);
+
+	return tp ? tp->write_seq == tp->snd_nxt : true;
+}
+
+static __always_inline bool tcp_rtx_and_write_queues_empty(struct sock *sk)
+{
+	return bpf_mptcp_subflow_queues_empty(sk) && tcp_write_queue_empty(sk);
+}
+
+static __always_inline bool __sk_stream_memory_free(const struct sock *sk, int wake)
+{
+	if (sk->sk_wmem_queued >= 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/mptcp_sched_burst_init")
 void BPF_PROG(mptcp_sched_burst_init, struct mptcp_sock *msk)
 {
@@ -110,7 +135,7 @@ static int bpf_burst_get_send(struct mptcp_sock *msk,
 	if (!subflow)
 		return -1;
 	ssk = mptcp_subflow_tcp_sock(subflow);
-	if (!ssk || !bpf_mptcp_subflow_memory_free(ssk))
+	if (!ssk || !sk_stream_memory_free(ssk))
 		return -1;
 
 	burst = min(MPTCP_SEND_BURST_SIZE, mptcp_wnd_end(msk) - msk->snd_nxt);
@@ -149,7 +174,7 @@ static int bpf_burst_get_retrans(struct mptcp_sock *msk,
 
 		ssk = mptcp_subflow_tcp_sock(subflow);
 		/* still data outstanding at TCP level? skip this */
-		if (!bpf_mptcp_subflow_queues_empty(ssk)) {
+		if (!tcp_rtx_and_write_queues_empty(ssk)) {
 			mptcp_pm_subflow_chk_stale(msk, ssk);
 			min_stale_count = min(min_stale_count, subflow->stale_count);
 			continue;
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [PATCH mptcp-next v2 6/6] Squash to "selftests/bpf: Add bpf_burst scheduler"
@ 2023-08-02 11:55 Geliang Tang
  2023-08-02 13:03 ` Squash to "selftests/bpf: Add bpf_burst scheduler": Tests Results MPTCP CI
  0 siblings, 1 reply; 6+ messages in thread
From: Geliang Tang @ 2023-08-02 11:55 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Use __always_inline instead of inline.

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

diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c
index 7af21d03277d..6703c7e6810a 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c
@@ -25,7 +25,7 @@ struct subflow_send_info {
 	__u64 linger_time;
 };
 
-static inline __u64 div_u64(__u64 dividend, __u32 divisor)
+static __always_inline __u64 div_u64(__u64 dividend, __u32 divisor)
 {
 	return dividend / divisor;
 }
-- 
2.35.3


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

end of thread, other threads:[~2023-11-27 17:56 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-22  3:42 [PATCH mptcp-next] Squash to "selftests/bpf: Add bpf_burst scheduler" Geliang Tang
2023-11-22  4:49 ` Squash to "selftests/bpf: Add bpf_burst scheduler": Tests Results MPTCP CI
2023-11-27 17:56 ` [PATCH mptcp-next] Squash to "selftests/bpf: Add bpf_burst scheduler" Matthieu Baerts
  -- strict thread matches above, loose matches on Subject: below --
2023-08-15  6:29 [PATCH mptcp-next 9/9] " Geliang Tang
2023-08-15  7:44 ` Squash to "selftests/bpf: Add bpf_burst scheduler": Tests Results MPTCP CI
2023-08-03  4:27 [PATCH mptcp-next v3 6/6] Squash to "selftests/bpf: Add bpf_burst scheduler" Geliang Tang
2023-08-03  5:31 ` Squash to "selftests/bpf: Add bpf_burst scheduler": Tests Results MPTCP CI
2023-08-02 11:55 [PATCH mptcp-next v2 6/6] Squash to "selftests/bpf: Add bpf_burst scheduler" Geliang Tang
2023-08-02 13:03 ` Squash to "selftests/bpf: Add bpf_burst 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