From nobody Thu Oct 2 09:22:12 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 D721A305962; Thu, 18 Sep 2025 12:59:34 +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=1758200374; cv=none; b=Dl6NufRsNjJmo21EnRDs/S0u//3XpcVQJ32usns/vJpkRFU3LT8AG/CREV0SmI6iBULF9qzJSXsjAKPXsLfDMW8D1I47MozFPGHbLqvmqzrDiEYwHulXb0oBcnyOGCCBzsPN9oGDZDvTcmHKJHsdkd+k7QVJjX1HgGqHJXtDpA0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758200374; c=relaxed/simple; bh=RCpnWNbRbTPOTIe59LVKPYVENEKNj5n7+1eM2LCxXJM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=b2OYGbX5Mu0f8552n0dhfysz5vrjPpmir8++RLvSdCz/obl9fPln1IxLpptxUqK9iR1hcRx2HTjtpn/rPBkojsnPID+EoU1PI8ZEQik2m1Ma+y8j6ewqhRbIcLsrutYZc08lGKufc1dDfDmLiIWcgRntdFfjoD6WSMyjrGO8SJA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=f+94Vn6S; 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="f+94Vn6S" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B4CC2C4CEEB; Thu, 18 Sep 2025 12:59:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758200374; bh=RCpnWNbRbTPOTIe59LVKPYVENEKNj5n7+1eM2LCxXJM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=f+94Vn6Shi4rKKWXzKs3VW3ZJ+WVea90kZmI1rYrKsEF/Ou0J8fZbYBrEsQhlLciv cJjXmqRUwaC5z6JA1S8GqhvTQY/1m4+YW/wJnF2Hp6pszmZ8hQ9CyAyEFG1g+ys36v uxFnSO48N4VuGzmTfNm46MWkFnl1KytZf/WSr8Jw804ILL0Fn+v6hFcRwDjrZwhGWN NKIrTi6JrY6oe1Z4HF9l+VgY/mT6HXcETNqZehJOWH14M4EZCjO+1chsngKS6a9Q2L RgZLvXHRPfyuxR5VxLQtNQYoWfQEwJYiEotlSyT7BMkqmsoAzy2DU9vjptvxzoojgh dXCVGdAVWrJhg== From: Vincent Mailhol Date: Thu, 18 Sep 2025 21:59:11 +0900 Subject: [PATCH RFC 1/5] can: annotate mtu accesses with READ_ONCE() 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: <20250918-can-fix-mtu-v1-1-471edb942295@kernel.org> References: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> In-Reply-To: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> To: Oliver Hartkopp , Marc Kleine-Budde Cc: linux-can@vger.kernel.org, linux-kernel@vger.kernel.org, Vincent Mailhol X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2300; i=mailhol@kernel.org; h=from:subject:message-id; bh=RCpnWNbRbTPOTIe59LVKPYVENEKNj5n7+1eM2LCxXJM=; b=owGbwMvMwCV2McXO4Xp97WbG02pJDBlnmDT9pvH7OgQ/e5214q6z6PKljyUkHDvOPepVP2B96 ewjvssBHaUsDGJcDLJiiizLyjm5FToKvcMO/bWEmcPKBDKEgYtTACbyRoCR4cEBoSKZJpnvDD8P xc/6/OXbnxsztrx5utvuttqC2w92Hq9mZNgbwiKk4pQUUpOpUTSvcPOdY0mqK326Oe5zBTb33kz PZwAA X-Developer-Key: i=mailhol@kernel.org; a=openpgp; fpr=ED8F700574E67F20E574E8E2AB5FEB886DBB99C2 As hinted in commit 501a90c94510 ("inet: protect against too small mtu values."), net_device->mtu is vulnerable to race conditions if it is written and read without holding the RTNL. At the moment, all the writes are done while the interface is down, so there are no such issues yet. But upcoming changes will allow to modify the MTU while the CAN XL devices are up. In preparation to the introduction of CAN XL, annotate all the net_device->mtu accesses which are not yet guarded by the RTNL with a READ_ONCE(). Note that all the write accesses are already either guarded by the RTNL or are already annotated and thus need no changes. Signed-off-by: Vincent Mailhol --- net/can/af_can.c | 2 +- net/can/isotp.c | 2 +- net/can/raw.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/net/can/af_can.c b/net/can/af_can.c index b2387a46794a576973f3d865a5ca8e2ba696d167..770173d8db42813d5c085248d1b= cf5fbe717955b 100644 --- a/net/can/af_can.c +++ b/net/can/af_can.c @@ -221,7 +221,7 @@ int can_send(struct sk_buff *skb, int loop) } =20 /* Make sure the CAN frame can pass the selected CAN netdevice. */ - if (unlikely(skb->len > skb->dev->mtu)) { + if (unlikely(skb->len > READ_ONCE(skb->dev->mtu))) { err =3D -EMSGSIZE; goto inval_skb; } diff --git a/net/can/isotp.c b/net/can/isotp.c index dee1412b3c9c1ffcfc43a109b448701459fcf8b9..74ee1e52249b232813a06c5d2c6= e404a38dce990 100644 --- a/net/can/isotp.c +++ b/net/can/isotp.c @@ -1313,7 +1313,7 @@ static int isotp_bind(struct socket *sock, struct soc= kaddr *uaddr, int len) err =3D -ENODEV; goto out; } - if (dev->mtu < so->ll.mtu) { + if (READ_ONCE(dev->mtu) < so->ll.mtu) { dev_put(dev); err =3D -EINVAL; goto out; diff --git a/net/can/raw.c b/net/can/raw.c index 76b867d21def209f5c6d236604c0e434a1c55a4d..6cb959e3dcd3e54972628ee5957= 2a749009d1323 100644 --- a/net/can/raw.c +++ b/net/can/raw.c @@ -950,7 +950,7 @@ static int raw_sendmsg(struct socket *sock, struct msgh= dr *msg, size_t size) err =3D -EINVAL; =20 /* check for valid CAN (CC/FD/XL) frame content */ - txmtu =3D raw_check_txframe(ro, skb, dev->mtu); + txmtu =3D raw_check_txframe(ro, skb, READ_ONCE(dev->mtu)); if (!txmtu) goto free_skb; =20 --=20 2.49.1 From nobody Thu Oct 2 09:22:12 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 D469F305E10; Thu, 18 Sep 2025 12:59:35 +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=1758200375; cv=none; b=Z/bldWFqpoBqirh/B8WQK9yebNiAIpGEX07HkvHphbApS6ipbcDOmEZIbVzaiLL/m5YlriXrwJiQf6HAwXmy5pdTnvcnHIvFUxE1U6qoMio4G6v2t2DtA0KPHv8mknz1PoEDv9yK3aYZIkFCRzHr/h4t4e/lK1g0KYjjLrIVNxE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758200375; c=relaxed/simple; bh=p+SNyRqG1hT8dME3Lyo4KZ5ep4YInxyeLrwIct6GIj0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Fi5ZY65AN8zemA2muK3uuFIo/x2S2uxrIeWcexNpLqQDIUavuw596FX8X7IZFjy4Zg4KT9Ef45NpsQPS/p/a8kNnY4nC8x2NIBhQA6qYLjlYKGg6A/LRslAEHWgx/3f2PRUEbJzh+iVJdPHrQKbqzrSBvMOxoeFlB7uG86iCK+4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dyI1+0FB; 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="dyI1+0FB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C2EB3C4CEFA; Thu, 18 Sep 2025 12:59:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758200375; bh=p+SNyRqG1hT8dME3Lyo4KZ5ep4YInxyeLrwIct6GIj0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dyI1+0FB/qG7lU/+B8gal/oKX4d6UXrODTJYnWQ0BcW9NBefRWgUROJpde9Nmxx40 HDGGCDgQSviMnkv2Ywzu9fcP3I/z9itTZT/vc5HuuHwag98XkGcpjByEHqcE0stLeN bLPu4sGvdrX6D0qvP/1krXlD1hyUlyP8uVXFr+6TPQQn1oQQi4E/MIdjcITXesJRuF fj7BO5U1dPPWspdDplcsPnRGy8c9iwjqYjAKNZAr74mPy1UbXkj1cKxeYtNu0NPo7x Gg+lzrx1PyxnbVT1uNnLk8BnhWHbxdvfnDBX0hyNRH4xjPi6BNiYf0xmJGeqecCBo4 C9Q058thSBt8w== From: Vincent Mailhol Date: Thu, 18 Sep 2025 21:59:12 +0900 Subject: [PATCH RFC 2/5] can: dev: turn can_set_static_ctrlmode() into a non-inline function 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: <20250918-can-fix-mtu-v1-2-471edb942295@kernel.org> References: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> In-Reply-To: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> To: Oliver Hartkopp , Marc Kleine-Budde Cc: linux-can@vger.kernel.org, linux-kernel@vger.kernel.org, Vincent Mailhol X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3910; i=mailhol@kernel.org; h=from:subject:message-id; bh=p+SNyRqG1hT8dME3Lyo4KZ5ep4YInxyeLrwIct6GIj0=; b=owGbwMvMwCV2McXO4Xp97WbG02pJDBlnmLSn7xTNXq/p4PhsakuQ+ZK1O2zqjjpuDt+R833GE a+1wQusOkpZGMS4GGTFFFmWlXNyK3QUeocd+msJM4eVCWQIAxenAExE3I7hf+WMoIjg8y76GzwN VS5rXzGuPPeguiXMUFj9eNhNt105WxgZJphKNZ2ZtDi6y4RlRuohX1OO9bvd5jZdqMqsWRNl1j6 fCQA= X-Developer-Key: i=mailhol@kernel.org; a=openpgp; fpr=ED8F700574E67F20E574E8E2AB5FEB886DBB99C2 can_set_static_ctrlmode() is declared as a static inline. But it is only called in the probe function of the devices and so does not really benefit from any kind of optimization. Transform it into a "normal" function by moving it to drivers/net/can/dev/dev.c Signed-off-by: Vincent Mailhol --- This also serves as a preparation for the next patch in which we are adding can_set_default_mtu(). That function will only be used by the can_dev.ko module and so we do not need to export its GPL symbol. However, if can_set_static_ctrlmode() stays as a static inline, then the call to set_default_mtu(), which we plan to add in can_set_static_ctrlmode(), would also be inlined and thus would become visible to the users of can_set_static_ctrlmode(). Making can_set_static_ctrlmode() a non-inline function resolve this dependency. --- drivers/net/can/dev/dev.c | 21 +++++++++++++++++++++ include/linux/can/dev.h | 23 ++--------------------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/drivers/net/can/dev/dev.c b/drivers/net/can/dev/dev.c index 3913971125de0ab16b4ad9f36712954141014ddf..a0ae659beedcd1fa0979662c126= 14ae7846032c0 100644 --- a/drivers/net/can/dev/dev.c +++ b/drivers/net/can/dev/dev.c @@ -347,6 +347,27 @@ int can_change_mtu(struct net_device *dev, int new_mtu) } EXPORT_SYMBOL_GPL(can_change_mtu); =20 +/* helper to define static CAN controller features at device creation time= */ +int can_set_static_ctrlmode(struct net_device *dev, u32 static_mode) +{ + struct can_priv *priv =3D netdev_priv(dev); + + /* alloc_candev() succeeded =3D> netdev_priv() is valid at this point */ + if (priv->ctrlmode_supported & static_mode) { + netdev_warn(dev, + "Controller features can not be supported and static at the same ti= me\n"); + return -EINVAL; + } + priv->ctrlmode =3D static_mode; + + /* override MTU which was set by default in can_setup()? */ + if (static_mode & CAN_CTRLMODE_FD) + dev->mtu =3D CANFD_MTU; + + return 0; +} +EXPORT_SYMBOL_GPL(can_set_static_ctrlmode); + /* generic implementation of netdev_ops::ndo_eth_ioctl for CAN devices * supporting hardware timestamps */ diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h index 9a92cbe5b2cb7ccdfca3121718856d096e9ecfa6..5dc58360c2d74a1711d4e02d28f= e52ae20b146e0 100644 --- a/include/linux/can/dev.h +++ b/include/linux/can/dev.h @@ -125,27 +125,6 @@ static inline s32 can_get_relative_tdco(const struct c= an_priv *priv) return (s32)priv->fd.tdc.tdco - sample_point_in_tc; } =20 -/* helper to define static CAN controller features at device creation time= */ -static inline int __must_check can_set_static_ctrlmode(struct net_device *= dev, - u32 static_mode) -{ - struct can_priv *priv =3D netdev_priv(dev); - - /* alloc_candev() succeeded =3D> netdev_priv() is valid at this point */ - if (priv->ctrlmode_supported & static_mode) { - netdev_warn(dev, - "Controller features can not be supported and static at the same ti= me\n"); - return -EINVAL; - } - priv->ctrlmode =3D static_mode; - - /* override MTU which was set by default in can_setup()? */ - if (static_mode & CAN_CTRLMODE_FD) - dev->mtu =3D CANFD_MTU; - - return 0; -} - static inline u32 can_get_static_ctrlmode(struct can_priv *priv) { return priv->ctrlmode & ~priv->ctrlmode_supported; @@ -188,6 +167,8 @@ struct can_priv *safe_candev_priv(struct net_device *de= v); int open_candev(struct net_device *dev); void close_candev(struct net_device *dev); int can_change_mtu(struct net_device *dev, int new_mtu); +int __must_check can_set_static_ctrlmode(struct net_device *dev, + u32 static_mode); int can_eth_ioctl_hwts(struct net_device *netdev, struct ifreq *ifr, int c= md); int can_ethtool_op_get_ts_info_hwts(struct net_device *dev, struct kernel_ethtool_ts_info *info); --=20 2.49.1 From nobody Thu Oct 2 09:22:12 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 0A6E6306B13; Thu, 18 Sep 2025 12:59:36 +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=1758200377; cv=none; b=Jw43Ubf+Mxb5Py4826cLJ0e4xaWcuSkDMd8c+lXEoQTxq7pod/r9562UrWB80SLcNdzQr0Y5PE+ysakrQX5LA/g8bx0d+kMgZCFCmaen7otZBXCuQJA8AKz+4YOEUkMcLSO+s/RvrkADrOOEECikt60pL1vwUPkA2fvjUCrKuTk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758200377; c=relaxed/simple; bh=gK7abQXc0cr8q5l7D1BR+bo/xg4UM1mzmwrdqOR2Vmg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nzhLRTw3fXBWqo7sIyXxrnP3hlZVCR3Rb6DyL2V2LY5A2nXy2LQRShJUhZThin7xIPyXWcYgeQdWaLG6Mp2k2zLmAJR/FgIFr8LmUqeJY1t50807GAhLEnI0eTMFWaZmjLetWeri3isE57u/woJQH0aClthxNC0XAKIA62D3Nbk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=V+HKpYRY; 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="V+HKpYRY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D03D4C4CEE7; Thu, 18 Sep 2025 12:59:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758200376; bh=gK7abQXc0cr8q5l7D1BR+bo/xg4UM1mzmwrdqOR2Vmg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=V+HKpYRYfEVBMVoOK1kJ6evGvvOmJ9ccLpTy6jYwXp98WstRPkesnss5hcC+gVIz7 SN0xvxc7KB26xPhqq8lOQsPUtruqkGhPjkql/i52VWM+PldhI9jh3KDqFWTTAEFV28 hsIawK0cHZv8YXWXJEyGCEhcaY+aNL091qolO+xsDY3dk0RdxDZdfKQoR4XeF7oBOx vn2wuAE+ST184PxHtmn/OIJzAFYlVORU938Ey4rSC3XIJlGRyKofC8Pl0Nh3MqiK5d 8ocfL2g7FwpDdxEXJ7cC/6Rofv4DkcemujCB/OjmhEZzbCAxQpQBjBMpWycvVk7jyf ToJrYHV2tSJPQ== From: Vincent Mailhol Date: Thu, 18 Sep 2025 21:59:13 +0900 Subject: [PATCH RFC 3/5] can: populate the minimum and maximum MTU values 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: <20250918-can-fix-mtu-v1-3-471edb942295@kernel.org> References: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> In-Reply-To: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> To: Oliver Hartkopp , Marc Kleine-Budde Cc: linux-can@vger.kernel.org, linux-kernel@vger.kernel.org, Vincent Mailhol X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5070; i=mailhol@kernel.org; h=from:subject:message-id; bh=gK7abQXc0cr8q5l7D1BR+bo/xg4UM1mzmwrdqOR2Vmg=; b=owGbwMvMwCV2McXO4Xp97WbG02pJDBlnmHR/y1+5sNbSLDVllcwsk6fTm79skTpt7l+9xb345 Gt98bgTHaUsDGJcDLJiiizLyjm5FToKvcMO/bWEmcPKBDKEgYtTACaiGsfIMO/9f/vkLfN3vPjA fuf6m2mxzJ/iS58wcOaoyAjdqr1zehvDP7vKIxaasw6c9zaZ/94jN/HOkSL3zyuFrwlsEW3j3mv ynAsA X-Developer-Key: i=mailhol@kernel.org; a=openpgp; fpr=ED8F700574E67F20E574E8E2AB5FEB886DBB99C2 By populating: net_device->min_mtu and net_device->max_mtu the net core infrastructure will automatically: 1. validate that the user's inputs are in range. 2. report those min and max MTU values through the netlink interface. Add can_set_default_mtu() which will set the default mtu value as well as the minimum and maximum values. The logic for the default mtu value remains unchanged: - CANFD_MTU if the device has a static CAN_CTRLMODE_FD. - CAN_MTU otherwise. Call can_set_default_mtu() each time the CAN_CTRLMODE_FD is modified. This will guarantee that the MTU value is always consistent with the control mode flags. With this, the checks done in can_change_mtu() become fully redundant and will be removed in an upcoming change and it is now possible to confirm the minimum and maximum MTU values on a physical CAN interface by doing: $ ip --details link show can0 The virtual interfaces (vcan and vxcan) are not impacted by this change. Signed-off-by: Vincent Mailhol --- With this, when adding the CAN XL netlink interface, all we have to do is to add one if branch to can_set_default_mtu() like this: void can_set_default_mtu(struct net_device *dev) { struct can_priv *priv =3D netdev_priv(dev); if (priv->ctrlmode & CAN_CTRLMODE_XL) { dev->mtu =3D CANXL_MTU; dev->min_mtu =3D CANXL_MIN_MTU; dev->max_mtu =3D CANXL_MAX_MTU; } else if (priv->ctrlmode & CAN_CTRLMODE_FD) { dev->mtu =3D CANFD_MTU; dev->min_mtu =3D CANFD_MTU; dev->max_mtu =3D CANFD_MTU; } else { dev->mtu =3D CAN_MTU; dev->min_mtu =3D CAN_MTU; dev->max_mtu =3D CAN_MTU; } } and we will be done! --- drivers/net/can/dev/dev.c | 21 ++++++++++++++++++--- drivers/net/can/dev/netlink.c | 9 ++++----- include/linux/can/dev.h | 1 + 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/drivers/net/can/dev/dev.c b/drivers/net/can/dev/dev.c index a0ae659beedcd1fa0979662c12614ae7846032c0..69c00720e9956cad986ea86fbba= 49285d76f51db 100644 --- a/drivers/net/can/dev/dev.c +++ b/drivers/net/can/dev/dev.c @@ -239,11 +239,12 @@ EXPORT_SYMBOL_GPL(can_bus_off); void can_setup(struct net_device *dev) { dev->type =3D ARPHRD_CAN; - dev->mtu =3D CAN_MTU; dev->hard_header_len =3D 0; dev->addr_len =3D 0; dev->tx_queue_len =3D 10; =20 + can_set_default_mtu(dev); + /* New-style flags. */ dev->flags =3D IFF_NOARP; dev->features =3D NETIF_F_HW_CSUM; @@ -309,6 +310,21 @@ void free_candev(struct net_device *dev) } EXPORT_SYMBOL_GPL(free_candev); =20 +void can_set_default_mtu(struct net_device *dev) +{ + struct can_priv *priv =3D netdev_priv(dev); + + if (priv->ctrlmode & CAN_CTRLMODE_FD) { + dev->mtu =3D CANFD_MTU; + dev->min_mtu =3D CANFD_MTU; + dev->max_mtu =3D CANFD_MTU; + } else { + dev->mtu =3D CAN_MTU; + dev->min_mtu =3D CAN_MTU; + dev->max_mtu =3D CAN_MTU; + } +} + /* changing MTU and control mode for CAN/CANFD devices */ int can_change_mtu(struct net_device *dev, int new_mtu) { @@ -361,8 +377,7 @@ int can_set_static_ctrlmode(struct net_device *dev, u32= static_mode) priv->ctrlmode =3D static_mode; =20 /* override MTU which was set by default in can_setup()? */ - if (static_mode & CAN_CTRLMODE_FD) - dev->mtu =3D CANFD_MTU; + can_set_default_mtu(dev); =20 return 0; } diff --git a/drivers/net/can/dev/netlink.c b/drivers/net/can/dev/netlink.c index d9f6ab3efb9767409c318b714f19df8a30e51137..248f607e3864ffbda6f0b8daf4e= 2484179cf9cd5 100644 --- a/drivers/net/can/dev/netlink.c +++ b/drivers/net/can/dev/netlink.c @@ -223,17 +223,16 @@ static int can_changelink(struct net_device *dev, str= uct nlattr *tb[], priv->ctrlmode &=3D ~cm->mask; priv->ctrlmode |=3D maskedflags; =20 - /* CAN_CTRLMODE_FD can only be set when driver supports FD */ - if (priv->ctrlmode & CAN_CTRLMODE_FD) { - dev->mtu =3D CANFD_MTU; - } else { - dev->mtu =3D CAN_MTU; + /* Wipe potential leftovers from previous CAN FD config */ + if (!(priv->ctrlmode & CAN_CTRLMODE_FD)) { memset(&priv->fd.data_bittiming, 0, sizeof(priv->fd.data_bittiming)); priv->ctrlmode &=3D ~CAN_CTRLMODE_FD_TDC_MASK; memset(&priv->fd.tdc, 0, sizeof(priv->fd.tdc)); } =20 + can_set_default_mtu(dev); + fd_tdc_flag_provided =3D cm->mask & CAN_CTRLMODE_FD_TDC_MASK; /* CAN_CTRLMODE_TDC_{AUTO,MANUAL} are mutually * exclusive: make sure to turn the other one off diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h index 5dc58360c2d74a1711d4e02d28fe52ae20b146e0..3354f70ed2c684d7d482549560d= 4cb5838cbebd5 100644 --- a/include/linux/can/dev.h +++ b/include/linux/can/dev.h @@ -166,6 +166,7 @@ struct can_priv *safe_candev_priv(struct net_device *de= v); =20 int open_candev(struct net_device *dev); void close_candev(struct net_device *dev); +void can_set_default_mtu(struct net_device *dev); int can_change_mtu(struct net_device *dev, int new_mtu); int __must_check can_set_static_ctrlmode(struct net_device *dev, u32 static_mode); --=20 2.49.1 From nobody Thu Oct 2 09:22:12 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 2AD5E30507B; Thu, 18 Sep 2025 12:59:37 +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=1758200378; cv=none; b=a3N3XT0UjQPQHu29r7VXEsL5nqe5E6p+zP+VttQz+RajVmMSPwJjDLyEhmUQAG6lhgd5cxuAhErPOFczXsMVApr5S1RMmOZyItGPW4CKo1WRiZyWlOqJhbxiDk0bDiTtllt21xZt3lDvniJqEdD6XGwmAbl3IpnRRzNY4kPvXYY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758200378; c=relaxed/simple; bh=8e4AH5cMTHHcqjoFLfIew9bWw0KbjnDI78BfLcnDKcE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iQEJP9BcWKdRBr47Ktk0ChhVyIeJnVC21X9Duz2ZTmvbYygPVxEaIsZ9Sfap1KojSBqpzMgsH6CGQW9kyFT7eepyP0MtlKAGscCGHBb64w73PeIZU0e10BycK3Xb28+lcaFDaT+jIfWZNYsCv0oEXWVzNAiNWIMoGuJRrkkiFU4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rTAe/rcD; 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="rTAe/rcD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DDAA9C4CEEB; Thu, 18 Sep 2025 12:59:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758200377; bh=8e4AH5cMTHHcqjoFLfIew9bWw0KbjnDI78BfLcnDKcE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=rTAe/rcDFjTREakgABUjVvyBYijhbRyEJSdTUmVSTIwfa5iQduY8OA1cTmYejU82p JctZ/uh46Q7LTtohmg+7eXsm2gGRR05chg1ucYZa712O7HfR77Kvk3AIjAZ04ycW0t gzTFqrcMEShu/u5M0jXgqbl6CYAek7rCLJByAyC1Y87Ppdaa0z18GJaE3vBRrO/E/y 1q61Y+T8bUpdKs0PmylpY7Dsnz3lWLQLosBPkncGhc2y9F6XvNAv4TD1C54otrz+Xj hUrDnsFsiobys+y2A8h+WgqPEYMfoz7hnDiA5kcDa7ABMdBNHcVScfHtDkW5f/VenN DScjvdH/tw+gg== From: Vincent Mailhol Date: Thu, 18 Sep 2025 21:59:14 +0900 Subject: [PATCH RFC 4/5] can: treewide: remove can_change_mtu() 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: <20250918-can-fix-mtu-v1-4-471edb942295@kernel.org> References: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> In-Reply-To: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> To: Oliver Hartkopp , Marc Kleine-Budde Cc: linux-can@vger.kernel.org, linux-kernel@vger.kernel.org, Vincent Mailhol X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=25252; i=mailhol@kernel.org; h=from:subject:message-id; bh=8e4AH5cMTHHcqjoFLfIew9bWw0KbjnDI78BfLcnDKcE=; b=owGbwMvMwCV2McXO4Xp97WbG02pJDBlnmAzOHj6XeeJe1cYEw9LDGrHzLuwO0an/42V26Nk9+ f2lTqlRHaUsDGJcDLJiiizLyjm5FToKvcMO/bWEmcPKBDKEgYtTACbys5WR4YX59dwkY+n03jsV 9svuXJ7NZWZjevPAw00MSq9NTwYyv2P4Z+Lt2zX78oKv0latoX+0H/DKFAecSXh+c06mUc2adQu fMAMA X-Developer-Key: i=mailhol@kernel.org; a=openpgp; fpr=ED8F700574E67F20E574E8E2AB5FEB886DBB99C2 can_change_mtu() became obsolete by the previous patch. Now that net_device->min_mtu and net_device->max_mtu are populated, all the checks are already done by dev_validate_mtu() in net/core/dev.c. Remove can_change_mtu() and remove the net_device_ops->ndo_change_mtu() callback of all the physical interfaces. Only keep the vcan_change_mtu() and vxcan_change_mtu() because the virtual interfaces use their own different logic. Signed-off-by: Vincent Mailhol --- drivers/net/can/at91_can.c | 1 - drivers/net/can/bxcan.c | 1 - drivers/net/can/c_can/c_can_main.c | 1 - drivers/net/can/can327.c | 1 - drivers/net/can/cc770/cc770.c | 1 - drivers/net/can/ctucanfd/ctucanfd_base.c | 1 - drivers/net/can/dev/dev.c | 38 ------------------= ---- drivers/net/can/esd/esd_402_pci-core.c | 1 - drivers/net/can/flexcan/flexcan-core.c | 1 - drivers/net/can/grcan.c | 1 - drivers/net/can/ifi_canfd/ifi_canfd.c | 1 - drivers/net/can/janz-ican3.c | 1 - drivers/net/can/kvaser_pciefd/kvaser_pciefd_core.c | 1 - drivers/net/can/m_can/m_can.c | 1 - drivers/net/can/mscan/mscan.c | 1 - drivers/net/can/peak_canfd/peak_canfd.c | 1 - drivers/net/can/rcar/rcar_can.c | 1 - drivers/net/can/rcar/rcar_canfd.c | 1 - drivers/net/can/rockchip/rockchip_canfd-core.c | 1 - drivers/net/can/sja1000/sja1000.c | 1 - drivers/net/can/slcan/slcan-core.c | 1 - drivers/net/can/softing/softing_main.c | 1 - drivers/net/can/spi/hi311x.c | 1 - drivers/net/can/spi/mcp251x.c | 1 - drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 1 - drivers/net/can/sun4i_can.c | 1 - drivers/net/can/ti_hecc.c | 1 - drivers/net/can/usb/ems_usb.c | 1 - drivers/net/can/usb/esd_usb.c | 1 - drivers/net/can/usb/etas_es58x/es58x_core.c | 1 - drivers/net/can/usb/f81604.c | 1 - drivers/net/can/usb/gs_usb.c | 1 - drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 1 - drivers/net/can/usb/mcba_usb.c | 1 - drivers/net/can/usb/peak_usb/pcan_usb_core.c | 1 - drivers/net/can/usb/ucan.c | 1 - drivers/net/can/usb/usb_8dev.c | 1 - drivers/net/can/xilinx_can.c | 1 - include/linux/can/dev.h | 1 - 39 files changed, 76 deletions(-) diff --git a/drivers/net/can/at91_can.c b/drivers/net/can/at91_can.c index 191707d7e3dac2b816575b9232178a171559a494..c2a3a4eef5b281f6723e3fa7a40= bba1a1d623a54 100644 --- a/drivers/net/can/at91_can.c +++ b/drivers/net/can/at91_can.c @@ -948,7 +948,6 @@ static const struct net_device_ops at91_netdev_ops =3D { .ndo_open =3D at91_open, .ndo_stop =3D at91_close, .ndo_start_xmit =3D at91_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops at91_ethtool_ops =3D { diff --git a/drivers/net/can/bxcan.c b/drivers/net/can/bxcan.c index bfc60eb33dc3752722909c3cf6bffad29696f851..9c3af7049814385501bfd950c35= c90ccfc42a2e8 100644 --- a/drivers/net/can/bxcan.c +++ b/drivers/net/can/bxcan.c @@ -881,7 +881,6 @@ static const struct net_device_ops bxcan_netdev_ops =3D= { .ndo_open =3D bxcan_open, .ndo_stop =3D bxcan_stop, .ndo_start_xmit =3D bxcan_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops bxcan_ethtool_ops =3D { diff --git a/drivers/net/can/c_can/c_can_main.c b/drivers/net/can/c_can/c_c= an_main.c index cc371d0c9f3c769051ff1e0a8954d8c52dbcdbf6..3702cac7fbf0f08a509cf65f388= c8707ed196fef 100644 --- a/drivers/net/can/c_can/c_can_main.c +++ b/drivers/net/can/c_can/c_can_main.c @@ -1362,7 +1362,6 @@ static const struct net_device_ops c_can_netdev_ops = =3D { .ndo_open =3D c_can_open, .ndo_stop =3D c_can_close, .ndo_start_xmit =3D c_can_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 int register_c_can_dev(struct net_device *dev) diff --git a/drivers/net/can/can327.c b/drivers/net/can/can327.c index 24af639610309dd2a3372151782b8c9a32306306..b66fc16aedd2cc23f65ef3bf3d7= f9e1a7c24d395 100644 --- a/drivers/net/can/can327.c +++ b/drivers/net/can/can327.c @@ -849,7 +849,6 @@ static const struct net_device_ops can327_netdev_ops = =3D { .ndo_open =3D can327_netdev_open, .ndo_stop =3D can327_netdev_close, .ndo_start_xmit =3D can327_netdev_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops can327_ethtool_ops =3D { diff --git a/drivers/net/can/cc770/cc770.c b/drivers/net/can/cc770/cc770.c index 30909f3aab576fb8eefb46b83f0aeca2fa7ffda1..8d5abd643c068e9f4d5a1eba8f3= b0ce6a21c9de8 100644 --- a/drivers/net/can/cc770/cc770.c +++ b/drivers/net/can/cc770/cc770.c @@ -834,7 +834,6 @@ static const struct net_device_ops cc770_netdev_ops =3D= { .ndo_open =3D cc770_open, .ndo_stop =3D cc770_close, .ndo_start_xmit =3D cc770_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops cc770_ethtool_ops =3D { diff --git a/drivers/net/can/ctucanfd/ctucanfd_base.c b/drivers/net/can/ctu= canfd/ctucanfd_base.c index 8bd3f0fc385c3096e21aca20244e4ce04cf5708c..1e6b9e3dc2fea42801291cea75d= 55c268b0f3a41 100644 --- a/drivers/net/can/ctucanfd/ctucanfd_base.c +++ b/drivers/net/can/ctucanfd/ctucanfd_base.c @@ -1301,7 +1301,6 @@ static const struct net_device_ops ctucan_netdev_ops = =3D { .ndo_open =3D ctucan_open, .ndo_stop =3D ctucan_close, .ndo_start_xmit =3D ctucan_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops ctucan_ethtool_ops =3D { diff --git a/drivers/net/can/dev/dev.c b/drivers/net/can/dev/dev.c index 69c00720e9956cad986ea86fbba49285d76f51db..dcee4af436f4de837344fdf7965= f7aa99f52df14 100644 --- a/drivers/net/can/dev/dev.c +++ b/drivers/net/can/dev/dev.c @@ -325,44 +325,6 @@ void can_set_default_mtu(struct net_device *dev) } } =20 -/* changing MTU and control mode for CAN/CANFD devices */ -int can_change_mtu(struct net_device *dev, int new_mtu) -{ - struct can_priv *priv =3D netdev_priv(dev); - u32 ctrlmode_static =3D can_get_static_ctrlmode(priv); - - /* Do not allow changing the MTU while running */ - if (dev->flags & IFF_UP) - return -EBUSY; - - /* allow change of MTU according to the CANFD ability of the device */ - switch (new_mtu) { - case CAN_MTU: - /* 'CANFD-only' controllers can not switch to CAN_MTU */ - if (ctrlmode_static & CAN_CTRLMODE_FD) - return -EINVAL; - - priv->ctrlmode &=3D ~CAN_CTRLMODE_FD; - break; - - case CANFD_MTU: - /* check for potential CANFD ability */ - if (!(priv->ctrlmode_supported & CAN_CTRLMODE_FD) && - !(ctrlmode_static & CAN_CTRLMODE_FD)) - return -EINVAL; - - priv->ctrlmode |=3D CAN_CTRLMODE_FD; - break; - - default: - return -EINVAL; - } - - WRITE_ONCE(dev->mtu, new_mtu); - return 0; -} -EXPORT_SYMBOL_GPL(can_change_mtu); - /* helper to define static CAN controller features at device creation time= */ int can_set_static_ctrlmode(struct net_device *dev, u32 static_mode) { diff --git a/drivers/net/can/esd/esd_402_pci-core.c b/drivers/net/can/esd/e= sd_402_pci-core.c index 5d6d2828cd0458bc87c9e5fbab1fd0c41a970cdd..05adecae63757b80b2b419e5831= d0d7a671ae545 100644 --- a/drivers/net/can/esd/esd_402_pci-core.c +++ b/drivers/net/can/esd/esd_402_pci-core.c @@ -86,7 +86,6 @@ static const struct net_device_ops pci402_acc_netdev_ops = =3D { .ndo_open =3D acc_open, .ndo_stop =3D acc_close, .ndo_start_xmit =3D acc_start_xmit, - .ndo_change_mtu =3D can_change_mtu, .ndo_eth_ioctl =3D can_eth_ioctl_hwts, }; =20 diff --git a/drivers/net/can/flexcan/flexcan-core.c b/drivers/net/can/flexc= an/flexcan-core.c index 06d5d35fc1b550d51dd92211340e9d71aa7f002c..f5d22c61503faa4fc20415aeaca= 22b6f25b8aa83 100644 --- a/drivers/net/can/flexcan/flexcan-core.c +++ b/drivers/net/can/flexcan/flexcan-core.c @@ -1867,7 +1867,6 @@ static const struct net_device_ops flexcan_netdev_ops= =3D { .ndo_open =3D flexcan_open, .ndo_stop =3D flexcan_close, .ndo_start_xmit =3D flexcan_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static int register_flexcandev(struct net_device *dev) diff --git a/drivers/net/can/grcan.c b/drivers/net/can/grcan.c index c5784d9779ef518ac253e66923ef542d52584373..3b1b09943436fab13024f88f7bf= 2cc67b1e11926 100644 --- a/drivers/net/can/grcan.c +++ b/drivers/net/can/grcan.c @@ -1561,7 +1561,6 @@ static const struct net_device_ops grcan_netdev_ops = =3D { .ndo_open =3D grcan_open, .ndo_stop =3D grcan_close, .ndo_start_xmit =3D grcan_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops grcan_ethtool_ops =3D { diff --git a/drivers/net/can/ifi_canfd/ifi_canfd.c b/drivers/net/can/ifi_ca= nfd/ifi_canfd.c index 2eeee65f606f37d8f1c1f1b8002daf8a12c93248..0f83335e4d075ed4c2a178efb4e= a097f3c846d2a 100644 --- a/drivers/net/can/ifi_canfd/ifi_canfd.c +++ b/drivers/net/can/ifi_canfd/ifi_canfd.c @@ -944,7 +944,6 @@ static const struct net_device_ops ifi_canfd_netdev_ops= =3D { .ndo_open =3D ifi_canfd_open, .ndo_stop =3D ifi_canfd_close, .ndo_start_xmit =3D ifi_canfd_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops ifi_canfd_ethtool_ops =3D { diff --git a/drivers/net/can/janz-ican3.c b/drivers/net/can/janz-ican3.c index bfa5cbe88017d42a61caa20d22e25084f1a9656a..1efdd1fd8caa424bf4d42ed3985= f4b39e1c118da 100644 --- a/drivers/net/can/janz-ican3.c +++ b/drivers/net/can/janz-ican3.c @@ -1752,7 +1752,6 @@ static const struct net_device_ops ican3_netdev_ops = =3D { .ndo_open =3D ican3_open, .ndo_stop =3D ican3_stop, .ndo_start_xmit =3D ican3_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops ican3_ethtool_ops =3D { diff --git a/drivers/net/can/kvaser_pciefd/kvaser_pciefd_core.c b/drivers/n= et/can/kvaser_pciefd/kvaser_pciefd_core.c index 0880023611bebeef671ad1d9b9921d30b8193dd2..705f9bb74cd23c9c6a5f34fd7c0= f7a529d0535d0 100644 --- a/drivers/net/can/kvaser_pciefd/kvaser_pciefd_core.c +++ b/drivers/net/can/kvaser_pciefd/kvaser_pciefd_core.c @@ -904,7 +904,6 @@ static const struct net_device_ops kvaser_pciefd_netdev= _ops =3D { .ndo_stop =3D kvaser_pciefd_stop, .ndo_eth_ioctl =3D can_eth_ioctl_hwts, .ndo_start_xmit =3D kvaser_pciefd_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static int kvaser_pciefd_set_phys_id(struct net_device *netdev, diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index fe74dbd2c9663b7090678ab78318698d50ffb481..0e043aee045b40f11559f5a7728= dad440dc3e85a 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2129,7 +2129,6 @@ static const struct net_device_ops m_can_netdev_ops = =3D { .ndo_open =3D m_can_open, .ndo_stop =3D m_can_close, .ndo_start_xmit =3D m_can_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static int m_can_get_coalesce(struct net_device *dev, diff --git a/drivers/net/can/mscan/mscan.c b/drivers/net/can/mscan/mscan.c index 8c2a7bc64d3d714d33445ebbff5fa41218d68b1f..39c7aa2a0b2f8e1d61745136ee6= 94dd5e50724fd 100644 --- a/drivers/net/can/mscan/mscan.c +++ b/drivers/net/can/mscan/mscan.c @@ -607,7 +607,6 @@ static const struct net_device_ops mscan_netdev_ops =3D= { .ndo_open =3D mscan_open, .ndo_stop =3D mscan_close, .ndo_start_xmit =3D mscan_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops mscan_ethtool_ops =3D { diff --git a/drivers/net/can/peak_canfd/peak_canfd.c b/drivers/net/can/peak= _canfd/peak_canfd.c index 77292afaed227878fb9fb4b86199b28892bbc5ca..8cb642011235168d04028183dab= 67205630d2621 100644 --- a/drivers/net/can/peak_canfd/peak_canfd.c +++ b/drivers/net/can/peak_canfd/peak_canfd.c @@ -773,7 +773,6 @@ static const struct net_device_ops peak_canfd_netdev_op= s =3D { .ndo_stop =3D peak_canfd_close, .ndo_eth_ioctl =3D peak_eth_ioctl, .ndo_start_xmit =3D peak_canfd_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static int peak_get_ts_info(struct net_device *dev, diff --git a/drivers/net/can/rcar/rcar_can.c b/drivers/net/can/rcar/rcar_ca= n.c index 87c134bcd48db559db45c901a12c40cef00dcde4..f157529a4934d6394abaed292e8= 8816e21e8d439 100644 --- a/drivers/net/can/rcar/rcar_can.c +++ b/drivers/net/can/rcar/rcar_can.c @@ -628,7 +628,6 @@ static const struct net_device_ops rcar_can_netdev_ops = =3D { .ndo_open =3D rcar_can_open, .ndo_stop =3D rcar_can_close, .ndo_start_xmit =3D rcar_can_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops rcar_can_ethtool_ops =3D { diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_= canfd.c index b3c8c592fb0e04edfef30989c3df659ad772a80f..bc0ddf31d21dd2b33726c34f7ac= b49e11c2a904a 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -1810,7 +1810,6 @@ static const struct net_device_ops rcar_canfd_netdev_= ops =3D { .ndo_open =3D rcar_canfd_open, .ndo_stop =3D rcar_canfd_close, .ndo_start_xmit =3D rcar_canfd_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops rcar_canfd_ethtool_ops =3D { diff --git a/drivers/net/can/rockchip/rockchip_canfd-core.c b/drivers/net/c= an/rockchip/rockchip_canfd-core.c index 046f0a0ae4d4b06a076f9a72b9ad6603fa0ac31e..29de0c01e4edcf1a725a27dd47b= 5b61c0807b0be 100644 --- a/drivers/net/can/rockchip/rockchip_canfd-core.c +++ b/drivers/net/can/rockchip/rockchip_canfd-core.c @@ -761,7 +761,6 @@ static const struct net_device_ops rkcanfd_netdev_ops = =3D { .ndo_open =3D rkcanfd_open, .ndo_stop =3D rkcanfd_stop, .ndo_start_xmit =3D rkcanfd_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static int __maybe_unused rkcanfd_runtime_suspend(struct device *dev) diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sj= a1000.c index 4d245857ef1cec0ae1ee82008b96912bbb1f2638..acfa49db3907ed2eeed748e0661= c45a8e167c756 100644 --- a/drivers/net/can/sja1000/sja1000.c +++ b/drivers/net/can/sja1000/sja1000.c @@ -697,7 +697,6 @@ static const struct net_device_ops sja1000_netdev_ops = =3D { .ndo_open =3D sja1000_open, .ndo_stop =3D sja1000_close, .ndo_start_xmit =3D sja1000_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops sja1000_ethtool_ops =3D { diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slc= an-core.c index 58ff2ec1d9757e0ce55ce73b85e1884937a73d72..cd789e178d34bbbf3297f59823b= 90a0e1612ba37 100644 --- a/drivers/net/can/slcan/slcan-core.c +++ b/drivers/net/can/slcan/slcan-core.c @@ -774,7 +774,6 @@ static const struct net_device_ops slcan_netdev_ops =3D= { .ndo_open =3D slcan_netdev_open, .ndo_stop =3D slcan_netdev_close, .ndo_start_xmit =3D slcan_netdev_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 /****************************************** diff --git a/drivers/net/can/softing/softing_main.c b/drivers/net/can/softi= ng/softing_main.c index 278ee8722770c252a2df20c7f3cd61a895a31b59..79bc64395ac4608fd1a1f9f4dea= c7b1f4b9a497b 100644 --- a/drivers/net/can/softing/softing_main.c +++ b/drivers/net/can/softing/softing_main.c @@ -609,7 +609,6 @@ static const struct net_device_ops softing_netdev_ops = =3D { .ndo_open =3D softing_netdev_open, .ndo_stop =3D softing_netdev_stop, .ndo_start_xmit =3D softing_netdev_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops softing_ethtool_ops =3D { diff --git a/drivers/net/can/spi/hi311x.c b/drivers/net/can/spi/hi311x.c index 6441ff3b4198718e8e662daa3022f06a2405f322..09ae218315d73d49c2ec4280707= 911966fce1c31 100644 --- a/drivers/net/can/spi/hi311x.c +++ b/drivers/net/can/spi/hi311x.c @@ -812,7 +812,6 @@ static const struct net_device_ops hi3110_netdev_ops = =3D { .ndo_open =3D hi3110_open, .ndo_stop =3D hi3110_stop, .ndo_start_xmit =3D hi3110_hard_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops hi3110_ethtool_ops =3D { diff --git a/drivers/net/can/spi/mcp251x.c b/drivers/net/can/spi/mcp251x.c index 313e1d241f0110ccee900c3f17e479ff1a4a1919..1075c9015f6b2c83c2cdc1c5c56= 5879b50433020 100644 --- a/drivers/net/can/spi/mcp251x.c +++ b/drivers/net/can/spi/mcp251x.c @@ -1270,7 +1270,6 @@ static const struct net_device_ops mcp251x_netdev_ops= =3D { .ndo_open =3D mcp251x_open, .ndo_stop =3D mcp251x_stop, .ndo_start_xmit =3D mcp251x_hard_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops mcp251x_ethtool_ops =3D { diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/c= an/spi/mcp251xfd/mcp251xfd-core.c index 7450ea42c1ea51a908d1e016aacbf67c4e71c57f..9402530ba3d48beaa59ccefb929= a4fd35290bd01 100644 --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c @@ -1715,7 +1715,6 @@ static const struct net_device_ops mcp251xfd_netdev_o= ps =3D { .ndo_stop =3D mcp251xfd_stop, .ndo_start_xmit =3D mcp251xfd_start_xmit, .ndo_eth_ioctl =3D can_eth_ioctl_hwts, - .ndo_change_mtu =3D can_change_mtu, }; =20 static void diff --git a/drivers/net/can/sun4i_can.c b/drivers/net/can/sun4i_can.c index 53bfd873de9bdecaf6923049007f9efd71289dd3..6fcb301ef611d0c8bdb8720aaa7= 7dc78950123d6 100644 --- a/drivers/net/can/sun4i_can.c +++ b/drivers/net/can/sun4i_can.c @@ -768,7 +768,6 @@ static const struct net_device_ops sun4ican_netdev_ops = =3D { .ndo_open =3D sun4ican_open, .ndo_stop =3D sun4ican_close, .ndo_start_xmit =3D sun4ican_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops sun4ican_ethtool_ops =3D { diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c index e6d6661a908ab12eb4c7ec61c162848c18ef20f4..1d3dbf28b1057c50effc43c488e= 472bbc71de9ca 100644 --- a/drivers/net/can/ti_hecc.c +++ b/drivers/net/can/ti_hecc.c @@ -829,7 +829,6 @@ static const struct net_device_ops ti_hecc_netdev_ops = =3D { .ndo_open =3D ti_hecc_open, .ndo_stop =3D ti_hecc_close, .ndo_start_xmit =3D ti_hecc_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops ti_hecc_ethtool_ops =3D { diff --git a/drivers/net/can/usb/ems_usb.c b/drivers/net/can/usb/ems_usb.c index 5355bac4dccbe0e31ba115909b0537a9b92c2fa6..de8e212a1366b4367e9abb6ae70= 2769e399b45bc 100644 --- a/drivers/net/can/usb/ems_usb.c +++ b/drivers/net/can/usb/ems_usb.c @@ -885,7 +885,6 @@ static const struct net_device_ops ems_usb_netdev_ops = =3D { .ndo_open =3D ems_usb_open, .ndo_stop =3D ems_usb_close, .ndo_start_xmit =3D ems_usb_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops ems_usb_ethtool_ops =3D { diff --git a/drivers/net/can/usb/esd_usb.c b/drivers/net/can/usb/esd_usb.c index 27a3818885c2ca7451e9ce959b06e6e15e70a4a6..a9418341dbf61630bd90dbf7668= 9170f775bad9a 100644 --- a/drivers/net/can/usb/esd_usb.c +++ b/drivers/net/can/usb/esd_usb.c @@ -991,7 +991,6 @@ static const struct net_device_ops esd_usb_netdev_ops = =3D { .ndo_open =3D esd_usb_open, .ndo_stop =3D esd_usb_close, .ndo_start_xmit =3D esd_usb_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops esd_usb_ethtool_ops =3D { diff --git a/drivers/net/can/usb/etas_es58x/es58x_core.c b/drivers/net/can/= usb/etas_es58x/es58x_core.c index adc91873c083f968ff7571a5b0db5747988482c5..47d9e03f304495db90e7d69bd13= 5aaaa4a8d01ed 100644 --- a/drivers/net/can/usb/etas_es58x/es58x_core.c +++ b/drivers/net/can/usb/etas_es58x/es58x_core.c @@ -1977,7 +1977,6 @@ static const struct net_device_ops es58x_netdev_ops = =3D { .ndo_stop =3D es58x_stop, .ndo_start_xmit =3D es58x_start_xmit, .ndo_eth_ioctl =3D can_eth_ioctl_hwts, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops es58x_ethtool_ops =3D { diff --git a/drivers/net/can/usb/f81604.c b/drivers/net/can/usb/f81604.c index e0cfa1460b0b83110d5ce7ffe07bac442ce8a682..efe61ece79ea251056fd44d208d= e145e24eedf16 100644 --- a/drivers/net/can/usb/f81604.c +++ b/drivers/net/can/usb/f81604.c @@ -1052,7 +1052,6 @@ static const struct net_device_ops f81604_netdev_ops = =3D { .ndo_open =3D f81604_open, .ndo_stop =3D f81604_close, .ndo_start_xmit =3D f81604_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct can_bittiming_const f81604_bittiming_const =3D { diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c index c9482d6e947b0c7b033dc4f0c35f5b111e1bfd92..aea35aa15a7cd667df04e047b42= cc949d8b27fbb 100644 --- a/drivers/net/can/usb/gs_usb.c +++ b/drivers/net/can/usb/gs_usb.c @@ -1105,7 +1105,6 @@ static const struct net_device_ops gs_usb_netdev_ops = =3D { .ndo_open =3D gs_can_open, .ndo_stop =3D gs_can_close, .ndo_start_xmit =3D gs_can_start_xmit, - .ndo_change_mtu =3D can_change_mtu, .ndo_eth_ioctl =3D gs_can_eth_ioctl, }; =20 diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c b/drivers/net= /can/usb/kvaser_usb/kvaser_usb_core.c index 90e77fa0ff4a58b25eec33e0f9ffcb54dab97438..89e22b66f91929ac1785b18289c= b7669cfa2aaef 100644 --- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c +++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c @@ -786,7 +786,6 @@ static const struct net_device_ops kvaser_usb_netdev_op= s =3D { .ndo_stop =3D kvaser_usb_close, .ndo_eth_ioctl =3D can_eth_ioctl_hwts, .ndo_start_xmit =3D kvaser_usb_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops kvaser_usb_ethtool_ops =3D { diff --git a/drivers/net/can/usb/mcba_usb.c b/drivers/net/can/usb/mcba_usb.c index 1f9b915094e64de875adff35026e9cd3beb0410d..41c0a1c399bf36104fbf8991b53= 7acdb01e7e950 100644 --- a/drivers/net/can/usb/mcba_usb.c +++ b/drivers/net/can/usb/mcba_usb.c @@ -761,7 +761,6 @@ static const struct net_device_ops mcba_netdev_ops =3D { .ndo_open =3D mcba_usb_open, .ndo_stop =3D mcba_usb_close, .ndo_start_xmit =3D mcba_usb_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops mcba_ethtool_ops =3D { diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.c b/drivers/net/can= /usb/peak_usb/pcan_usb_core.c index 117637b9b995b9e7aa8f313574cf9e0a9929e93d..7903de379de36f862209f2ee9a1= 9e26e0026c336 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c @@ -814,7 +814,6 @@ static const struct net_device_ops peak_usb_netdev_ops = =3D { .ndo_stop =3D peak_usb_ndo_stop, .ndo_eth_ioctl =3D peak_eth_ioctl, .ndo_start_xmit =3D peak_usb_ndo_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 /* CAN-USB devices generally handle 32-bit CAN channel IDs. diff --git a/drivers/net/can/usb/ucan.c b/drivers/net/can/usb/ucan.c index 07406daf7c88ed64edbe501a87b259b77053be93..de61d9da99e359c3d3b0293302a= 72c96aabc1bb2 100644 --- a/drivers/net/can/usb/ucan.c +++ b/drivers/net/can/usb/ucan.c @@ -1233,7 +1233,6 @@ static const struct net_device_ops ucan_netdev_ops = =3D { .ndo_open =3D ucan_open, .ndo_stop =3D ucan_close, .ndo_start_xmit =3D ucan_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops ucan_ethtool_ops =3D { diff --git a/drivers/net/can/usb/usb_8dev.c b/drivers/net/can/usb/usb_8dev.c index 8a5596ce4e46312e6080a424e0107e0c22595267..7449328f7cd7279bc259eb74613= 1586f70bb1c0f 100644 --- a/drivers/net/can/usb/usb_8dev.c +++ b/drivers/net/can/usb/usb_8dev.c @@ -868,7 +868,6 @@ static const struct net_device_ops usb_8dev_netdev_ops = =3D { .ndo_open =3D usb_8dev_open, .ndo_stop =3D usb_8dev_close, .ndo_start_xmit =3D usb_8dev_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops usb_8dev_ethtool_ops =3D { diff --git a/drivers/net/can/xilinx_can.c b/drivers/net/can/xilinx_can.c index a25a3ca62c12e3a0a5674581c3787595e543d843..43d7f22820b88efcdba2ed5f091= 8c724b3bdd973 100644 --- a/drivers/net/can/xilinx_can.c +++ b/drivers/net/can/xilinx_can.c @@ -1702,7 +1702,6 @@ static const struct net_device_ops xcan_netdev_ops = =3D { .ndo_open =3D xcan_open, .ndo_stop =3D xcan_close, .ndo_start_xmit =3D xcan_start_xmit, - .ndo_change_mtu =3D can_change_mtu, }; =20 static const struct ethtool_ops xcan_ethtool_ops =3D { diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h index 3354f70ed2c684d7d482549560d4cb5838cbebd5..48a6851b047fd339a87e96cadda= 8d5e39b2e8c73 100644 --- a/include/linux/can/dev.h +++ b/include/linux/can/dev.h @@ -167,7 +167,6 @@ struct can_priv *safe_candev_priv(struct net_device *de= v); int open_candev(struct net_device *dev); void close_candev(struct net_device *dev); void can_set_default_mtu(struct net_device *dev); -int can_change_mtu(struct net_device *dev, int new_mtu); int __must_check can_set_static_ctrlmode(struct net_device *dev, u32 static_mode); int can_eth_ioctl_hwts(struct net_device *netdev, struct ifreq *ifr, int c= md); --=20 2.49.1 From nobody Thu Oct 2 09:22:12 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 E6E0B307493; Thu, 18 Sep 2025 12:59:38 +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=1758200379; cv=none; b=bPuNyVoewugpRGEo3O0qj2Y6tSH6zCkyfugo/zJenubBC/nABs3xOOL6Lcpq2b23sAyIuPe5PJEYw8ifxt12wqwiKlpOi2sCKOS3GqH7D3Z//7vdKuq96E82JSOlUq2Ux00KaF55YrqsdWGMWKsMi/+cZG2Y8hcx2/sED2jWLS8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758200379; c=relaxed/simple; bh=2/MlNtQVs67BhcBQu3mBYH5/+H7qem0YfGtT2lPXmQw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sRJvmUbX/61obVYdMBZ3jXtjnW644N8lfQGswHLlNTjtubADnqexuGiBsuvhOpZzNwh7dV/bShpolluvEjHx2PPBSxXGydi+GywSULeflI1NzLQwItf7xcJzYpVKN1nli0CT5aanFuQZyRnIOyP+16dck6Ig+MZQ8n8nT/ZxAD4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ALuUE+wF; 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="ALuUE+wF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 15DC0C4CEFB; Thu, 18 Sep 2025 12:59:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758200378; bh=2/MlNtQVs67BhcBQu3mBYH5/+H7qem0YfGtT2lPXmQw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ALuUE+wF4QyR07v7KLfnr6Stu0SlzmPIlubjM1KQhcSMD3CV3f9CU6HYXgdUyZ0+M EjbZCOC7NWjnvbJ1YaXgySORyqauILrE53XBUcvl/E2xTpsFdunzzreDEtqbICtNN9 hxUaJgfihQaxGfhS9C31mJ2eVzkkL/G5Mj5t2KtfXyFMxCijwDz15lWt5jjfMtRkiY zILPIJiTv7z0/FbFug6FsZVH5bENN4Nv+Bi0wO+QY8y++y+/FAfhXcaQzbOL86VcMi Sc/bcyrxwPXjX+B7UG8MRGHxC3Ltn8PAfVaA95LzxLMbkIpdyd5zEb59PcYqjWQXqE H+qBHGxgP6Nqw== From: Vincent Mailhol Date: Thu, 18 Sep 2025 21:59:15 +0900 Subject: [PATCH RFC 5/5] can: enable CAN XL for virtual CAN devices by default 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: <20250918-can-fix-mtu-v1-5-471edb942295@kernel.org> References: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> In-Reply-To: <20250918-can-fix-mtu-v1-0-471edb942295@kernel.org> To: Oliver Hartkopp , Marc Kleine-Budde Cc: linux-can@vger.kernel.org, linux-kernel@vger.kernel.org, Vincent Mailhol X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1737; i=mailhol@kernel.org; h=from:subject:message-id; bh=2/MlNtQVs67BhcBQu3mBYH5/+H7qem0YfGtT2lPXmQw=; b=owGbwMvMwCV2McXO4Xp97WbG02pJDBlnmIyurpvtpM+gttg4QlpwkiLPO1PxeEV9hu2OWqEvf ayT38p1lLIwiHExyIopsiwr5+RW6Cj0Djv01xJmDisTyBAGLk4BmEjTBUaGRZqvrnvEBP/xMbE1 5Fy1+J99plFU1c0mtfBADu9/gfn9DP9U1+T8XFzO+YSnYsW5H9MsDB7V3G+0jrTnFN9iG/Rtuys rAA== X-Developer-Key: i=mailhol@kernel.org; a=openpgp; fpr=ED8F700574E67F20E574E8E2AB5FEB886DBB99C2 In commit 97edec3a11cf ("can: enable CAN FD for virtual CAN devices by default"), vcan and vxcan default MTU was set to CANFD_MTU by default. The reason was that users were confused on how to activate CAN FD on virtual interfaces. Following the introduction of CAN XL, the same logic should be applied. Set the MTU to CANXL_MTU by default. The users who really wish to use a Classical CAN only or a CAN FD virtual device can do respectively: $ ip link set vcan0 mtu 16 or $ ip link set vcan0 mtu 72 to force the old behaviour. Signed-off-by: Vincent Mailhol --- drivers/net/can/vcan.c | 2 +- drivers/net/can/vxcan.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/can/vcan.c b/drivers/net/can/vcan.c index f67e858071007acd5f34fa00a76212f1a77997a6..fdc662aea2798125b3aa373f099= 58363b427ced2 100644 --- a/drivers/net/can/vcan.c +++ b/drivers/net/can/vcan.c @@ -156,7 +156,7 @@ static const struct ethtool_ops vcan_ethtool_ops =3D { static void vcan_setup(struct net_device *dev) { dev->type =3D ARPHRD_CAN; - dev->mtu =3D CANFD_MTU; + dev->mtu =3D CANXL_MTU; dev->hard_header_len =3D 0; dev->addr_len =3D 0; dev->tx_queue_len =3D 0; diff --git a/drivers/net/can/vxcan.c b/drivers/net/can/vxcan.c index 99a78a75716749bf858cc78eadb41ca2588fcf94..b2c19f8c5f8e5101b8be343401a= fe9a4f388c4da 100644 --- a/drivers/net/can/vxcan.c +++ b/drivers/net/can/vxcan.c @@ -156,7 +156,7 @@ static void vxcan_setup(struct net_device *dev) struct can_ml_priv *can_ml; =20 dev->type =3D ARPHRD_CAN; - dev->mtu =3D CANFD_MTU; + dev->mtu =3D CANXL_MTU; dev->hard_header_len =3D 0; dev->addr_len =3D 0; dev->tx_queue_len =3D 0; --=20 2.49.1