From: Vincent Mailhol <mailhol@kernel.org>
To: Marc Kleine-Budde <mkl@pengutronix.de>,
Oliver Hartkopp <socketcan@hartkopp.net>
Cc: "Vincent Mailhol" <mailhol@kernel.org>,
"Stéphane Grosjean" <stephane.grosjean@hms-networks.com>,
"Robert Nawrath" <mbro1689@gmail.com>,
"Minh Le" <minh.le.aj@renesas.com>,
"Duy Nguyen" <duy.nguyen.rh@renesas.com>,
linux-can@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2 12/20] can: netlink: make can_tdc_get_size() FD agnostic
Date: Wed, 10 Sep 2025 15:03:37 +0900 [thread overview]
Message-ID: <20250910-canxl-netlink-prep-v2-12-f128d4083721@kernel.org> (raw)
In-Reply-To: <20250910-canxl-netlink-prep-v2-0-f128d4083721@kernel.org>
can_tdc_get_size() needs to access can_priv->fd making it specific to
CAN FD. Change the function parameter from struct can_priv to struct
data_bittiming_params.
can_tdc_get_size() also uses the CAN_CTRLMODE_TDC_MANUAL macro making
it specific to CAN FD. Add the tdc mask to the function parameter
list. The value of the tdc manual flag can then be derived from that
mask and stored in a local variable.
This way, the function becomes CAN FD agnostic and can be reused later
on for the CAN XL TDC.
Signed-off-by: Vincent Mailhol <mailhol@kernel.org>
---
Changelog:
v1 -> v2:
- Small rewrite of the patch description adding one more paragraph
with further details.
---
drivers/net/can/dev/netlink.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/drivers/net/can/dev/netlink.c b/drivers/net/can/dev/netlink.c
index ab2c9e75347704132b4dfe3b3d29b2c3f1c98908..a49131f227d60e136ea31792a6e8c0157f3a8275 100644
--- a/drivers/net/can/dev/netlink.c
+++ b/drivers/net/can/dev/netlink.c
@@ -472,32 +472,32 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
return 0;
}
-static size_t can_tdc_get_size(const struct net_device *dev)
+static size_t can_tdc_get_size(struct data_bittiming_params *dbt_params,
+ u32 tdc_flags)
{
- struct can_priv *priv = netdev_priv(dev);
+ bool tdc_manual = tdc_flags & CAN_CTRLMODE_TDC_MANUAL_MASK;
size_t size;
- if (!priv->fd.tdc_const)
+ if (!dbt_params->tdc_const)
return 0;
size = nla_total_size(0); /* nest IFLA_CAN_TDC */
- if (priv->ctrlmode_supported & CAN_CTRLMODE_TDC_MANUAL) {
+ if (tdc_manual) {
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCV_MIN */
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCV_MAX */
}
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCO_MIN */
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCO_MAX */
- if (priv->fd.tdc_const->tdcf_max) {
+ if (dbt_params->tdc_const->tdcf_max) {
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCF_MIN */
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCF_MAX */
}
- if (can_fd_tdc_is_enabled(priv)) {
- if (priv->ctrlmode & CAN_CTRLMODE_TDC_MANUAL ||
- priv->fd.do_get_auto_tdcv)
+ if (tdc_flags) {
+ if (tdc_manual || dbt_params->do_get_auto_tdcv)
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCV */
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCO */
- if (priv->fd.tdc_const->tdcf_max)
+ if (dbt_params->tdc_const->tdcf_max)
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCF */
}
@@ -541,7 +541,8 @@ static size_t can_get_size(const struct net_device *dev)
size += nla_total_size(sizeof(*priv->fd.data_bitrate_const) *
priv->fd.data_bitrate_const_cnt);
size += sizeof(priv->bitrate_max); /* IFLA_CAN_BITRATE_MAX */
- size += can_tdc_get_size(dev); /* IFLA_CAN_TDC */
+ size += can_tdc_get_size(&priv->fd, /* IFLA_CAN_TDC */
+ priv->ctrlmode & CAN_CTRLMODE_FD_TDC_MASK);
size += can_ctrlmode_ext_get_size(); /* IFLA_CAN_CTRLMODE_EXT */
return size;
--
2.49.1
next prev parent reply other threads:[~2025-09-10 6:05 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-10 6:03 [PATCH v2 00/20] can: netlink: preparation before introduction of CAN XL step 2/2 Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 01/20] can: dev: move struct data_bittiming_params to linux/can/bittiming.h Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 02/20] can: dev: make can_get_relative_tdco() FD agnostic and move it to bittiming.h Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 03/20] can: netlink: document which symbols are FD specific Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 04/20] can: netlink: refactor can_validate_bittiming() Vincent Mailhol
2025-09-10 6:13 ` Marc Kleine-Budde
2025-09-10 6:43 ` Vincent Mailhol
2025-09-10 10:55 ` Marc Kleine-Budde
2025-09-10 11:12 ` Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 05/20] can: netlink: add can_validate_tdc() Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 06/20] can: netlink: add can_validate_databittiming() Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 07/20] can: netlink: refactor CAN_CTRLMODE_TDC_{AUTO,MANUAL} flag reset logic Vincent Mailhol
2025-09-20 7:24 ` Vincent Mailhol
2025-09-22 9:43 ` Marc Kleine-Budde
2025-09-22 11:14 ` Vincent Mailhol
2025-09-22 13:06 ` Marc Kleine-Budde
2025-09-23 7:04 ` Vincent Mailhol
2025-09-23 9:08 ` Marc Kleine-Budde
2025-09-23 9:36 ` Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 08/20] can: netlink: remove useless check in can_tdc_changelink() Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 09/20] can: netlink: make can_tdc_changelink() FD agnostic Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 10/20] can: netlink: add can_dtb_changelink() Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 11/20] can: netlink: add can_ctrlmode_changelink() Vincent Mailhol
2025-09-10 6:03 ` Vincent Mailhol [this message]
2025-09-10 6:03 ` [PATCH v2 13/20] can: netlink: add can_data_bittiming_get_size() Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 14/20] can: netlink: add can_bittiming_fill_info() Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 15/20] can: netlink: add can_bittiming_const_fill_info() Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 16/20] can: netlink: add can_bitrate_const_fill_info() Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 17/20] can: netlink: make can_tdc_fill_info() FD agnostic Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 18/20] can: calc_bittiming: make can_calc_tdco() " Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 19/20] can: dev: add can_get_ctrlmode_str() Vincent Mailhol
2025-09-10 6:03 ` [PATCH v2 20/20] can: netlink: add userland error messages Vincent Mailhol
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=20250910-canxl-netlink-prep-v2-12-f128d4083721@kernel.org \
--to=mailhol@kernel.org \
--cc=duy.nguyen.rh@renesas.com \
--cc=linux-can@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mbro1689@gmail.com \
--cc=minh.le.aj@renesas.com \
--cc=mkl@pengutronix.de \
--cc=socketcan@hartkopp.net \
--cc=stephane.grosjean@hms-networks.com \
/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 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).