Skip to content

Commit d5f45ef

Browse files
vincent-mailholmarckleinebudde
authored andcommitted
can: netlink: add can_data_bittiming_get_size()
Add the can_data_bittiming_get_size() function to factorise the logic to retrieve the size of below data bittiming parameters: - data_bittiming - data_bittiming_const - data_bitrate_const - tdc parameters This function will be reused later on for CAN XL. Signed-off-by: Vincent Mailhol <mailhol@kernel.org> Link: https://patch.msgid.link/20250923-canxl-netlink-prep-v4-13-e720d28f66fe@kernel.org Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
1 parent 63888a5 commit d5f45ef

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

drivers/net/can/dev/netlink.c

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,23 @@ static size_t can_tdc_get_size(struct data_bittiming_params *dbt_params,
504504
return size;
505505
}
506506

507+
static size_t can_data_bittiming_get_size(struct data_bittiming_params *dbt_params,
508+
u32 tdc_flags)
509+
{
510+
size_t size = 0;
511+
512+
if (dbt_params->data_bittiming.bitrate) /* IFLA_CAN_DATA_BITTIMING */
513+
size += nla_total_size(sizeof(dbt_params->data_bittiming));
514+
if (dbt_params->data_bittiming_const) /* IFLA_CAN_DATA_BITTIMING_CONST */
515+
size += nla_total_size(sizeof(*dbt_params->data_bittiming_const));
516+
if (dbt_params->data_bitrate_const) /* IFLA_CAN_DATA_BITRATE_CONST */
517+
size += nla_total_size(sizeof(*dbt_params->data_bitrate_const) *
518+
dbt_params->data_bitrate_const_cnt);
519+
size += can_tdc_get_size(dbt_params, tdc_flags);/* IFLA_CAN_TDC */
520+
521+
return size;
522+
}
523+
507524
static size_t can_ctrlmode_ext_get_size(void)
508525
{
509526
return nla_total_size(0) + /* nest IFLA_CAN_CTRLMODE_EXT */
@@ -525,10 +542,6 @@ static size_t can_get_size(const struct net_device *dev)
525542
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_RESTART_MS */
526543
if (priv->do_get_berr_counter) /* IFLA_CAN_BERR_COUNTER */
527544
size += nla_total_size(sizeof(struct can_berr_counter));
528-
if (priv->fd.data_bittiming.bitrate) /* IFLA_CAN_DATA_BITTIMING */
529-
size += nla_total_size(sizeof(struct can_bittiming));
530-
if (priv->fd.data_bittiming_const) /* IFLA_CAN_DATA_BITTIMING_CONST */
531-
size += nla_total_size(sizeof(struct can_bittiming_const));
532545
if (priv->termination_const) {
533546
size += nla_total_size(sizeof(priv->termination)); /* IFLA_CAN_TERMINATION */
534547
size += nla_total_size(sizeof(*priv->termination_const) * /* IFLA_CAN_TERMINATION_CONST */
@@ -537,14 +550,12 @@ static size_t can_get_size(const struct net_device *dev)
537550
if (priv->bitrate_const) /* IFLA_CAN_BITRATE_CONST */
538551
size += nla_total_size(sizeof(*priv->bitrate_const) *
539552
priv->bitrate_const_cnt);
540-
if (priv->fd.data_bitrate_const) /* IFLA_CAN_DATA_BITRATE_CONST */
541-
size += nla_total_size(sizeof(*priv->fd.data_bitrate_const) *
542-
priv->fd.data_bitrate_const_cnt);
543553
size += sizeof(priv->bitrate_max); /* IFLA_CAN_BITRATE_MAX */
544-
size += can_tdc_get_size(&priv->fd, /* IFLA_CAN_TDC */
545-
priv->ctrlmode & CAN_CTRLMODE_FD_TDC_MASK);
546554
size += can_ctrlmode_ext_get_size(); /* IFLA_CAN_CTRLMODE_EXT */
547555

556+
size += can_data_bittiming_get_size(&priv->fd,
557+
priv->ctrlmode & CAN_CTRLMODE_FD_TDC_MASK);
558+
548559
return size;
549560
}
550561

0 commit comments

Comments
 (0)