Message ID | 20250411-net-next-mptcp-sched-mib-sft-misc-v1-2-85ac8c6654c3@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mptcp: various small and unrelated improvements | expand |
Hi Matt, On Fri, 2025-04-11 at 13:04 +0200, Matthieu Baerts (NGI0) wrote: > From: Geliang Tang <geliang@kernel.org> Please update my email as "Geliang Tang <tanggeliang@kylinos.cn>" here and in patch 7, otherwise, CI will complain that the email address after "From: " is different from that after "Signed-off-by: ". Thanks, -Geliang > > A new interface .validate has been added in struct bpf_struct_ops > recently. This patch prepares a future struct_ops support by > implementing it as a new helper mptcp_validate_scheduler() for struct > mptcp_sched_ops. > > In this helper, check whether the required ops "get_subflow" of > struct > mptcp_sched_ops has been implemented. > > Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> > Reviewed-by: Mat Martineau <martineau@kernel.org> > Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> > --- > net/mptcp/protocol.h | 1 + > net/mptcp/sched.c | 17 +++++++++++++++-- > 2 files changed, 16 insertions(+), 2 deletions(-) > > diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h > index > d409586b5977f93bff14fffd83b1d3020d57353b..7aa38d74fef6b5f00d97a114d74 > b711014d0a52d 100644 > --- a/net/mptcp/protocol.h > +++ b/net/mptcp/protocol.h > @@ -744,6 +744,7 @@ void mptcp_info2sockaddr(const struct > mptcp_addr_info *info, > struct sockaddr_storage *addr, > unsigned short family); > struct mptcp_sched_ops *mptcp_sched_find(const char *name); > +int mptcp_validate_scheduler(struct mptcp_sched_ops *sched); > int mptcp_register_scheduler(struct mptcp_sched_ops *sched); > void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); > void mptcp_sched_init(void); > diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c > index > f09f7eb1d63f86b9899c72b5c2fd36c8445898a8..1e59072d478c9b52c7f7b60431b > 589f6ca3abe65 100644 > --- a/net/mptcp/sched.c > +++ b/net/mptcp/sched.c > @@ -82,10 +82,23 @@ void mptcp_get_available_schedulers(char *buf, > size_t maxlen) > rcu_read_unlock(); > } > > +int mptcp_validate_scheduler(struct mptcp_sched_ops *sched) > +{ > + if (!sched->get_send) { > + pr_err("%s does not implement required ops\n", > sched->name); > + return -EINVAL; > + } > + > + return 0; > +} > + > int mptcp_register_scheduler(struct mptcp_sched_ops *sched) > { > - if (!sched->get_send) > - return -EINVAL; > + int ret; > + > + ret = mptcp_validate_scheduler(sched); > + if (ret) > + return ret; > > spin_lock(&mptcp_sched_list_lock); > if (mptcp_sched_find(sched->name)) { >
Hi Geliang, On 11/04/2025 15:57, Geliang Tang wrote: > Hi Matt, > > On Fri, 2025-04-11 at 13:04 +0200, Matthieu Baerts (NGI0) wrote: >> From: Geliang Tang <geliang@kernel.org> > > Please update my email as "Geliang Tang <tanggeliang@kylinos.cn>" here > and in patch 7, otherwise, CI will complain that the email address > after "From: " is different from that after "Signed-off-by: ". Arf, sorry, I sent these patches from a new dev environment, and I forgot to apply fixes for b4 [1][2], not in a stable version yet. I will re-send these patches later on with these fixes. [1] https://git.kernel.org/pub/scm/utils/b4/b4.git/commit/?id=8438e306d9 [2] https://git.kernel.org/pub/scm/utils/b4/b4.git/commit/?id=42535902a4 Cheers, Matt
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index d409586b5977f93bff14fffd83b1d3020d57353b..7aa38d74fef6b5f00d97a114d74b711014d0a52d 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -744,6 +744,7 @@ void mptcp_info2sockaddr(const struct mptcp_addr_info *info, struct sockaddr_storage *addr, unsigned short family); struct mptcp_sched_ops *mptcp_sched_find(const char *name); +int mptcp_validate_scheduler(struct mptcp_sched_ops *sched); int mptcp_register_scheduler(struct mptcp_sched_ops *sched); void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); void mptcp_sched_init(void); diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index f09f7eb1d63f86b9899c72b5c2fd36c8445898a8..1e59072d478c9b52c7f7b60431b589f6ca3abe65 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -82,10 +82,23 @@ void mptcp_get_available_schedulers(char *buf, size_t maxlen) rcu_read_unlock(); } +int mptcp_validate_scheduler(struct mptcp_sched_ops *sched) +{ + if (!sched->get_send) { + pr_err("%s does not implement required ops\n", sched->name); + return -EINVAL; + } + + return 0; +} + int mptcp_register_scheduler(struct mptcp_sched_ops *sched) { - if (!sched->get_send) - return -EINVAL; + int ret; + + ret = mptcp_validate_scheduler(sched); + if (ret) + return ret; spin_lock(&mptcp_sched_list_lock); if (mptcp_sched_find(sched->name)) {