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,