* [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* Re: Squash to "selftests/bpf: Add bpf_burst scheduler": Tests Results
2023-11-22 3:42 [PATCH mptcp-next] Squash to "selftests/bpf: Add bpf_burst scheduler" Geliang Tang
@ 2023-11-22 4:49 ` MPTCP CI
2023-11-27 17:56 ` [PATCH mptcp-next] Squash to "selftests/bpf: Add bpf_burst scheduler" Matthieu Baerts
1 sibling, 0 replies; 6+ messages in thread
From: MPTCP CI @ 2023-11-22 4:49 UTC (permalink / raw)
To: Geliang Tang; +Cc: mptcp
Hi Geliang,
Thank you for your modifications, that's great!
Our CI did some validations and here is its report:
- KVM Validation: normal (except selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/4522476651151360
- Summary: https://api.cirrus-ci.com/v1/artifact/task/4522476651151360/summary/summary.txt
- KVM Validation: debug (only selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/6211326511415296
- Summary: https://api.cirrus-ci.com/v1/artifact/task/6211326511415296/summary/summary.txt
- KVM Validation: normal (only selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/5648376557993984
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5648376557993984/summary/summary.txt
- KVM Validation: debug (except selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/5085426604572672
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5085426604572672/summary/summary.txt
Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/9712119a0a4b
If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:
$ cd [kernel source code]
$ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
--pull always mptcp/mptcp-upstream-virtme-docker:latest \
auto-debug
For more details:
https://github.com/multipath-tcp/mptcp-upstream-virtme-docker
Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)
Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (Tessares)
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH mptcp-next] Squash to "selftests/bpf: Add bpf_burst scheduler"
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 ` Matthieu Baerts
1 sibling, 0 replies; 6+ messages in thread
From: Matthieu Baerts @ 2023-11-27 17:56 UTC (permalink / raw)
To: Geliang Tang, mptcp; +Cc: kernel test robot
Hi Geliang,
On 22/11/2023 04:42, Geliang Tang wrote:
> 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....
Thank you for the patch, now in our tree:
New patches for t/upstream:
- bd37dad396df: "squashed" in "selftests/bpf: Add bpf_burst scheduler"
- Results: d4787f01696d..1ee636354037 (export)
Tests are now in progress:
https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20231127T175348
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [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