]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
can: netlink: make can_tdc_changelink() FD agnostic
authorVincent Mailhol <mailhol@kernel.org>
Tue, 23 Sep 2025 06:58:34 +0000 (15:58 +0900)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Wed, 24 Sep 2025 15:09:45 +0000 (17:09 +0200)
can_tdc_changelink() 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. 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>
Link: https://patch.msgid.link/20250923-canxl-netlink-prep-v4-9-e720d28f66fe@kernel.org
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/dev/netlink.c

index 17ed52d238e3a17e946116a94c7c5f503e184c3d..abff7b84fdce9641e1a5338ec6cef992774b0ec0 100644 (file)
@@ -172,12 +172,13 @@ static int can_validate(struct nlattr *tb[], struct nlattr *data[],
        return 0;
 }
 
-static int can_tdc_changelink(struct can_priv *priv, const struct nlattr *nla,
+static int can_tdc_changelink(struct data_bittiming_params *dbt_params,
+                             const struct nlattr *nla,
                              struct netlink_ext_ack *extack)
 {
        struct nlattr *tb_tdc[IFLA_CAN_TDC_MAX + 1];
        struct can_tdc tdc = { 0 };
-       const struct can_tdc_const *tdc_const = priv->fd.tdc_const;
+       const struct can_tdc_const *tdc_const = dbt_params->tdc_const;
        int err;
 
        if (!tdc_const)
@@ -215,7 +216,7 @@ static int can_tdc_changelink(struct can_priv *priv, const struct nlattr *nla,
                tdc.tdcf = tdcf;
        }
 
-       priv->fd.tdc = tdc;
+       dbt_params->tdc = tdc;
 
        return 0;
 }
@@ -382,8 +383,8 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
                memset(&priv->fd.tdc, 0, sizeof(priv->fd.tdc));
                if (data[IFLA_CAN_TDC]) {
                        /* TDC parameters are provided: use them */
-                       err = can_tdc_changelink(priv, data[IFLA_CAN_TDC],
-                                                extack);
+                       err = can_tdc_changelink(&priv->fd,
+                                                data[IFLA_CAN_TDC], extack);
                        if (err) {
                                priv->ctrlmode &= ~CAN_CTRLMODE_FD_TDC_MASK;
                                return err;