[PATCH net-next v8 0/5] netconsole: support automatic target recovery

Andre Carvalho posted 5 patches 2 days, 23 hours ago
drivers/net/netconsole.c                           | 171 +++++++++++++++++----
tools/testing/selftests/drivers/net/Makefile       |   1 +
.../selftests/drivers/net/lib/sh/lib_netcons.sh    |  35 ++++-
.../selftests/drivers/net/netcons_resume.sh        |  97 ++++++++++++
4 files changed, 270 insertions(+), 34 deletions(-)
[PATCH net-next v8 0/5] netconsole: support automatic target recovery
Posted by Andre Carvalho 2 days, 23 hours ago
This patchset introduces target resume capability to netconsole allowing
it to recover targets when underlying low-level interface comes back
online.

The patchset starts by refactoring netconsole state representation in
order to allow representing deactivated targets (targets that are
disabled due to interfaces unregister).

It then modifies netconsole to handle NETDEV_REGISTER events for such
targets, setups netpoll and forces the device UP. Targets are matched with
incoming interfaces depending on how they were bound in netconsole
(by mac or interface name). For these reasons, we also attempt resuming
on NETDEV_CHANGENAME.

The patchset includes a selftest that validates netconsole target state
transitions and that target is functional after resumed.

Signed-off-by: Andre Carvalho <asantostc@gmail.com>
---
Changes in v8:
- Handle NETDEV_REGISTER/CHANGENAME instead of NETDEV_UP (and force the device
  UP), to increase the chances of succesfully resuming a target. This
  requires using a workqueue instead of inline in the event notifier as
  we can't UP the device otherwise.
- Link to v7: https://lore.kernel.org/r/20251126-netcons-retrigger-v7-0-1d86dba83b1c@gmail.com

Changes in v7:
- selftest: use ${EXIT_STATUS} instead of ${ksft_pass} to avoid
  shellcheck warning
- Link to v6: https://lore.kernel.org/r/20251121-netcons-retrigger-v6-0-9c03f5a2bd6f@gmail.com

Changes in v6:
- Rebase on top of net-next to resolve conflicts, no functional changes.
- Link to v5: https://lore.kernel.org/r/20251119-netcons-retrigger-v5-0-2c7dda6055d6@gmail.com

Changes in v5:
- patch 3: Set (de)enslaved target as DISABLED instead of DEACTIVATED to prevent
  resuming it.
- selftest: Fix test cleanup by moving trap line to outside of loop and remove
  unneeded 'local' keyword
- Rename maybe_resume_target to resume_target, add netconsole_ prefix to
  process_resumable_targets.
- Hold device reference before calling __netpoll_setup.
- Link to v4: https://lore.kernel.org/r/20251116-netcons-retrigger-v4-0-5290b5f140c2@gmail.com

Changes in v4:
- Simplify selftest cleanup, removing trap setup in loop.
- Drop netpoll helper (__setup_netpoll_hold) and manage reference inside
  netconsole.
- Move resume_list processing logic to separate function.
- Link to v3: https://lore.kernel.org/r/20251109-netcons-retrigger-v3-0-1654c280bbe6@gmail.com

Changes in v3:
- Resume by mac or interface name depending on how target was created.
- Attempt to resume target without holding target list lock, by moving
  the target to a temporary list. This is required as netpoll may
  attempt to allocate memory.
- Link to v2: https://lore.kernel.org/r/20250921-netcons-retrigger-v2-0-a0e84006237f@gmail.com

Changes in v2:
- Attempt to resume target in the same thread, instead of using
workqueue .
- Add wrapper around __netpoll_setup (patch 4).
- Renamed resume_target to maybe_resume_target and moved conditionals to
inside its implementation, keeping code more clear.
- Verify that device addr matches target mac address when target was
setup using mac.
- Update selftest to cover targets bound by mac and interface name.
- Fix typo in selftest comment and sort tests alphabetically in
  Makefile.
- Link to v1:
https://lore.kernel.org/r/20250909-netcons-retrigger-v1-0-3aea904926cf@gmail.com

---
Andre Carvalho (3):
      netconsole: convert 'enabled' flag to enum for clearer state management
      netconsole: resume previously deactivated target
      selftests: netconsole: validate target resume

