linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/21] can: netlink: preparation before introduction of CAN XL step 2/2
@ 2025-09-03  8:49 Vincent Mailhol
  2025-09-03  8:50 ` [PATCH 01/21] can: dev: move struct data_bittiming_params to linux/can/bittiming.h Vincent Mailhol
                   ` (21 more replies)
  0 siblings, 22 replies; 35+ messages in thread
From: Vincent Mailhol @ 2025-09-03  8:49 UTC (permalink / raw)
  To: Marc Kleine-Budde, Oliver Hartkopp
  Cc: Vincent Mailhol, Stéphane Grosjean, Robert Nawrath, Minh Le,
	Duy Nguyen, linux-can, linux-kernel

In November last year, I sent an RFC to introduce CAN XL [1]. That
RFC, despite positive feedback, was put on hold due to some unanswered
question concerning the PWM encoding [2].

While stuck, some small preparation work was done in parallel in [3]
by refactoring the struct can_priv and doing some trivial clean-up and
renaming. [3] received zero feedback but was eventually merged after
splitting it in smaller parts and resending it.

Finally, in July this year, we clarified the remaining mysteries about
PWM calculation, thus unlocking the series. Summer being a bit busy
because of some personal matters brings us to now.

After doing all the refactoring and adding all the CAN XL features,
the final result is roughly 30 patches, probably too much for a single
series. So I am splitting it in two:

  - preparation (this series)
  - CAN XL

And so, this series continues and finishes the preparation work done
in [3]. It contains all the refactoring needed to smoothly introduce
CAN XL. The goal is to:

  - split the function in smaller pieces: CAN XL will introduce a fair
    amount of code. And some functions which are already fairly long
    (86 lines for can_validate(), 216 lines for can_changelink())
    would grow to disproportionate sizes if the CAN XL logic were to
    be inlined in those functions.

  - repurpose the existing code to handle both CAN FD and CAN XL: a
    huge part of CAN XL simply reuses the CAN FD logic. All the
    existing CAN FD logic is made more generic to handle both CAN FD
    and XL.

In more details:

  - Patch #1 moves struct data_bittiming_params from dev.h to
    bittiming.h and patch #2 makes can_get_relative_tdco() FD agnostic
    before also moving it to bittiming.h.

  - Patch #3 adds some comments to netlink.h tagging which IFLA
    symbols are FD specific.

  - Patch #4 to #7 are refactoring can_validate() and
    can_validate_bittiming().

  - Patch #8 to #12 are refactoring can_changelink() and
    can_tdc_changelink().

  - Patch #13 and #14 are refactoring can_get_size() and
    can_tdc_get_size().

  - Patch #15 to #18 are refactoring can_fill_info() and
    can_tdc_fill_info().

  - Patch #19 makes can_calc_tdco() FD agnostic.

  - Patch #20 adds can_get_ctrlmode_str() which converts control mode
    flags into strings. This is done in preparation of patch #20.

  - Patch #21 is the final patch and improves the user experience by
    providing detailed error messages whenever invalid parameters are
    provided. All those error messages came into handy when debugging
    the upcoming CAN XL patches.

Aside from the last patch, the other changes do not impact any of the
existing functionalities.

The follow up series which introduces CAN XL is nearly completed but
will be sent only once this one is approved: one thing at a time, I do
not want to overwhelm people (including myself).

[1] https://lore.kernel.org/linux-can/20241110155902.72807-16-mailhol.vincent@wanadoo.fr/
[2] https://lore.kernel.org/linux-can/c4771c16-c578-4a6d-baee-918fe276dbe9@wanadoo.fr/
[3] https://lore.kernel.org/linux-can/20241110155902.72807-16-mailhol.vincent@wanadoo.fr/

To: Marc Kleine-Budde <mkl@pengutronix.de>
To: Oliver Hartkopp <socketcan@hartkopp.net>
Cc: Vincent Mailhol <mailhol@kernel.org>
Cc: Stéphane Grosjean <stephane.grosjean@hms-networks.com>
Cc: Robert Nawrath <mbro1689@gmail.com>
Cc: Minh Le <minh.le.aj@renesas.com>
Cc: Duy Nguyen <duy.nguyen.rh@renesas.com>
Cc: linux-can@vger.kernel.org
Cc: linux-kernel@vger.kernel.org

Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
Vincent Mailhol (21):
      can: dev: move struct data_bittiming_params to linux/can/bittiming.h
      can: dev: make can_get_relative_tdco() FD agnostic and move it to bittiming.h
      can: netlink: document which symbols are FD specific
      can: netlink: refactor can_validate_bittiming()
      can: netlink: add can_validate_tdc()
      can: netlink: add can_validate_databittiming()
      can: netlink: remove comment in can_validate()
      can: netlink: refactor CAN_CTRLMODE_TDC_{AUTO,MANUAL} flag reset logic
      can: netlink: remove useless check in can_tdc_changelink()
      can: netlink: make can_tdc_changelink() FD agnostic
      can: netlink: add can_dtb_changelink()
      can: netlink: add can_ctrlmode_changelink()
      can: netlink: make can_tdc_get_size() FD agnostic
      can: netlink: add can_data_bittiming_get_size()
      can: netlink: add can_bittiming_fill_info()
      can: netlink: add can_bittiming_const_fill_info()
      can: netlink: add can_bitrate_const_fill_info()
      can: netlink: make can_tdc_fill_info() FD agnostic
      can: calc_bittiming: make can_calc_tdco() FD agnostic
      can: dev: add can_get_ctrlmode_str()
      can: netlink: add userland error messages

 drivers/net/can/dev/calc_bittiming.c |  10 +-
 drivers/net/can/dev/dev.c            |  33 ++
 drivers/net/can/dev/netlink.c        | 607 ++++++++++++++++++++++-------------
 include/linux/can/bittiming.h        |  48 ++-
 include/linux/can/dev.h              |  42 +--
 include/uapi/linux/can/netlink.h     |  14 +-
 6 files changed, 471 insertions(+), 283 deletions(-)
