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.h | 3 ---
tools/testing/selftests/bpf/progs/mptcp_bpf_first.c | 10 ++++++++--
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf.h b/tools/testing/selftests/bpf/progs/mptcp_bpf.h
index 376979a9c4f0..52bc8ac03508 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf.h
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf.h
@@ -60,7 +60,4 @@ extern bool bpf_ipv6_addr_v4mapped(const struct mptcp_addr_info *a) __ksym;
extern void mptcp_subflow_set_scheduled(struct mptcp_subflow_context *subflow,
bool scheduled) __ksym;
-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/testing/selftests/bpf/progs/mptcp_bpf_first.c
index d57399b407a7..f2f9e66455b6 100644
--- a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c
+++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c
@@ -20,11 +20,17 @@ SEC("struct_ops")
int BPF_PROG(bpf_first_get_subflow, 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;
+
+ bpf_for_each(mptcp_subflow, subflow, msk) {
+ mptcp_subflow_set_scheduled(subflow, true);
+ break;
+ }
+
return 0;
}
-SEC(".struct_ops")
+SEC(".struct_ops.link")
struct mptcp_sched_ops first = {
.init = (void *)mptcp_sched_first_init,
.release = (void *)mptcp_sched_first_release,
--
2.45.2
On Tue, 22 Oct 2024, Geliang Tang wrote: > 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.h | 3 --- > tools/testing/selftests/bpf/progs/mptcp_bpf_first.c | 10 ++++++++-- > 2 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf.h b/tools/testing/selftests/bpf/progs/mptcp_bpf.h > index 376979a9c4f0..52bc8ac03508 100644 > --- a/tools/testing/selftests/bpf/progs/mptcp_bpf.h > +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf.h > @@ -60,7 +60,4 @@ extern bool bpf_ipv6_addr_v4mapped(const struct mptcp_addr_info *a) __ksym; > extern void mptcp_subflow_set_scheduled(struct mptcp_subflow_context *subflow, > bool scheduled) __ksym; > Hi Geliang - > -extern struct mptcp_subflow_context * > -bpf_mptcp_subflow_ctx_by_pos(const struct mptcp_sched_data *data, unsigned int pos) __ksym; > - After this is removed, there are no remaining users of bpf_mptcp_subflow_ctx_by_pos(). I suggest removing that function. > #endif > diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c > index d57399b407a7..f2f9e66455b6 100644 > --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c > +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c > @@ -20,11 +20,17 @@ SEC("struct_ops") > int BPF_PROG(bpf_first_get_subflow, 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; > + > + bpf_for_each(mptcp_subflow, subflow, msk) { > + mptcp_subflow_set_scheduled(subflow, true); > + break; > + } > + The iterator makes this more complicated. Use bpf_mptcp_subflow_ctx(msk->first) like bpf_rr_get_subflow()? - Mat > return 0; > } > > -SEC(".struct_ops") > +SEC(".struct_ops.link") > struct mptcp_sched_ops first = { > .init = (void *)mptcp_sched_first_init, > .release = (void *)mptcp_sched_first_release, > -- > 2.45.2 > > >
On Tue, 2024-10-22 at 17:10 -0700, Mat Martineau wrote: > On Tue, 22 Oct 2024, Geliang Tang wrote: > > > 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.h | 3 --- > > tools/testing/selftests/bpf/progs/mptcp_bpf_first.c | 10 ++++++++-- > > 2 files changed, 8 insertions(+), 5 deletions(-) > > > > diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf.h > > b/tools/testing/selftests/bpf/progs/mptcp_bpf.h > > index 376979a9c4f0..52bc8ac03508 100644 > > --- a/tools/testing/selftests/bpf/progs/mptcp_bpf.h > > +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf.h > > @@ -60,7 +60,4 @@ extern bool bpf_ipv6_addr_v4mapped(const struct > > mptcp_addr_info *a) __ksym; > > extern void mptcp_subflow_set_scheduled(struct > > mptcp_subflow_context *subflow, > > bool scheduled) __ksym; > > > > Hi Geliang - > > > -extern struct mptcp_subflow_context * > > -bpf_mptcp_subflow_ctx_by_pos(const struct mptcp_sched_data *data, > > unsigned int pos) __ksym; > > - > > After this is removed, there are no remaining users of > bpf_mptcp_subflow_ctx_by_pos(). I suggest removing that function. Indeed, I added these cleanups patches to v8 as well. Thanks again. -Geliang > > > #endif > > diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c > > b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c > > index d57399b407a7..f2f9e66455b6 100644 > > --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c > > +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c > > @@ -20,11 +20,17 @@ SEC("struct_ops") > > int BPF_PROG(bpf_first_get_subflow, 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; > > + > > + bpf_for_each(mptcp_subflow, subflow, msk) { > > + mptcp_subflow_set_scheduled(subflow, true); > > + break; > > + } > > + > > The iterator makes this more complicated. Use > bpf_mptcp_subflow_ctx(msk->first) like bpf_rr_get_subflow()? > > - Mat > > > return 0; > > } > > > > -SEC(".struct_ops") > > +SEC(".struct_ops.link") > > struct mptcp_sched_ops first = { > > .init = (void *)mptcp_sched_first_init, > > .release = (void *)mptcp_sched_first_release, > > -- > > 2.45.2 > > > > > >
© 2016 - 2025 Red Hat, Inc.