Re: [PATCH net-next 2/3] ppp: unify two channel structs
From: Paolo Abeni
Date: Thu May 07 2026 - 03:32:31 EST
On 5/7/26 7:53 AM, Qingfang Deng wrote:
> On 2026/5/5 19:16, Paolo Abeni wrote:
>> On 4/30/26 11:05 AM, Qingfang Deng wrote:
>>> Historically, PPP maintained two separate structures for a channel:
>>> 'struct channel' was internal to ppp_generic.c, while 'struct ppp_channel'
>>> was the public interface that drivers were required to embed. This
>>> duplication was redundant and forced drivers to manage the lifecycle of
>>> the public structure.
>>>
>>> Unify these two structures into a single 'struct ppp_channel', which is
>>> now internal to ppp_generic.c. Drivers now use a 'ppp_channel_conf'
>>> structure to specify registration parameters and receive an opaque
>>> pointer to the allocated channel.
>>>
>>> Key changes:
>>> - ppp_register_channel() and ppp_register_net_channel() now return
>>> a 'struct ppp_channel *' instead of taking a pointer to a driver-
>>> embedded structure.
>>> - 'struct ppp_channel_ops' methods now take the driver's 'private'
>>> pointer directly as their first argument, simplifying driver logic.
>>> - ppp_unregister_channel() now takes the opaque pointer.
>>> - Multilink-specific fields are unified and handled via the new
>>> configuration structure.
>>>
>>> This cleanup simplifies the driver interface and makes the channel
>>> lifecycle management more robust by centralizing allocation in the PPP
>>> generic layer.
>>>
>>> Assisted-by: Gemini:gemini-3-flash
>>> Signed-off-by: Qingfang Deng <qingfang.deng@xxxxxxxxx>
>>> ---
>>> drivers/net/ppp/ppp_async.c | 51 +++++-----
>>> drivers/net/ppp/ppp_generic.c | 161 +++++++++++++++----------------
>>> drivers/net/ppp/ppp_synctty.c | 51 +++++-----
>>> drivers/net/ppp/pppoe.c | 34 ++++---
>>> drivers/net/ppp/pppox.c | 4 +-
>>> drivers/net/ppp/pptp.c | 40 ++++----
>>> drivers/tty/ipwireless/network.c | 30 +++---
>>> include/linux/if_pppox.h | 2 +-
>>> include/linux/ppp_channel.h | 49 ++++++----
>>> net/atm/pppoatm.c | 61 ++++++------
>>> net/l2tp/l2tp_ppp.c | 34 ++++---
>>> 11 files changed, 271 insertions(+), 246 deletions(-)
>> This patch is IMHO a bit too big and should be split. Also this kind of
>> refactor looks very invasive and potentially regression prone. I think
>> it should include a signficant self-test coverage increase.
> This is indeed too big. But how do I split it without breaking the build?
This is indeed a good question, but I'm really unable to give you a good
answer without allocating to this topic much more time than I have
available.
I think that the (indeed smallish) mtu changes could easily go in a
separate patch.
You could try introducing the struct and/or variables renaming
separately, with no actual functional change, i.e.
- one patch to rename ppp_channel -> ppp_channel_conf
- one patch to rename channel -> ppp_channel
(possibly adjust accordingly the variables name if can done mechanically)
no idea if the end result would be more palatable, but possibly worth a try.
/P