All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthieu Baerts <matttbe@kernel.org>
To: Geliang Tang <geliang@kernel.org>, mptcp@lists.linux.dev
Cc: Geliang Tang <tanggeliang@kylinos.cn>
Subject: Re: [PATCH mptcp-next v8 06/12] mptcp: pm: in-kernel: register mptcp_pm_kernel
Date: Wed, 5 Mar 2025 10:11:18 +0100	[thread overview]
Message-ID: <08136d71-ae40-4044-a9de-6b00e78af258@kernel.org> (raw)
In-Reply-To: <e4ed726a27e8b7564ca33833dcbe735fc158f157.camel@kernel.org>

Hi Geliang,

On 05/03/2025 02:35, Geliang Tang wrote:
> Hi Matt,
> 
> On Tue, 2025-03-04 at 19:40 +0800, Geliang Tang wrote:
>> From: Geliang Tang <tanggeliang@kylinos.cn>
>>
>> This patch defines the original in-kernel netlink path manager as a
>> new struct mptcp_pm_ops named "mptcp_pm_kernel", and register it in
>> mptcp_pm_kernel_register().
>>
>> This mptcp_pm_ops will be skipped in mptcp_pm_unregister().
>>
>> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
>> ---
>>  net/mptcp/pm.c        |  4 ++++
>>  net/mptcp/pm_kernel.c | 26 ++++++++++++++++++++++++++
>>  net/mptcp/protocol.h  |  3 +++
>>  3 files changed, 33 insertions(+)
>>
>> diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
>> index a2b210873b23..28ea8bdaa8b0 100644
>> --- a/net/mptcp/pm.c
>> +++ b/net/mptcp/pm.c
>> @@ -1076,6 +1076,10 @@ int mptcp_pm_register(struct mptcp_pm_ops *pm)
>>  
>>  void mptcp_pm_unregister(struct mptcp_pm_ops *pm)
>>  {
>> +	/* skip unregistering the default path manager */
>> +	if (pm == &mptcp_pm_kernel)
>> +		return;
>> +
>>  	spin_lock(&mptcp_pm_list_lock);
>>  	list_del_rcu(&pm->list);
>>  	spin_unlock(&mptcp_pm_list_lock);
>> diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c
>> index 806a9b5b3c07..e6a1aef738a8 100644
>> --- a/net/mptcp/pm_kernel.c
>> +++ b/net/mptcp/pm_kernel.c
>> @@ -1398,8 +1398,34 @@ static struct pernet_operations
>> mptcp_pm_pernet_ops = {
>>  	.size = sizeof(struct pm_nl_pernet),
>>  };
>>  
>> +static void mptcp_pm_nl_initialize(struct mptcp_sock *msk)
>> +{
>> +	bool subflows_allowed = !!mptcp_pm_get_subflows_max(msk);
>> +	struct mptcp_pm_data *pm = &msk->pm;
>> +
>> +	/* pm->work_pending must be only be set to 'true' when
>> +	 * pm is the default path manager
>> +	 */
>> +	WRITE_ONCE(pm->work_pending,
>> +		   (!!mptcp_pm_get_local_addr_max(msk) &&
>> +		    subflows_allowed) ||
>> +		   !!mptcp_pm_get_add_addr_signal_max(msk));
>> +	WRITE_ONCE(pm->accept_addr,
>> +		   !!mptcp_pm_get_add_addr_accept_max(msk) &&
>> +		   subflows_allowed);
>> +	WRITE_ONCE(pm->accept_subflow, subflows_allowed);
>> +}
>> +
>> +struct mptcp_pm_ops mptcp_pm_kernel = {
>> +	.init			= mptcp_pm_nl_initialize,
> 
> A better name would be mptcp_pm_nl_init, but this is already used in
> pm_netlink.c. I would like to rename mptcp_pm_nl_init in pm_netlink.c
> to mptcp_pm_genl_init, do you think this is a good idea?
> 
> If so, is it better to squash this renaming into "mptcp: pm: split
> netlink and in-kernel init" or make it a separate patch?

What about calling the one here mptcp_pm_kernel_init()?

Cheers,
Matt
-- 
Sponsored by the NGI0 Core fund.


  reply	other threads:[~2025-03-05  9:11 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-04 11:40 [PATCH mptcp-next v8 00/12] BPF path manager, part 5 Geliang Tang
2025-03-04 11:40 ` [PATCH mptcp-next v8 01/12] mptcp: pm: define struct mptcp_pm_ops Geliang Tang
2025-03-05 11:42   ` Matthieu Baerts
2025-03-04 11:40 ` [PATCH mptcp-next v8 02/12] mptcp: sysctl: new sysctl to set path manager by name Geliang Tang
2025-03-04 11:40 ` [PATCH mptcp-next v8 03/12] mptcp: sysctl: map pm_type to path_manager Geliang Tang
2025-03-05 11:45   ` Matthieu Baerts
2025-03-04 11:40 ` [PATCH mptcp-next v8 04/12] mptcp: sysctl: map path_manager to pm_type Geliang Tang
2025-03-05 11:48   ` Matthieu Baerts
2025-03-04 11:40 ` [PATCH mptcp-next v8 05/12] mptcp: sysctl: add available_path_managers Geliang Tang
2025-03-04 11:40 ` [PATCH mptcp-next v8 06/12] mptcp: pm: in-kernel: register mptcp_pm_kernel Geliang Tang
2025-03-05  1:35   ` Geliang Tang
2025-03-05  9:11     ` Matthieu Baerts [this message]
2025-03-05  9:14       ` Geliang Tang
2025-03-05  9:22         ` Matthieu Baerts
2025-03-05  9:29           ` Geliang Tang
2025-03-05 11:51   ` Matthieu Baerts
2025-03-06 11:09     ` Geliang Tang
2025-03-06 11:27       ` Matthieu Baerts
2025-03-04 11:40 ` [PATCH mptcp-next v8 07/12] mptcp: pm: userspace: register mptcp_pm_userspace Geliang Tang
2025-03-05 11:53   ` Matthieu Baerts
2025-03-04 11:40 ` [PATCH mptcp-next v8 08/12] mptcp: pm: initialize and release mptcp_pm_ops Geliang Tang
2025-03-05 11:57   ` Matthieu Baerts
2025-03-04 11:40 ` [PATCH mptcp-next v8 09/12] mptcp: pm: add get_local_id() interface Geliang Tang
2025-03-04 11:40 ` [PATCH mptcp-next v8 10/12] mptcp: pm: add get_priority() interface Geliang Tang
2025-03-04 11:40 ` [PATCH mptcp-next v8 11/12] selftests: mptcp: add pm_type mapping tests Geliang Tang
2025-03-05 11:58   ` Matthieu Baerts
2025-03-04 11:40 ` [PATCH mptcp-next v8 12/12] selftests: mptcp: add path_manager sysctl test Geliang Tang
2025-03-05 11:59   ` Matthieu Baerts
2025-03-05 11:41 ` [PATCH mptcp-next v8 00/12] BPF path manager, part 5 Matthieu Baerts

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=08136d71-ae40-4044-a9de-6b00e78af258@kernel.org \
    --to=matttbe@kernel.org \
    --cc=geliang@kernel.org \
    --cc=mptcp@lists.linux.dev \
    --cc=tanggeliang@kylinos.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.