Breno Leitao (2):
      netconsole: add target_state enum
      netconsole: add STATE_DEACTIVATED to track targets disabled by low level

 drivers/net/netconsole.c                           | 171 +++++++++++++++++----
 tools/testing/selftests/drivers/net/Makefile       |   1 +
 .../selftests/drivers/net/lib/sh/lib_netcons.sh    |  35 ++++-
 .../selftests/drivers/net/netcons_resume.sh        |  97 ++++++++++++
 4 files changed, 270 insertions(+), 34 deletions(-)
---
base-commit: ed01d2069e8b40eb283050b7119c25a67542a585
change-id: 20250816-netcons-retrigger-a4f547bfc867

Best regards,
-- 
Andre Carvalho <asantostc@gmail.com>
Re: [PATCH net-next v8 0/5] netconsole: support automatic target recovery
Posted by Jakub Kicinski 2 days, 21 hours ago
On Fri, 28 Nov 2025 22:07:59 +0000 Andre Carvalho wrote:
> This patchset introduces target resume capability to netconsole allowing
> it to recover targets when underlying low-level interface comes back
> online.

config hiding a build failure somewhere:

drivers/net/netconsole.c: In function ‘send_msg_store’:
drivers/net/netconsole.c:1304:16: error: ‘struct netconsole_target’ has no member named ‘enabled’
 1304 |         if (!nt->enabled)
      |                ^~
-- 
pw-bot: cr
Re: [PATCH net-next v8 0/5] netconsole: support automatic target recovery
Posted by Andre Carvalho 2 days, 21 hours ago
On Fri, Nov 28, 2025 at 04:11:33PM -0800, Jakub Kicinski wrote:
> On Fri, 28 Nov 2025 22:07:59 +0000 Andre Carvalho wrote:
> > This patchset introduces target resume capability to netconsole allowing
> > it to recover targets when underlying low-level interface comes back
> > online.
> 
> config hiding a build failure somewhere:
> 
> drivers/net/netconsole.c: In function ‘send_msg_store’:
> drivers/net/netconsole.c:1304:16: error: ‘struct netconsole_target’ has no member named ‘enabled’
>  1304 |         if (!nt->enabled)
>       |                ^~
> -- 
> pw-bot: cr

Hi Jakub,

Looks like it comes from Breno's patch [1] which was also part of the same testing branch.
Not sure how to proceed here, I suppose we would need to pick one of the series to apply
first and then respind the other one.

Thanks,

[1] https://lore.kernel.org/netdev/20251128-netconsole_send_msg-v1-2-8cca4bbce9bc@debian.org/

-- 
Andre Carvalho
Re: [PATCH net-next v8 0/5] netconsole: support automatic target recovery
Posted by Breno Leitao 10 hours ago
On Sat, Nov 29, 2025 at 12:29:22AM +0000, Andre Carvalho wrote:
> On Fri, Nov 28, 2025 at 04:11:33PM -0800, Jakub Kicinski wrote:
> > On Fri, 28 Nov 2025 22:07:59 +0000 Andre Carvalho wrote:
> > > This patchset introduces target resume capability to netconsole allowing
> > > it to recover targets when underlying low-level interface comes back
> > > online.
> > 
> > config hiding a build failure somewhere:
> > 
> > drivers/net/netconsole.c: In function ‘send_msg_store’:
> > drivers/net/netconsole.c:1304:16: error: ‘struct netconsole_target’ has no member named ‘enabled’
> >  1304 |         if (!nt->enabled)
> >       |                ^~
> > -- 
> > pw-bot: cr
> 
> Hi Jakub,
> 
> Looks like it comes from Breno's patch [1] which was also part of the same testing branch.
> Not sure how to proceed here, I suppose we would need to pick one of the series to apply
> first and then respind the other one.

I would like to have this patchset intergrated first, and I will rebase
mine on top of yours.

--breno
Re: [PATCH net-next v8 0/5] netconsole: support automatic target recovery
Posted by Andre Carvalho 51 minutes ago
On Mon, Dec 01, 2025 at 02:46:25AM -0800, Breno Leitao wrote:
> > 
> > Looks like it comes from Breno's patch [1] which was also part of the same testing branch.
> > Not sure how to proceed here, I suppose we would need to pick one of the series to apply
> > first and then respind the other one.
> 
> I would like to have this patchset intergrated first, and I will rebase
> mine on top of yours.
> 
> --breno

Hi Breno,

Sounds good. Since I'm going to respon this to address your comments and will
wait for net-next to re-open I'm also completely fine with rebasing/addressing
the incompatibility in case yours is ready to go. Up to you!

Thanks

-- 
Andre Carvalho