Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Vincent Mailhol and committed by
Marc Kleine-Budde
d5f45ef8 63888a57

+20 -9
+20 -9
drivers/net/can/dev/netlink.c
··· 504 504 return size; 505 505 } 506 506 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 + 507 524 static size_t can_ctrlmode_ext_get_size(void) 508 525 { 509 526 return nla_total_size(0) + /* nest IFLA_CAN_CTRLMODE_EXT */ ··· 542 525 size += nla_total_size(sizeof(u32)); /* IFLA_CAN_RESTART_MS */ 543 526 if (priv->do_get_berr_counter) /* IFLA_CAN_BERR_COUNTER */ 544 527 size += nla_total_size(sizeof(struct can_berr_counter)); 545 - if (priv->fd.data_bittiming.bitrate) /* IFLA_CAN_DATA_BITTIMING */ 546 - size += nla_total_size(sizeof(struct can_bittiming)); 547 - if (priv->fd.data_bittiming_const) /* IFLA_CAN_DATA_BITTIMING_CONST */ 548 - size += nla_total_size(sizeof(struct can_bittiming_const)); 549 528 if (priv->termination_const) { 550 529 size += nla_total_size(sizeof(priv->termination)); /* IFLA_CAN_TERMINATION */ 551 530 size += nla_total_size(sizeof(*priv->termination_const) * /* IFLA_CAN_TERMINATION_CONST */ ··· 550 537 if (priv->bitrate_const) /* IFLA_CAN_BITRATE_CONST */ 551 538 size += nla_total_size(sizeof(*priv->bitrate_const) * 552 539 priv->bitrate_const_cnt); 553 - if (priv->fd.data_bitrate_const) /* IFLA_CAN_DATA_BITRATE_CONST */ 554 - size += nla_total_size(sizeof(*priv->fd.data_bitrate_const) * 555 - priv->fd.data_bitrate_const_cnt); 556 540 size += sizeof(priv->bitrate_max); /* IFLA_CAN_BITRATE_MAX */ 557 - size += can_tdc_get_size(&priv->fd, /* IFLA_CAN_TDC */ 558 - priv->ctrlmode & CAN_CTRLMODE_FD_TDC_MASK); 559 541 size += can_ctrlmode_ext_get_size(); /* IFLA_CAN_CTRLMODE_EXT */ 542 + 543 + size += can_data_bittiming_get_size(&priv->fd, 544 + priv->ctrlmode & CAN_CTRLMODE_FD_TDC_MASK); 560 545 561 546 return size; 562 547 }