diff mbox series

[mptcp-next,v4,6/9] mptcp: pm: add rm_addr_received() interface

Message ID 73e63af9c3dc74deb1b6aa79a9b7ed57f331ba33.1742804266.git.tanggeliang@kylinos.cn (mailing list archive)
State Superseded
Delegated to: Matthieu Baerts
Headers show
Series BPF path manager, part 6 | expand

Checks

Context Check Description
matttbe/checkpatch success total: 0 errors, 0 warnings, 0 checks, 35 lines checked
matttbe/shellcheck success MPTCP selftests files have not been modified
matttbe/build success Build and static analysis OK
matttbe/KVM_Validation__normal success Success! ✅
matttbe/KVM_Validation__debug success Success! ✅
matttbe/KVM_Validation__btf-normal__only_bpftest_all_ success Success! ✅
matttbe/KVM_Validation__btf-debug__only_bpftest_all_ success Success! ✅

Commit Message

Geliang Tang March 24, 2025, 8:19 a.m. UTC
From: Geliang Tang <tanggeliang@kylinos.cn>

This patch adds an optional .rm_addr_received interface for struct
mptcp_pm_ops and invokes it in mptcp_pm_rm_addr_or_subflow().

This interface is only implemented in the in-kernel PM as a wrapper
of mptcp_pm_nl_rm_addr().

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 include/net/mptcp.h   | 1 +
 net/mptcp/pm.c        | 4 ++--
 net/mptcp/pm_kernel.c | 6 ++++++
 3 files changed, 9 insertions(+), 2 deletions(-)

Comments

