diff mbox series

[net-next,2/8] mptcp: sched: split validation part

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

Commit Message

Matthieu Baerts April 11, 2025, 11:04 a.m. UTC
From: Geliang Tang <geliang@kernel.org>

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(-)

Comments

Geliang Tang April 11, 2025, 1:57 p.m. UTC | #1
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)) {
>
Matthieu Baerts April 11, 2025, 2:14 p.m. UTC | #2
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 mbox series

Patch

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)) {