From nobody Fri Oct 3 10:10:10 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 613FD2ED17D; Wed, 3 Sep 2025 08:52:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756889549; cv=none; b=rLjOTgTSWuFDvoJCEC9teQNEcQqEnNu9x+on87MmmMv4E8TuEIwQHzj3O6gXUj/DY+XHOOhXvsZkVF/DA1iGTxkIKwW6ZAiqQOQ6yu381Sk9FZOlIzuQIfJaK4PZuvkkGK30A/sQHNLbv/d7YnqmZevSSk9H1tQSVLJlSbYuTzc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756889549; c=relaxed/simple; bh=zVeTURsHurwai0xPsrdWCl2FwVuQvrc8ga9hcoEveII=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j98K71SpdUIq7QQqgfPiWEEzRC0nB5uWaltnfPNGXVUggzkSfrzLLcpsWEX/OmZNzmPL0zvbnu2vwo7z5sNe1qJt19kxOT6sxaFynsQ6MMWte6IEDqhduCgl8cPRcaNE36suo4ORhSmWRwr2KYif+VkgcTsj1z1/kyKEWXPWMrI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AB6b3N/G; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AB6b3N/G" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AE4F6C4CEF0; Wed, 3 Sep 2025 08:52:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1756889547; bh=zVeTURsHurwai0xPsrdWCl2FwVuQvrc8ga9hcoEveII=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AB6b3N/GPZUQZ04F2IKiC+c3TFB4pycz2nh/yZaQui13xoRX2oYm5tc8j7GBeV93v S2224elLJ56w0L9j/FNxgYWzuTSNAjsTy3DJuNS0iuXGAKccq5E1tK9dsSC9qqZkx/ 8rYTo4lkB58hsd1jqpFhhyuPoi+XXeNu+ldXMj7mJ7wDRnWQWlXojUlrTVH3V6q1TM P1UU/rzXoEd8DGcmqO0XSB2eUnScax6qiplSk6tn32RSAptSfwsyWAs5smcKNlnN7B xAp3Qe41iY06c5/glKKQVmbz5Zmj6E6/z3ASZTMhP+STE4sUaZDWiFG+QXq7PvGpRt 9lhG01DGHEA0w== From: Vincent Mailhol Date: Wed, 03 Sep 2025 17:50:17 +0900 Subject: [PATCH 18/21] can: netlink: make can_tdc_fill_info() FD agnostic Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250903-canxl-netlink-prep-v1-18-904bd6037cd9@kernel.org> References: <20250903-canxl-netlink-prep-v1-0-904bd6037cd9@kernel.org> In-Reply-To: <20250903-canxl-netlink-prep-v1-0-904bd6037cd9@kernel.org> To: Marc Kleine-Budde , Oliver Hartkopp Cc: Vincent Mailhol , =?utf-8?q?St=C3=A9phane_Grosjean?= , Robert Nawrath , Minh Le , Duy Nguyen , linux-can@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3285; i=mailhol@kernel.org; h=from:subject:message-id; bh=zVeTURsHurwai0xPsrdWCl2FwVuQvrc8ga9hcoEveII=; b=owGbwMvMwCV2McXO4Xp97WbG02pJDBk7GBez+P3b/vYb/yuPw8sKgnJ/qjXnbPpe7nx96YPW7 NsTzrxK6ihlYRDjYpAVU2RZVs7JrdBR6B126K8lzBxWJpAhDFycAjCR95cZ/gr07O/QSamSY160 wmr9ksaFXRIbOLsUP/J67nyZLGyRXMTw35N5vjSTjSdX7WGeHSIJBq/VOk6XTzhyPvyGi4iGQsc lVgA= X-Developer-Key: i=mailhol@kernel.org; a=openpgp; fpr=ED8F700574E67F20E574E8E2AB5FEB886DBB99C2 can_tdc_fill_info() depends on some variables which are specific to CAN FD. Move these to the function parameters list so that, later on, this function can be reused for the CAN XL TDC. Signed-off-by: Vincent Mailhol --- Changelog: RFC -> v1: - Just pass the IFLA index instead of passing each argument individually. Instead, derive these as local variables depending on whethe the IFLA index is IFLA_CAN_TDC or IFLA_CAN_XL_TDC. --- drivers/net/can/dev/netlink.c | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/drivers/net/can/dev/netlink.c b/drivers/net/can/dev/netlink.c index 092031693ce9f55f2c396fc7de8336932f6f5516..2784cacd7adf5e69f24c110e749= a651b188f69f4 100644 --- a/drivers/net/can/dev/netlink.c +++ b/drivers/net/can/dev/netlink.c @@ -578,21 +578,34 @@ static int can_bitrate_const_fill_info(struct sk_buff= *skb, sizeof(*bitrate_const) * cnt, bitrate_const); } =20 -static int can_tdc_fill_info(struct sk_buff *skb, const struct net_device = *dev) +static int can_tdc_fill_info(struct sk_buff *skb, const struct net_device = *dev, + int ifla_can_tdc) { - struct nlattr *nest; struct can_priv *priv =3D netdev_priv(dev); - struct can_tdc *tdc =3D &priv->fd.tdc; - const struct can_tdc_const *tdc_const =3D priv->fd.tdc_const; + struct data_bittiming_params *dbt_params; + const struct can_tdc_const *tdc_const; + struct can_tdc *tdc; + struct nlattr *nest; + bool tdc_is_enabled, tdc_manual; + + if (ifla_can_tdc =3D=3D IFLA_CAN_TDC) { + dbt_params =3D &priv->fd; + tdc_is_enabled =3D can_fd_tdc_is_enabled(priv); + tdc_manual =3D priv->ctrlmode & CAN_CTRLMODE_TDC_MANUAL; + } else { + WARN_ON(1); /* Place holder for CAN XL */ + } + tdc_const =3D dbt_params->tdc_const; + tdc =3D &dbt_params->tdc; =20 if (!tdc_const) return 0; =20 - nest =3D nla_nest_start(skb, IFLA_CAN_TDC); + nest =3D nla_nest_start(skb, ifla_can_tdc); if (!nest) return -EMSGSIZE; =20 - if (priv->ctrlmode_supported & CAN_CTRLMODE_TDC_MANUAL && + if (tdc_manual && (nla_put_u32(skb, IFLA_CAN_TDC_TDCV_MIN, tdc_const->tdcv_min) || nla_put_u32(skb, IFLA_CAN_TDC_TDCV_MAX, tdc_const->tdcv_max))) goto err_cancel; @@ -604,15 +617,15 @@ static int can_tdc_fill_info(struct sk_buff *skb, con= st struct net_device *dev) nla_put_u32(skb, IFLA_CAN_TDC_TDCF_MAX, tdc_const->tdcf_max))) goto err_cancel; =20 - if (can_fd_tdc_is_enabled(priv)) { + if (tdc_is_enabled) { u32 tdcv; int err =3D -EINVAL; =20 - if (priv->ctrlmode & CAN_CTRLMODE_TDC_MANUAL) { + if (tdc_manual) { tdcv =3D tdc->tdcv; err =3D 0; - } else if (priv->fd.do_get_auto_tdcv) { - err =3D priv->fd.do_get_auto_tdcv(dev, &tdcv); + } else if (dbt_params->do_get_auto_tdcv) { + err =3D dbt_params->do_get_auto_tdcv(dev, &tdcv); } if (!err && nla_put_u32(skb, IFLA_CAN_TDC_TDCV, tdcv)) goto err_cancel; @@ -700,7 +713,7 @@ static int can_fill_info(struct sk_buff *skb, const str= uct net_device *dev) sizeof(priv->bitrate_max), &priv->bitrate_max)) || =20 - can_tdc_fill_info(skb, dev) || + can_tdc_fill_info(skb, dev, IFLA_CAN_TDC) || =20 can_ctrlmode_ext_fill_info(skb, priv) ) --=20 2.49.1