Geliang Tang March 24, 2025, 10:16 a.m. UTC | #1
On Mon, 2025-03-24 at 16:19 +0800, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
> 
> This patch adds an optional .rm_addr_received interface for struct
> mptcp_pm_ops and invokes it in mptcp_pm_rm_addr_or_subflow().
> 
> This interface is only implemented in the in-kernel PM as a wrapper
> of mptcp_pm_nl_rm_addr().
> 
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---
>  include/net/mptcp.h   | 1 +
>  net/mptcp/pm.c        | 4 ++--
>  net/mptcp/pm_kernel.c | 6 ++++++
>  3 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/include/net/mptcp.h b/include/net/mptcp.h
> index 5118d11d2ee9..3f06fbd2a908 100644
> --- a/include/net/mptcp.h
> +++ b/include/net/mptcp.h
> @@ -128,6 +128,7 @@ struct mptcp_pm_ops {
>  	void (*established)(struct mptcp_sock *msk);
>  	void (*subflow_established)(struct mptcp_sock *msk);
>  	void (*add_addr_received)(struct mptcp_sock *msk);
> +	void (*rm_addr_received)(struct mptcp_sock *msk, u8 id);
>  
>  	char			name[MPTCP_PM_NAME_MAX];
>  	struct module		*owner;
> diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
> index 71589cd5dee7..bf3c19defe98 100644
> --- a/net/mptcp/pm.c
> +++ b/net/mptcp/pm.c
> @@ -703,8 +703,8 @@ static void mptcp_pm_rm_addr_or_subflow(struct
> mptcp_sock *msk,
>  
>  		if (rm_type == MPTCP_MIB_RMADDR) {
>  			__MPTCP_INC_STATS(sock_net(sk), rm_type);
> -			if (removed && mptcp_pm_is_kernel(msk))
> -				mptcp_pm_nl_rm_addr(msk, rm_id);
> +			if (removed && msk->pm.ops-
> >rm_addr_received)
> +				msk->pm.ops->rm_addr_received(msk,
> rm_id);
>  		}
>  	}
>  }
> diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c
> index 4f4791620072..1a71676bdf43 100644
> --- a/net/mptcp/pm_kernel.c
> +++ b/net/mptcp/pm_kernel.c
> @@ -1391,6 +1391,11 @@ static void
> mptcp_pm_kernel_add_addr_received(struct mptcp_sock *msk)
>  	mptcp_pm_nl_add_addr_received(msk);
>  }
>  
> +static void mptcp_pm_kernel_rm_addr_received(struct mptcp_sock *msk,
> u8 id)
> +{
> +	mptcp_pm_nl_rm_addr(msk, id);

Now we can make mptcp_pm_nl_rm_addr static.
Will update this in v5.

Thanks,
-Geliang

> +}
> +
>  static void mptcp_pm_kernel_init(struct mptcp_sock *msk)
>  {
>  	bool subflows_allowed = !!mptcp_pm_get_subflows_max(msk);
> @@ -1417,6 +1422,7 @@ struct mptcp_pm_ops mptcp_pm_kernel = {
>  	.established		= mptcp_pm_kernel_established,
>  	.subflow_established	=
> mptcp_pm_kernel_subflow_established,
>  	.add_addr_received	= mptcp_pm_kernel_add_addr_received,
> +	.rm_addr_received	= mptcp_pm_kernel_rm_addr_received,
>  	.init			= mptcp_pm_kernel_init,
>  	.name			= "kernel",
>  	.owner			= THIS_MODULE,
Matthieu Baerts March 24, 2025, 11:02 a.m. UTC | #2
Hi Geliang,

On 24/03/2025 09:19, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
> 
> This patch adds an optional .rm_addr_received interface for struct
> mptcp_pm_ops and invokes it in mptcp_pm_rm_addr_or_subflow().
> 
> This interface is only implemented in the in-kernel PM as a wrapper
> of mptcp_pm_nl_rm_addr().

(...)

> diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c
> index 4f4791620072..1a71676bdf43 100644
> --- a/net/mptcp/pm_kernel.c
> +++ b/net/mptcp/pm_kernel.c
> @@ -1391,6 +1391,11 @@ static void mptcp_pm_kernel_add_addr_received(struct mptcp_sock *msk)
>  	mptcp_pm_nl_add_addr_received(msk);
>  }
>  
> +static void mptcp_pm_kernel_rm_addr_received(struct mptcp_sock *msk, u8 id)
> +{
> +	mptcp_pm_nl_rm_addr(msk, id);

Same here: no need to add a new static function only calling another
static function (mptcp_pm_nl_rm_addr() should now be static) with the
same arguments.

Simply rename mptcp_pm_nl_rm_addr() to mptcp_pm_kernel_rm_addr_received().

Cheers,
Matt
diff mbox series

Patch

diff --git a/include/net/mptcp.h b/include/net/mptcp.h
index 5118d11d2ee9..3f06fbd2a908 100644
--- a/include/net/mptcp.h
+++ b/include/net/mptcp.h
@@ -128,6 +128,7 @@  struct mptcp_pm_ops {
 	void (*established)(struct mptcp_sock *msk);
 	void (*subflow_established)(struct mptcp_sock *msk);
 	void (*add_addr_received)(struct mptcp_sock *msk);
+	void (*rm_addr_received)(struct mptcp_sock *msk, u8 id);
 
 	char			name[MPTCP_PM_NAME_MAX];
 	struct module		*owner;
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 71589cd5dee7..bf3c19defe98 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -703,8 +703,8 @@  static void mptcp_pm_rm_addr_or_subflow(struct mptcp_sock *msk,
 
 		if (rm_type == MPTCP_MIB_RMADDR) {
 			__MPTCP_INC_STATS(sock_net(sk), rm_type);
-			if (removed && mptcp_pm_is_kernel(msk))
-				mptcp_pm_nl_rm_addr(msk, rm_id);
+			if (removed && msk->pm.ops->rm_addr_received)
+				msk->pm.ops->rm_addr_received(msk, rm_id);
 		}
 	}
 }
diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c
index 4f4791620072..1a71676bdf43 100644
--- a/net/mptcp/pm_kernel.c
+++ b/net/mptcp/pm_kernel.c
@@ -1391,6 +1391,11 @@  static void mptcp_pm_kernel_add_addr_received(struct mptcp_sock *msk)
 	mptcp_pm_nl_add_addr_received(msk);
 }
 
+static void mptcp_pm_kernel_rm_addr_received(struct mptcp_sock *msk, u8 id)
+{
+	mptcp_pm_nl_rm_addr(msk, id);
+}
+
 static void mptcp_pm_kernel_init(struct mptcp_sock *msk)
 {
 	bool subflows_allowed = !!mptcp_pm_get_subflows_max(msk);
@@ -1417,6 +1422,7 @@  struct mptcp_pm_ops mptcp_pm_kernel = {
 	.established		= mptcp_pm_kernel_established,
 	.subflow_established	= mptcp_pm_kernel_subflow_established,
 	.add_addr_received	= mptcp_pm_kernel_add_addr_received,
+	.rm_addr_received	= mptcp_pm_kernel_rm_addr_received,
 	.init			= mptcp_pm_kernel_init,
 	.name			= "kernel",
 	.owner			= THIS_MODULE,