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 v4 12/20] can: netlink: make can_tdc_get_size() FD agnostic
Date: Tue, 23 Sep 2025 15:58:37 +0900 [thread overview]
Message-ID: <20250923-canxl-netlink-prep-v4-12-e720d28f66fe@kernel.org> (raw)
In-Reply-To: <20250923-canxl-netlink-prep-v4-0-e720d28f66fe@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 e1a1767c0a6cfeeb06b7d53f9ec4c48d76387b62..3c0675877f5ef84a2b84d5852a0e91d23b164eeb 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-23 7:00 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-23 6:58 [PATCH v4 00/20] can: netlink: preparation before introduction of CAN XL step 3/3 Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 01/20] can: dev: move struct data_bittiming_params to linux/can/bittiming.h Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 02/20] can: dev: make can_get_relative_tdco() FD agnostic and move it to bittiming.h Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 03/20] can: netlink: document which symbols are FD specific Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 04/20] can: netlink: refactor can_validate_bittiming() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 05/20] can: netlink: add can_validate_tdc() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 06/20] can: netlink: add can_validate_databittiming() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 07/20] can: netlink: refactor CAN_CTRLMODE_TDC_{AUTO,MANUAL} flag reset logic Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 08/20] can: netlink: remove useless check in can_tdc_changelink() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 09/20] can: netlink: make can_tdc_changelink() FD agnostic Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 10/20] can: netlink: add can_dtb_changelink() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 11/20] can: netlink: add can_ctrlmode_changelink() Vincent Mailhol
2025-09-23 6:58 ` Vincent Mailhol [this message]
2025-09-23 6:58 ` [PATCH v4 13/20] can: netlink: add can_data_bittiming_get_size() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 14/20] can: netlink: add can_bittiming_fill_info() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 15/20] can: netlink: add can_bittiming_const_fill_info() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 16/20] can: netlink: add can_bitrate_const_fill_info() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 17/20] can: netlink: make can_tdc_fill_info() FD agnostic Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 18/20] can: calc_bittiming: make can_calc_tdco() " Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 19/20] can: dev: add can_get_ctrlmode_str() Vincent Mailhol
2025-09-23 6:58 ` [PATCH v4 20/20] can: netlink: add userland error messages Vincent Mailhol
2025-09-23 9:09 ` [PATCH v4 00/20] can: netlink: preparation before introduction of CAN XL step 3/3 Marc Kleine-Budde
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=20250923-canxl-netlink-prep-v4-12-e720d28f66fe@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).