---
base-commit: 2fd4161d0d2547650d9559d57fc67b4e0a26a9e3
change-id: 20250831-canxl-netlink-prep-9dbf8498fd9d

Best regards,
-- 
Vincent Mailhol <mailhol@kernel.org>


^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2025-09-05 15:12 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-03  8:49 [PATCH 00/21] can: netlink: preparation before introduction of CAN XL step 2/2 Vincent Mailhol
2025-09-03  8:50 ` [PATCH 01/21] can: dev: move struct data_bittiming_params to linux/can/bittiming.h Vincent Mailhol
2025-09-03  8:50 ` [PATCH 02/21] can: dev: make can_get_relative_tdco() FD agnostic and move it to bittiming.h Vincent Mailhol
2025-09-03  8:50 ` [PATCH 03/21] can: netlink: document which symbols are FD specific Vincent Mailhol
2025-09-03  8:50 ` [PATCH 04/21] can: netlink: refactor can_validate_bittiming() Vincent Mailhol
2025-09-03  8:50 ` [PATCH 05/21] can: netlink: add can_validate_tdc() Vincent Mailhol
2025-09-03  8:50 ` [PATCH 06/21] can: netlink: add can_validate_databittiming() Vincent Mailhol
2025-09-04 18:46   ` kernel test robot
2025-09-05 14:55     ` Vincent Mailhol
2025-09-03  8:50 ` [PATCH 07/21] can: netlink: remove comment in can_validate() Vincent Mailhol
2025-09-04  6:51   ` Oliver Hartkopp
2025-09-04  9:48     ` Vincent Mailhol
2025-09-05 10:55       ` Oliver Hartkopp
2025-09-05 15:12         ` Vincent Mailhol
2025-09-03  8:50 ` [PATCH 08/21] can: netlink: refactor CAN_CTRLMODE_TDC_{AUTO,MANUAL} flag reset logic Vincent Mailhol
2025-09-03  8:50 ` [PATCH 09/21] can: netlink: remove useless check in can_tdc_changelink() Vincent Mailhol
2025-09-03  8:50 ` [PATCH 10/21] can: netlink: make can_tdc_changelink() FD agnostic Vincent Mailhol
2025-09-03  8:50 ` [PATCH 11/21] can: netlink: add can_dtb_changelink() Vincent Mailhol
2025-09-04 20:29   ` kernel test robot
2025-09-03  8:50 ` [PATCH 12/21] can: netlink: add can_ctrlmode_changelink() Vincent Mailhol
2025-09-03  8:50 ` [PATCH 13/21] can: netlink: make can_tdc_get_size() FD agnostic Vincent Mailhol
2025-09-03  8:50 ` [PATCH 14/21] can: netlink: add can_data_bittiming_get_size() Vincent Mailhol
2025-09-03  8:50 ` [PATCH 15/21] can: netlink: add can_bittiming_fill_info() Vincent Mailhol
2025-09-03  8:50 ` [PATCH 16/21] can: netlink: add can_bittiming_const_fill_info() Vincent Mailhol
2025-09-03  8:50 ` [PATCH 17/21] can: netlink: add can_bitrate_const_fill_info() Vincent Mailhol
2025-09-03  8:50 ` [PATCH 18/21] can: netlink: make can_tdc_fill_info() FD agnostic Vincent Mailhol
2025-09-04 22:01   ` kernel test robot
2025-09-03  8:50 ` [PATCH 19/21] can: calc_bittiming: make can_calc_tdco() " Vincent Mailhol
2025-09-03  8:50 ` [PATCH 20/21] can: dev: add can_get_ctrlmode_str() Vincent Mailhol
2025-09-03  8:50 ` [PATCH 21/21] can: netlink: add userland error messages Vincent Mailhol
2025-09-03  9:26 ` [PATCH 00/21] can: netlink: preparation before introduction of CAN XL step 2/2 Vincent Mailhol
2025-09-04  6:36   ` Oliver Hartkopp
2025-09-04  9:18     ` Vincent Mailhol
2025-09-05 11:11       ` Oliver Hartkopp
2025-09-05 14:58         ` Vincent Mailhol

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).