From nobody Sat Feb 7 09:49:22 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 79DA5C19F2A for ; Thu, 28 Jul 2022 07:03:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234549AbiG1HDO (ORCPT ); Thu, 28 Jul 2022 03:03:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34022 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234453AbiG1HDH (ORCPT ); Thu, 28 Jul 2022 03:03:07 -0400 Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 538BA51438 for ; Thu, 28 Jul 2022 00:03:06 -0700 (PDT) Received: by mail-ej1-x62d.google.com with SMTP id z23so1561980eju.8 for ; Thu, 28 Jul 2022 00:03:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=W6W3RCGbQm1ftNxYyveQiUbovGJZ//OaxbWEapVu2yM=; b=RMGtU7wa3UslEpI8xFxyuBq85BrBQa1EIe6ZZK8JQfbmJImOag3Lo/f6/9n3yIeGAf rQGt8YLaIfAPDF3SEr3Ky6v2rPZ5bteL0UEN5FYZNbRGSrjJgoKR9tAvIb/4yzEu5042 d3O57JASdLqdVorgzx3y0hGmbBl3BGVytE0nk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=W6W3RCGbQm1ftNxYyveQiUbovGJZ//OaxbWEapVu2yM=; b=fo/N9AAPrzPUvdBRr8U4ESDR6y52clzJgbLxgP1eLrNo467J6gEB/Aq+cDOOL41MWi V+Nxh+0i/GuhkvwLBBdhqSOd6MdFwULqDIZ4etro5f8oDXKxNvOosTDHcUr3H7+sVMIr 10nDPFXmSEmIAOa4flt3Q5oR3rUu0UymlNHtLABtYNn7VsS5XjB4x6SVAvOreP78T4y1 +ibps7o2PTAuxJtoyRBvLOi4uJ5xzGlUHZxrRHp8Winzz2EZcQQpu/RKOB1XGL/bwZWk MDuXDDzZtZMFbDJiguaLi9U3DAMZTEZKMnkK/iGWJ6kesnuK/uMcDMq99Zx7Ua814IkH q1pA== X-Gm-Message-State: AJIora93stboqyQ1q9a5JQvqPPtCqLqvu6tAGy+75q6D33I0r45g1CyA iJo0X820fBPb6LOTAlcjg32bbTcTHiQUvw== X-Google-Smtp-Source: AGRyM1spzt09OhzWtMpiRi8Bta1eT98E8Lb4duL5a3qcetXNCnKkplAmNgSlKyzj8QD9+m5ICLwuiQ== X-Received: by 2002:a17:907:28d6:b0:72b:7497:76b with SMTP id en22-20020a17090728d600b0072b7497076bmr19828979ejc.365.1658991784453; Thu, 28 Jul 2022 00:03:04 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-79-31-31-9.retail.telecomitalia.it. [79.31.31.9]) by smtp.gmail.com with ESMTPSA id r18-20020aa7d152000000b0042de3d661d2sm154742edo.1.2022.07.28.00.03.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Jul 2022 00:03:03 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-can@vger.kernel.org, Marc Kleine-Budde , Jeroen Hofstee , michael@amarulasolutions.com, Amarula patchwork , Oliver Hartkopp , Vincent Mailhol , Dario Binacchi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wolfgang Grandegger , netdev@vger.kernel.org Subject: [PATCH v4 1/7] can: slcan: use KBUILD_MODNAME and define pr_fmt to replace hardcoded names Date: Thu, 28 Jul 2022 09:02:48 +0200 Message-Id: <20220728070254.267974-2-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> References: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Vincent Mailhol The driver uses the string "slcan" to populate tty_ldisc_ops::name. KBUILD_MODNAME also evaluates to "slcan". Use KBUILD_MODNAME to get rid on the hardcoded string names. Similarly, the pr_info() and pr_err() hardcoded the "slcan" prefix. Define pr_fmt so that the "slcan" prefix gets automatically added. CC: Dario Binacchi Signed-off-by: Vincent Mailhol Signed-off-by: Dario Binacchi --- (no changes since v1) drivers/net/can/slcan/slcan-core.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slc= an-core.c index dfd1baba4130..2c9d9fc19ea9 100644 --- a/drivers/net/can/slcan/slcan-core.c +++ b/drivers/net/can/slcan/slcan-core.c @@ -35,6 +35,8 @@ * */ =20 +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + #include #include =20 @@ -863,7 +865,7 @@ static struct slcan *slc_alloc(void) if (!dev) return NULL; =20 - snprintf(dev->name, sizeof(dev->name), "slcan%d", i); + snprintf(dev->name, sizeof(dev->name), KBUILD_MODNAME "%d", i); dev->netdev_ops =3D &slc_netdev_ops; dev->base_addr =3D i; slcan_set_ethtool_ops(dev); @@ -936,7 +938,7 @@ static int slcan_open(struct tty_struct *tty) rtnl_unlock(); err =3D register_candev(sl->dev); if (err) { - pr_err("slcan: can't register candev\n"); + pr_err("can't register candev\n"); goto err_free_chan; } } else { @@ -1027,7 +1029,7 @@ static int slcan_ioctl(struct tty_struct *tty, unsign= ed int cmd, static struct tty_ldisc_ops slc_ldisc =3D { .owner =3D THIS_MODULE, .num =3D N_SLCAN, - .name =3D "slcan", + .name =3D KBUILD_MODNAME, .open =3D slcan_open, .close =3D slcan_close, .hangup =3D slcan_hangup, @@ -1043,8 +1045,8 @@ static int __init slcan_init(void) if (maxdev < 4) maxdev =3D 4; /* Sanity */ =20 - pr_info("slcan: serial line CAN interface driver\n"); - pr_info("slcan: %d dynamic interface channels.\n", maxdev); + pr_info("serial line CAN interface driver\n"); + pr_info("%d dynamic interface channels.\n", maxdev); =20 slcan_devs =3D kcalloc(maxdev, sizeof(struct net_device *), GFP_KERNEL); if (!slcan_devs) @@ -1053,7 +1055,7 @@ static int __init slcan_init(void) /* Fill in our line protocol discipline, and register it */ status =3D tty_register_ldisc(&slc_ldisc); if (status) { - pr_err("slcan: can't register line discipline\n"); + pr_err("can't register line discipline\n"); kfree(slcan_devs); } return status; --=20 2.32.0 From nobody Sat Feb 7 09:49:22 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E71F6C04A68 for ; Thu, 28 Jul 2022 07:03:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234583AbiG1HDS (ORCPT ); Thu, 28 Jul 2022 03:03:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234485AbiG1HDI (ORCPT ); Thu, 28 Jul 2022 03:03:08 -0400 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 93FDA5927A for ; Thu, 28 Jul 2022 00:03:07 -0700 (PDT) Received: by mail-ej1-x62e.google.com with SMTP id fy29so1525275ejc.12 for ; Thu, 28 Jul 2022 00:03:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OqbFbN5WONXbXcraJR8YQy0FCGLdvzQc4+bJ+5uxeJs=; b=H6c+CwG85VDVmBQqbdkary0D07YA5Gn8UWubgl2cgK/GZ1TbiJwzpzjxkPiFzQJP+R yFfgAHHIZIUs2Pt6u8Dp9oAkDSW239sdBm8h0Wu4UmCVcVUg6yhN1RTbZJBpSGTMxQTL H0IiLIatBo86jVNNC6jZEuKm2xELL6a6ftRso= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OqbFbN5WONXbXcraJR8YQy0FCGLdvzQc4+bJ+5uxeJs=; b=7DeJsW4Kbl7qSA6VL83XAB358DvizIyAAxYg+bU6k13/4XxQMBbK4NStTN/M0QPwBc h3r3yVybjWbe0FSccPBbaxft4lAoh/EET15QiwtY6KSaCk598vVDbmhN2U2OiuVQyv3l ZFZRVeQWMljB909Ji16wFK/qKOpRO6IC/AvcfLJ6bXhZO+TphA1/kMSJnDAvIspIBPo8 P9/NdHkkTgLMng5h2kz6nitRNlmV92SWJbCupMxIMJmkPjfc3SUeLtYeHth6NiAodKBC 9XljzGIyYoASnuBmn9qyHHGiSmAsEUMBGzuTurrRUoMPQInLKi/qV9qKyJzM4cmfbElX 26wQ== X-Gm-Message-State: AJIora/7BpTlzIFzKV1gBwNkYTtZobm8gBzq6LxIz5WHzbyyqdSy08e8 Hxfl0xYjIeoLmDcxtCXq9DV5mFvV2RK5+g== X-Google-Smtp-Source: AGRyM1tyxt5AZFv5KBrqS+15cqhzJre9JnuQgSgSQc3BlE4vTZdPfRYjKTI2goAu9xV/PLIRvFLcOA== X-Received: by 2002:a17:906:5d16:b0:72f:248d:525a with SMTP id g22-20020a1709065d1600b0072f248d525amr21052749ejt.441.1658991785810; Thu, 28 Jul 2022 00:03:05 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-79-31-31-9.retail.telecomitalia.it. [79.31.31.9]) by smtp.gmail.com with ESMTPSA id r18-20020aa7d152000000b0042de3d661d2sm154742edo.1.2022.07.28.00.03.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Jul 2022 00:03:05 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-can@vger.kernel.org, Marc Kleine-Budde , Jeroen Hofstee , michael@amarulasolutions.com, Amarula patchwork , Oliver Hartkopp , Dario Binacchi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wolfgang Grandegger , netdev@vger.kernel.org Subject: [PATCH v4 2/7] can: slcan: remove useless header inclusions Date: Thu, 28 Jul 2022 09:02:49 +0200 Message-Id: <20220728070254.267974-3-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> References: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Include only the necessary headers. Signed-off-by: Dario Binacchi --- (no changes since v2) Changes in v2: - Re-add headers that export at least one symbol used by the module. drivers/net/can/slcan/slcan-core.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slc= an-core.c index 2c9d9fc19ea9..ca383c43167d 100644 --- a/drivers/net/can/slcan/slcan-core.c +++ b/drivers/net/can/slcan/slcan-core.c @@ -48,9 +48,6 @@ #include #include #include -#include -#include -#include #include #include #include --=20 2.32.0 From nobody Sat Feb 7 09:49:22 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7291CC04A68 for ; Thu, 28 Jul 2022 07:03:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234605AbiG1HDY (ORCPT ); Thu, 28 Jul 2022 03:03:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234490AbiG1HDK (ORCPT ); Thu, 28 Jul 2022 03:03:10 -0400 Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 26D8F5E333 for ; Thu, 28 Jul 2022 00:03:08 -0700 (PDT) Received: by mail-ej1-x62d.google.com with SMTP id va17so1686452ejb.0 for ; Thu, 28 Jul 2022 00:03:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RIwpnqXVkEPVC9y6D6imEtiW45Xx5sUlsaiN9YQ/yrc=; b=pFlhC11P+9uiFlyNzrHGPV/aV30iTr/DUcA90eJo/dj6jfyO5QrMNkoy9lNWdM1tom 5up+gSEmgC7Bk3c3U3oZQeRFE2gwzUnLponlYZGK2MISv9+ylsXdtskKpVDAAkpqQQl8 Z/TbLryMtLlNK8iIMMp5h2p+9NG9xo6CqZlqQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RIwpnqXVkEPVC9y6D6imEtiW45Xx5sUlsaiN9YQ/yrc=; b=IEkcWNlV0eIfRhp9M9ehNAkXUoa2ilRxkUz3g1uEGV7CbuAegSQHOeIExjGfgIxTfW Vvlp+wdn/IAsCXhD90B2z8aBEZt07l/tuL0VQLNuzGrpAoy7qly69U4eD9M/O/n3BlJF /XVWpbV0QxBFOR1axXbXYIPh4ocL55gp+pRWBJJRBUT8458cwRfS2YWchXSiXImXITgX 0LKpOmDryvkm9TUzcbDXk3CGlJ55ZAt5lSrwj3M0MhfhJfWZUfyvtSPykzjOQ3EzynKM 2Jas9od6eZSvYzVZYzjfcSrhmIlBhqlLRGURRVZPK5nFdhH+3zGH/HOD6X6Ib+W8CAS8 MIKQ== X-Gm-Message-State: AJIora9/2wgc2DNs14hFQnhfsu7frDt8HZ7zaVtrkMbiXuhZecW4SKK9 UxKr0Eobwiw1Uqau1bFxWJMxFAXBrVtSyQ== X-Google-Smtp-Source: AGRyM1tfsjR+sjcPtbIaDhoesXXJJ+zVu/yzXPPN8NgJOkt4U2iF9Qjmb5iDVH1YU2wgxhMfjN71xg== X-Received: by 2002:a17:907:8690:b0:72b:552e:67c0 with SMTP id qa16-20020a170907869000b0072b552e67c0mr20012840ejc.600.1658991787258; Thu, 28 Jul 2022 00:03:07 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-79-31-31-9.retail.telecomitalia.it. [79.31.31.9]) by smtp.gmail.com with ESMTPSA id r18-20020aa7d152000000b0042de3d661d2sm154742edo.1.2022.07.28.00.03.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Jul 2022 00:03:06 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-can@vger.kernel.org, Marc Kleine-Budde , Jeroen Hofstee , michael@amarulasolutions.com, Amarula patchwork , Oliver Hartkopp , Dario Binacchi , Max Staudt , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wolfgang Grandegger , netdev@vger.kernel.org Subject: [PATCH v4 3/7] can: slcan: remove legacy infrastructure Date: Thu, 28 Jul 2022 09:02:50 +0200 Message-Id: <20220728070254.267974-4-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> References: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Taking inspiration from the drivers/net/can/can327.c driver and at the suggestion of its author Max Staudt, I removed legacy stuff like `SLCAN_MAGIC' and `slcan_devs' resulting in simplification of the code and its maintainability. The use of slcan_devs is derived from a very old kernel, since slip.c is about 30 years old, so today's kernel allows us to remove it. The .hangup() ldisc function, which only called the ldisc .close(), has been removed since the ldisc layer calls .close() in a good place anyway. The old slcanX name has been dropped in order to use the standard canX interface naming. The ioctl SIOCGIFNAME can be used to query the name of the created interface. Furthermore, there are several ways to get stable interfaces names in user space, e.g. udev or systemd-networkd. The `maxdev' module parameter has also been removed. CC: Max Staudt Signed-off-by: Dario Binacchi Reviewed-by: Max Staudt --- Changes in v4: - Add Max Staudt's `Reviewed-by' tag. Changes in v3: - Update the commit message. - Use 1 space in front of the =3D. Changes in v2: - Update the commit description. - Drop the old "slcan" name to use the standard canX interface naming. drivers/net/can/slcan/slcan-core.c | 318 ++++++----------------------- 1 file changed, 63 insertions(+), 255 deletions(-) diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slc= an-core.c index ca383c43167d..0d309d0636df 100644 --- a/drivers/net/can/slcan/slcan-core.c +++ b/drivers/net/can/slcan/slcan-core.c @@ -1,11 +1,14 @@ /* * slcan.c - serial line CAN interface driver (using tty line discipline) * - * This file is derived from linux/drivers/net/slip/slip.c + * This file is derived from linux/drivers/net/slip/slip.c and got + * inspiration from linux/drivers/net/can/can327.c for the rework made + * on the line discipline code. * * slip.c Authors : Laurence Culhane * Fred N. van Kempen * slcan.c Author : Oliver Hartkopp + * can327.c Author : Max Staudt * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -38,7 +41,6 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 #include -#include =20 #include #include @@ -48,7 +50,6 @@ #include #include #include -#include #include #include #include @@ -63,15 +64,6 @@ MODULE_DESCRIPTION("serial line CAN interface"); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Oliver Hartkopp "); =20 -#define SLCAN_MAGIC 0x53CA - -static int maxdev =3D 10; /* MAX number of SLCAN channels; - * This can be overridden with - * insmod slcan.ko maxdev=3Dnnn - */ -module_param(maxdev, int, 0); -MODULE_PARM_DESC(maxdev, "Maximum number of slcan interfaces"); - /* maximum rx buffer len: extended CAN frame with timestamp */ #define SLC_MTU (sizeof("T1111222281122334455667788EA5F\r") + 1) =20 @@ -85,7 +77,6 @@ MODULE_PARM_DESC(maxdev, "Maximum number of slcan interfa= ces"); SLC_STATE_BE_TXCNT_LEN) struct slcan { struct can_priv can; - int magic; =20 /* Various fields. */ struct tty_struct *tty; /* ptr to TTY structure */ @@ -101,17 +92,14 @@ struct slcan { int xleft; /* bytes left in XMIT queue */ =20 unsigned long flags; /* Flag values/ mode etc */ -#define SLF_INUSE 0 /* Channel in use */ -#define SLF_ERROR 1 /* Parity, etc. error */ -#define SLF_XCMD 2 /* Command transmission */ +#define SLF_ERROR 0 /* Parity, etc. error */ +#define SLF_XCMD 1 /* Command transmission */ unsigned long cmd_flags; /* Command flags */ #define CF_ERR_RST 0 /* Reset errors on open */ wait_queue_head_t xcmd_wait; /* Wait queue for commands */ /* transmission */ }; =20 -static struct net_device **slcan_devs; - static const u32 slcan_bitrate_const[] =3D { 10000, 20000, 50000, 100000, 125000, 250000, 500000, 800000, 1000000 @@ -555,9 +543,8 @@ static void slcan_transmit(struct work_struct *work) =20 spin_lock_bh(&sl->lock); /* First make sure we're connected. */ - if (!sl->tty || sl->magic !=3D SLCAN_MAGIC || - (unlikely(!netif_running(sl->dev)) && - likely(!test_bit(SLF_XCMD, &sl->flags)))) { + if (unlikely(!netif_running(sl->dev)) && + likely(!test_bit(SLF_XCMD, &sl->flags))) { spin_unlock_bh(&sl->lock); return; } @@ -592,13 +579,9 @@ static void slcan_transmit(struct work_struct *work) */ static void slcan_write_wakeup(struct tty_struct *tty) { - struct slcan *sl; + struct slcan *sl =3D (struct slcan *)tty->disc_data; =20 - rcu_read_lock(); - sl =3D rcu_dereference(tty->disc_data); - if (sl) - schedule_work(&sl->tx_work); - rcu_read_unlock(); + schedule_work(&sl->tx_work); } =20 /* Send a can_frame to a TTY queue. */ @@ -669,25 +652,21 @@ static int slc_close(struct net_device *dev) struct slcan *sl =3D netdev_priv(dev); int err; =20 - spin_lock_bh(&sl->lock); - if (sl->tty) { - if (sl->can.bittiming.bitrate && - sl->can.bittiming.bitrate !=3D CAN_BITRATE_UNKNOWN) { - spin_unlock_bh(&sl->lock); - err =3D slcan_transmit_cmd(sl, "C\r"); - spin_lock_bh(&sl->lock); - if (err) - netdev_warn(dev, - "failed to send close command 'C\\r'\n"); - } - - /* TTY discipline is running. */ - clear_bit(TTY_DO_WRITE_WAKEUP, &sl->tty->flags); + if (sl->can.bittiming.bitrate && + sl->can.bittiming.bitrate !=3D CAN_BITRATE_UNKNOWN) { + err =3D slcan_transmit_cmd(sl, "C\r"); + if (err) + netdev_warn(dev, + "failed to send close command 'C\\r'\n"); } + + /* TTY discipline is running. */ + clear_bit(TTY_DO_WRITE_WAKEUP, &sl->tty->flags); + flush_work(&sl->tx_work); + netif_stop_queue(dev); sl->rcount =3D 0; sl->xleft =3D 0; - spin_unlock_bh(&sl->lock); close_candev(dev); sl->can.state =3D CAN_STATE_STOPPED; if (sl->can.bittiming.bitrate =3D=3D CAN_BITRATE_UNKNOWN) @@ -703,9 +682,6 @@ static int slc_open(struct net_device *dev) unsigned char cmd[SLC_MTU]; int err, s; =20 - if (!sl->tty) - return -ENODEV; - /* The baud rate is not set with the command * `ip link set type can bitrate ' and therefore * can.bittiming.bitrate is CAN_BITRATE_UNSET (0), causing @@ -720,8 +696,6 @@ static int slc_open(struct net_device *dev) return err; } =20 - sl->flags &=3D BIT(SLF_INUSE); - if (sl->can.bittiming.bitrate !=3D CAN_BITRATE_UNKNOWN) { for (s =3D 0; s < ARRAY_SIZE(slcan_bitrate_const); s++) { if (sl->can.bittiming.bitrate =3D=3D slcan_bitrate_const[s]) @@ -765,14 +739,6 @@ static int slc_open(struct net_device *dev) return err; } =20 -static void slc_dealloc(struct slcan *sl) -{ - int i =3D sl->dev->base_addr; - - free_candev(sl->dev); - slcan_devs[i] =3D NULL; -} - static int slcan_change_mtu(struct net_device *dev, int new_mtu) { return -EINVAL; @@ -802,7 +768,7 @@ static void slcan_receive_buf(struct tty_struct *tty, { struct slcan *sl =3D (struct slcan *)tty->disc_data; =20 - if (!sl || sl->magic !=3D SLCAN_MAGIC || !netif_running(sl->dev)) + if (!netif_running(sl->dev)) return; =20 /* Read the characters out of the buffer */ @@ -817,80 +783,15 @@ static void slcan_receive_buf(struct tty_struct *tty, } } =20 -/************************************ - * slcan_open helper routines. - ************************************/ - -/* Collect hanged up channels */ -static void slc_sync(void) -{ - int i; - struct net_device *dev; - struct slcan *sl; - - for (i =3D 0; i < maxdev; i++) { - dev =3D slcan_devs[i]; - if (!dev) - break; - - sl =3D netdev_priv(dev); - if (sl->tty) - continue; - if (dev->flags & IFF_UP) - dev_close(dev); - } -} - -/* Find a free SLCAN channel, and link in this `tty' line. */ -static struct slcan *slc_alloc(void) -{ - int i; - struct net_device *dev =3D NULL; - struct slcan *sl; - - for (i =3D 0; i < maxdev; i++) { - dev =3D slcan_devs[i]; - if (!dev) - break; - } - - /* Sorry, too many, all slots in use */ - if (i >=3D maxdev) - return NULL; - - dev =3D alloc_candev(sizeof(*sl), 1); - if (!dev) - return NULL; - - snprintf(dev->name, sizeof(dev->name), KBUILD_MODNAME "%d", i); - dev->netdev_ops =3D &slc_netdev_ops; - dev->base_addr =3D i; - slcan_set_ethtool_ops(dev); - sl =3D netdev_priv(dev); - - /* Initialize channel control data */ - sl->magic =3D SLCAN_MAGIC; - sl->dev =3D dev; - sl->can.bitrate_const =3D slcan_bitrate_const; - sl->can.bitrate_const_cnt =3D ARRAY_SIZE(slcan_bitrate_const); - spin_lock_init(&sl->lock); - INIT_WORK(&sl->tx_work, slcan_transmit); - init_waitqueue_head(&sl->xcmd_wait); - slcan_devs[i] =3D dev; - - return sl; -} - /* Open the high-level part of the SLCAN channel. * This function is called by the TTY module when the - * SLCAN line discipline is called for. Because we are - * sure the tty line exists, we only have to link it to - * a free SLCAN channel... + * SLCAN line discipline is called for. * * Called in process context serialized from other ldisc calls. */ static int slcan_open(struct tty_struct *tty) { + struct net_device *dev; struct slcan *sl; int err; =20 @@ -900,72 +801,49 @@ static int slcan_open(struct tty_struct *tty) if (!tty->ops->write) return -EOPNOTSUPP; =20 - /* RTnetlink lock is misused here to serialize concurrent - * opens of slcan channels. There are better ways, but it is - * the simplest one. - */ - rtnl_lock(); + dev =3D alloc_candev(sizeof(*sl), 1); + if (!dev) + return -ENFILE; =20 - /* Collect hanged up channels. */ - slc_sync(); + sl =3D netdev_priv(dev); =20 - sl =3D tty->disc_data; + /* Configure TTY interface */ + tty->receive_room =3D 65536; /* We don't flow control */ + sl->rcount =3D 0; + sl->xleft =3D 0; + spin_lock_init(&sl->lock); + INIT_WORK(&sl->tx_work, slcan_transmit); + init_waitqueue_head(&sl->xcmd_wait); =20 - err =3D -EEXIST; - /* First make sure we're not already connected. */ - if (sl && sl->magic =3D=3D SLCAN_MAGIC) - goto err_exit; + /* Configure CAN metadata */ + sl->can.bitrate_const =3D slcan_bitrate_const; + sl->can.bitrate_const_cnt =3D ARRAY_SIZE(slcan_bitrate_const); =20 - /* OK. Find a free SLCAN channel to use. */ - err =3D -ENFILE; - sl =3D slc_alloc(); - if (!sl) - goto err_exit; + /* Configure netdev interface */ + sl->dev =3D dev; + dev->netdev_ops =3D &slc_netdev_ops; + slcan_set_ethtool_ops(dev); =20 + /* Mark ldisc channel as alive */ sl->tty =3D tty; tty->disc_data =3D sl; =20 - if (!test_bit(SLF_INUSE, &sl->flags)) { - /* Perform the low-level SLCAN initialization. */ - sl->rcount =3D 0; - sl->xleft =3D 0; - - set_bit(SLF_INUSE, &sl->flags); - - rtnl_unlock(); - err =3D register_candev(sl->dev); - if (err) { - pr_err("can't register candev\n"); - goto err_free_chan; - } - } else { - rtnl_unlock(); + err =3D register_candev(dev); + if (err) { + free_candev(dev); + pr_err("can't register candev\n"); + return err; } =20 - tty->receive_room =3D 65536; /* We don't flow control */ - + netdev_info(dev, "slcan on %s.\n", tty->name); /* TTY layer expects 0 on success */ return 0; - -err_free_chan: - rtnl_lock(); - sl->tty =3D NULL; - tty->disc_data =3D NULL; - clear_bit(SLF_INUSE, &sl->flags); - slc_dealloc(sl); - rtnl_unlock(); - return err; - -err_exit: - rtnl_unlock(); - - /* Count references from TTY module */ - return err; } =20 /* Close down a SLCAN channel. * This means flushing out any pending queues, and then returning. This * call is serialized against other ldisc functions. + * Once this is called, no other ldisc function of ours is entered. * * We also use this method for a hangup event. */ @@ -973,28 +851,20 @@ static void slcan_close(struct tty_struct *tty) { struct slcan *sl =3D (struct slcan *)tty->disc_data; =20 - /* First make sure we're connected. */ - if (!sl || sl->magic !=3D SLCAN_MAGIC || sl->tty !=3D tty) - return; + /* unregister_netdev() calls .ndo_stop() so we don't have to. + * Our .ndo_stop() also flushes the TTY write wakeup handler, + * so we can safely set sl->tty =3D NULL after this. + */ + unregister_candev(sl->dev); =20 + /* Mark channel as dead */ spin_lock_bh(&sl->lock); - rcu_assign_pointer(tty->disc_data, NULL); + tty->disc_data =3D NULL; sl->tty =3D NULL; spin_unlock_bh(&sl->lock); =20 - synchronize_rcu(); - flush_work(&sl->tx_work); - - slc_close(sl->dev); - unregister_candev(sl->dev); - rtnl_lock(); - slc_dealloc(sl); - rtnl_unlock(); -} - -static void slcan_hangup(struct tty_struct *tty) -{ - slcan_close(tty); + netdev_info(sl->dev, "slcan off %s.\n", tty->name); + free_candev(sl->dev); } =20 /* Perform I/O control on an active SLCAN channel. */ @@ -1004,10 +874,6 @@ static int slcan_ioctl(struct tty_struct *tty, unsign= ed int cmd, struct slcan *sl =3D (struct slcan *)tty->disc_data; unsigned int tmp; =20 - /* First make sure we're connected. */ - if (!sl || sl->magic !=3D SLCAN_MAGIC) - return -EINVAL; - switch (cmd) { case SIOCGIFNAME: tmp =3D strlen(sl->dev->name) + 1; @@ -1029,7 +895,6 @@ static struct tty_ldisc_ops slc_ldisc =3D { .name =3D KBUILD_MODNAME, .open =3D slcan_open, .close =3D slcan_close, - .hangup =3D slcan_hangup, .ioctl =3D slcan_ioctl, .receive_buf =3D slcan_receive_buf, .write_wakeup =3D slcan_write_wakeup, @@ -1039,78 +904,21 @@ static int __init slcan_init(void) { int status; =20 - if (maxdev < 4) - maxdev =3D 4; /* Sanity */ - pr_info("serial line CAN interface driver\n"); - pr_info("%d dynamic interface channels.\n", maxdev); - - slcan_devs =3D kcalloc(maxdev, sizeof(struct net_device *), GFP_KERNEL); - if (!slcan_devs) - return -ENOMEM; =20 /* Fill in our line protocol discipline, and register it */ status =3D tty_register_ldisc(&slc_ldisc); - if (status) { + if (status) pr_err("can't register line discipline\n"); - kfree(slcan_devs); - } + return status; } =20 static void __exit slcan_exit(void) { - int i; - struct net_device *dev; - struct slcan *sl; - unsigned long timeout =3D jiffies + HZ; - int busy =3D 0; - - if (!slcan_devs) - return; - - /* First of all: check for active disciplines and hangup them. - */ - do { - if (busy) - msleep_interruptible(100); - - busy =3D 0; - for (i =3D 0; i < maxdev; i++) { - dev =3D slcan_devs[i]; - if (!dev) - continue; - sl =3D netdev_priv(dev); - spin_lock_bh(&sl->lock); - if (sl->tty) { - busy++; - tty_hangup(sl->tty); - } - spin_unlock_bh(&sl->lock); - } - } while (busy && time_before(jiffies, timeout)); - - /* FIXME: hangup is async so we should wait when doing this second - * phase + /* This will only be called when all channels have been closed by + * userspace - tty_ldisc.c takes care of the module's refcount. */ - - for (i =3D 0; i < maxdev; i++) { - dev =3D slcan_devs[i]; - if (!dev) - continue; - - sl =3D netdev_priv(dev); - if (sl->tty) - netdev_err(dev, "tty discipline still running\n"); - - slc_close(dev); - unregister_candev(dev); - slc_dealloc(sl); - } - - kfree(slcan_devs); - slcan_devs =3D NULL; - tty_unregister_ldisc(&slc_ldisc); } =20 --=20 2.32.0 From nobody Sat Feb 7 09:49:22 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2010CC04A68 for ; Thu, 28 Jul 2022 07:03:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232715AbiG1HDa (ORCPT ); Thu, 28 Jul 2022 03:03:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234518AbiG1HDN (ORCPT ); Thu, 28 Jul 2022 03:03:13 -0400 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 72BCD5F119 for ; Thu, 28 Jul 2022 00:03:09 -0700 (PDT) Received: by mail-ej1-x62e.google.com with SMTP id fy29so1525483ejc.12 for ; Thu, 28 Jul 2022 00:03:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zm8CDawEO00pmFYhToSSc819K70UuVm9tw0evLiuI+U=; b=OvopPApEGax0Ef1R0/igJZCwgnNkfgC310m6Bi3Cpk7X0gcvEYMoQFSt1jvVzF9rXk ojVLnhxbWI0To4nS23MrA22ul18HF3q7Z+YMTrA0RMCVz5ZexlozRU6VwNvxJBJy7rsg i/7sYyOgZ6FgG/GmeOr8HEtTw88WIoXmYN1Jc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zm8CDawEO00pmFYhToSSc819K70UuVm9tw0evLiuI+U=; b=LLwC6WyeQrzFZrSscnHuYcjy3a2ybpyAog8joCTLfBdcnZJ+y2dxB3A9Dw2zCU+SKd AAPdP5qJcqOp3uzAi4uICGoIGAP/o8AWIcN+OuWiRD3fSlkvNkIMPN9a5hr+VeSv1l1E R1n8dwp9b63yDaTmgvnRB++/NgDronjyatRVSi78kNIyd3cWEPcVzFBSDcUtNQEEyhY0 duXMDL/1rbA7RLGz68Zp6VPwwzFrP7spQExpa11Qp90b5d3TmkLi3rIQZ4jG41vjbs4e hK5XY14Oi1yJx0BMV6NnxLTMOqSava3v/UOJ1NMTWUadfe+C9JkLJBDnziqu3FXAdtJn Rezw== X-Gm-Message-State: AJIora8MK2Wq/OBTmAwdvVgjjt5FuOylktfWft/AwBwOlamXWyAsRg7A r8fB8DpyCrMc1xUmH2fdiToPvOtsEVb7iw== X-Google-Smtp-Source: AGRyM1v1WQGVFA3qd7PQBZNzrwxIcxe/vLNn3315IMZ7qGr4FqaAgVZSbXZGHKHlV3DVrRau/m0CNQ== X-Received: by 2002:a17:906:98c8:b0:72b:3a31:6cc3 with SMTP id zd8-20020a17090698c800b0072b3a316cc3mr20327677ejb.597.1658991788676; Thu, 28 Jul 2022 00:03:08 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-79-31-31-9.retail.telecomitalia.it. [79.31.31.9]) by smtp.gmail.com with ESMTPSA id r18-20020aa7d152000000b0042de3d661d2sm154742edo.1.2022.07.28.00.03.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Jul 2022 00:03:08 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-can@vger.kernel.org, Marc Kleine-Budde , Jeroen Hofstee , michael@amarulasolutions.com, Amarula patchwork , Oliver Hartkopp , Dario Binacchi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wolfgang Grandegger , netdev@vger.kernel.org Subject: [PATCH v4 4/7] can: slcan: change every `slc' occurrence in `slcan' Date: Thu, 28 Jul 2022 09:02:51 +0200 Message-Id: <20220728070254.267974-5-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> References: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" In the driver there are parts of code where the prefix `slc' is used and others where the prefix `slcan' is used instead. The patch replaces every occurrence of `slc' with `slcan', except for the netdev functions where, to avoid compilation conflicts, it was necessary to replace `slc' with `slcan_netdev'. The patch does not make any functional changes. Signed-off-by: Dario Binacchi --- (no changes since v1) drivers/net/can/slcan/slcan-core.c | 109 +++++++++++++++-------------- 1 file changed, 56 insertions(+), 53 deletions(-) diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slc= an-core.c index 0d309d0636df..bd8e84ded051 100644 --- a/drivers/net/can/slcan/slcan-core.c +++ b/drivers/net/can/slcan/slcan-core.c @@ -65,16 +65,17 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Oliver Hartkopp "); =20 /* maximum rx buffer len: extended CAN frame with timestamp */ -#define SLC_MTU (sizeof("T1111222281122334455667788EA5F\r") + 1) - -#define SLC_CMD_LEN 1 -#define SLC_SFF_ID_LEN 3 -#define SLC_EFF_ID_LEN 8 -#define SLC_STATE_LEN 1 -#define SLC_STATE_BE_RXCNT_LEN 3 -#define SLC_STATE_BE_TXCNT_LEN 3 -#define SLC_STATE_FRAME_LEN (1 + SLC_CMD_LEN + SLC_STATE_BE_RXCNT_LE= N + \ - SLC_STATE_BE_TXCNT_LEN) +#define SLCAN_MTU (sizeof("T1111222281122334455667788EA5F\r") + 1) + +#define SLCAN_CMD_LEN 1 +#define SLCAN_SFF_ID_LEN 3 +#define SLCAN_EFF_ID_LEN 8 +#define SLCAN_STATE_LEN 1 +#define SLCAN_STATE_BE_RXCNT_LEN 3 +#define SLCAN_STATE_BE_TXCNT_LEN 3 +#define SLCAN_STATE_FRAME_LEN (1 + SLCAN_CMD_LEN + \ + SLCAN_STATE_BE_RXCNT_LEN + \ + SLCAN_STATE_BE_TXCNT_LEN) struct slcan { struct can_priv can; =20 @@ -85,9 +86,9 @@ struct slcan { struct work_struct tx_work; /* Flushes transmit buffer */ =20 /* These are pointers to the malloc()ed frame buffers. */ - unsigned char rbuff[SLC_MTU]; /* receiver buffer */ + unsigned char rbuff[SLCAN_MTU]; /* receiver buffer */ int rcount; /* received chars counter */ - unsigned char xbuff[SLC_MTU]; /* transmitter buffer */ + unsigned char xbuff[SLCAN_MTU]; /* transmitter buffer*/ unsigned char *xhead; /* pointer to next XMIT byte */ int xleft; /* bytes left in XMIT queue */ =20 @@ -166,7 +167,7 @@ int slcan_enable_err_rst_on_open(struct net_device *nde= v, bool on) *************************************************************************/ =20 /* Send one completely decapsulated can_frame to the network layer */ -static void slc_bump_frame(struct slcan *sl) +static void slcan_bump_frame(struct slcan *sl) { struct sk_buff *skb; struct can_frame *cf; @@ -186,10 +187,10 @@ static void slc_bump_frame(struct slcan *sl) fallthrough; case 't': /* store dlc ASCII value and terminate SFF CAN ID string */ - cf->len =3D sl->rbuff[SLC_CMD_LEN + SLC_SFF_ID_LEN]; - sl->rbuff[SLC_CMD_LEN + SLC_SFF_ID_LEN] =3D 0; + cf->len =3D sl->rbuff[SLCAN_CMD_LEN + SLCAN_SFF_ID_LEN]; + sl->rbuff[SLCAN_CMD_LEN + SLCAN_SFF_ID_LEN] =3D 0; /* point to payload data behind the dlc */ - cmd +=3D SLC_CMD_LEN + SLC_SFF_ID_LEN + 1; + cmd +=3D SLCAN_CMD_LEN + SLCAN_SFF_ID_LEN + 1; break; case 'R': cf->can_id =3D CAN_RTR_FLAG; @@ -197,16 +198,16 @@ static void slc_bump_frame(struct slcan *sl) case 'T': cf->can_id |=3D CAN_EFF_FLAG; /* store dlc ASCII value and terminate EFF CAN ID string */ - cf->len =3D sl->rbuff[SLC_CMD_LEN + SLC_EFF_ID_LEN]; - sl->rbuff[SLC_CMD_LEN + SLC_EFF_ID_LEN] =3D 0; + cf->len =3D sl->rbuff[SLCAN_CMD_LEN + SLCAN_EFF_ID_LEN]; + sl->rbuff[SLCAN_CMD_LEN + SLCAN_EFF_ID_LEN] =3D 0; /* point to payload data behind the dlc */ - cmd +=3D SLC_CMD_LEN + SLC_EFF_ID_LEN + 1; + cmd +=3D SLCAN_CMD_LEN + SLCAN_EFF_ID_LEN + 1; break; default: goto decode_failed; } =20 - if (kstrtou32(sl->rbuff + SLC_CMD_LEN, 16, &tmpid)) + if (kstrtou32(sl->rbuff + SLCAN_CMD_LEN, 16, &tmpid)) goto decode_failed; =20 cf->can_id |=3D tmpid; @@ -253,7 +254,7 @@ static void slc_bump_frame(struct slcan *sl) * sb256256 : state bus-off: rx counter 256, tx counter 256 * sa057033 : state active, rx counter 57, tx counter 33 */ -static void slc_bump_state(struct slcan *sl) +static void slcan_bump_state(struct slcan *sl) { struct net_device *dev =3D sl->dev; struct sk_buff *skb; @@ -279,16 +280,16 @@ static void slc_bump_state(struct slcan *sl) return; } =20 - if (state =3D=3D sl->can.state || sl->rcount < SLC_STATE_FRAME_LEN) + if (state =3D=3D sl->can.state || sl->rcount < SLCAN_STATE_FRAME_LEN) return; =20 - cmd +=3D SLC_STATE_BE_RXCNT_LEN + SLC_CMD_LEN + 1; - cmd[SLC_STATE_BE_TXCNT_LEN] =3D 0; + cmd +=3D SLCAN_STATE_BE_RXCNT_LEN + SLCAN_CMD_LEN + 1; + cmd[SLCAN_STATE_BE_TXCNT_LEN] =3D 0; if (kstrtou32(cmd, 10, &txerr)) return; =20 *cmd =3D 0; - cmd -=3D SLC_STATE_BE_RXCNT_LEN; + cmd -=3D SLCAN_STATE_BE_RXCNT_LEN; if (kstrtou32(cmd, 10, &rxerr)) return; =20 @@ -316,7 +317,7 @@ static void slc_bump_state(struct slcan *sl) * e1a : len 1, errors: ACK error * e3bcO: len 3, errors: Bit0 error, CRC error, Tx overrun error */ -static void slc_bump_err(struct slcan *sl) +static void slcan_bump_err(struct slcan *sl) { struct net_device *dev =3D sl->dev; struct sk_buff *skb; @@ -332,7 +333,7 @@ static void slc_bump_err(struct slcan *sl) else return; =20 - if ((len + SLC_CMD_LEN + 1) > sl->rcount) + if ((len + SLCAN_CMD_LEN + 1) > sl->rcount) return; =20 skb =3D alloc_can_err_skb(dev, &cf); @@ -340,7 +341,7 @@ static void slc_bump_err(struct slcan *sl) if (skb) cf->can_id |=3D CAN_ERR_PROT | CAN_ERR_BUSERROR; =20 - cmd +=3D SLC_CMD_LEN + 1; + cmd +=3D SLCAN_CMD_LEN + 1; for (i =3D 0; i < len; i++, cmd++) { switch (*cmd) { case 'a': @@ -429,7 +430,7 @@ static void slc_bump_err(struct slcan *sl) netif_rx(skb); } =20 -static void slc_bump(struct slcan *sl) +static void slcan_bump(struct slcan *sl) { switch (sl->rbuff[0]) { case 'r': @@ -439,11 +440,11 @@ static void slc_bump(struct slcan *sl) case 'R': fallthrough; case 'T': - return slc_bump_frame(sl); + return slcan_bump_frame(sl); case 'e': - return slc_bump_err(sl); + return slcan_bump_err(sl); case 's': - return slc_bump_state(sl); + return slcan_bump_state(sl); default: return; } @@ -455,12 +456,12 @@ static void slcan_unesc(struct slcan *sl, unsigned ch= ar s) if ((s =3D=3D '\r') || (s =3D=3D '\a')) { /* CR or BEL ends the pdu */ if (!test_and_clear_bit(SLF_ERROR, &sl->flags) && sl->rcount > 4) - slc_bump(sl); + slcan_bump(sl); =20 sl->rcount =3D 0; } else { if (!test_bit(SLF_ERROR, &sl->flags)) { - if (sl->rcount < SLC_MTU) { + if (sl->rcount < SLCAN_MTU) { sl->rbuff[sl->rcount++] =3D s; return; } @@ -476,7 +477,7 @@ static void slcan_unesc(struct slcan *sl, unsigned char= s) *************************************************************************/ =20 /* Encapsulate one can_frame and stuff into a TTY queue. */ -static void slc_encaps(struct slcan *sl, struct can_frame *cf) +static void slcan_encaps(struct slcan *sl, struct can_frame *cf) { int actual, i; unsigned char *pos; @@ -493,11 +494,11 @@ static void slc_encaps(struct slcan *sl, struct can_f= rame *cf) /* determine number of chars for the CAN-identifier */ if (cf->can_id & CAN_EFF_FLAG) { id &=3D CAN_EFF_MASK; - endpos =3D pos + SLC_EFF_ID_LEN; + endpos =3D pos + SLCAN_EFF_ID_LEN; } else { *pos |=3D 0x20; /* convert R/T to lower case for SFF */ id &=3D CAN_SFF_MASK; - endpos =3D pos + SLC_SFF_ID_LEN; + endpos =3D pos + SLCAN_SFF_ID_LEN; } =20 /* build 3 (SFF) or 8 (EFF) digit CAN identifier */ @@ -507,7 +508,8 @@ static void slc_encaps(struct slcan *sl, struct can_fra= me *cf) id >>=3D 4; } =20 - pos +=3D (cf->can_id & CAN_EFF_FLAG) ? SLC_EFF_ID_LEN : SLC_SFF_ID_LEN; + pos +=3D (cf->can_id & CAN_EFF_FLAG) ? + SLCAN_EFF_ID_LEN : SLCAN_SFF_ID_LEN; =20 *pos++ =3D cf->len + '0'; =20 @@ -585,7 +587,8 @@ static void slcan_write_wakeup(struct tty_struct *tty) } =20 /* Send a can_frame to a TTY queue. */ -static netdev_tx_t slc_xmit(struct sk_buff *skb, struct net_device *dev) +static netdev_tx_t slcan_netdev_xmit(struct sk_buff *skb, + struct net_device *dev) { struct slcan *sl =3D netdev_priv(dev); =20 @@ -604,7 +607,7 @@ static netdev_tx_t slc_xmit(struct sk_buff *skb, struct= net_device *dev) } =20 netif_stop_queue(sl->dev); - slc_encaps(sl, (struct can_frame *)skb->data); /* encaps & send */ + slcan_encaps(sl, (struct can_frame *)skb->data); /* encaps & send */ spin_unlock(&sl->lock); =20 out: @@ -647,7 +650,7 @@ static int slcan_transmit_cmd(struct slcan *sl, const u= nsigned char *cmd) } =20 /* Netdevice UP -> DOWN routine */ -static int slc_close(struct net_device *dev) +static int slcan_netdev_close(struct net_device *dev) { struct slcan *sl =3D netdev_priv(dev); int err; @@ -676,10 +679,10 @@ static int slc_close(struct net_device *dev) } =20 /* Netdevice DOWN -> UP routine */ -static int slc_open(struct net_device *dev) +static int slcan_netdev_open(struct net_device *dev) { struct slcan *sl =3D netdev_priv(dev); - unsigned char cmd[SLC_MTU]; + unsigned char cmd[SLCAN_MTU]; int err, s; =20 /* The baud rate is not set with the command @@ -739,16 +742,16 @@ static int slc_open(struct net_device *dev) return err; } =20 -static int slcan_change_mtu(struct net_device *dev, int new_mtu) +static int slcan_netdev_change_mtu(struct net_device *dev, int new_mtu) { return -EINVAL; } =20 -static const struct net_device_ops slc_netdev_ops =3D { - .ndo_open =3D slc_open, - .ndo_stop =3D slc_close, - .ndo_start_xmit =3D slc_xmit, - .ndo_change_mtu =3D slcan_change_mtu, +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 slcan_netdev_change_mtu, }; =20 /****************************************** @@ -821,7 +824,7 @@ static int slcan_open(struct tty_struct *tty) =20 /* Configure netdev interface */ sl->dev =3D dev; - dev->netdev_ops =3D &slc_netdev_ops; + dev->netdev_ops =3D &slcan_netdev_ops; slcan_set_ethtool_ops(dev); =20 /* Mark ldisc channel as alive */ @@ -889,7 +892,7 @@ static int slcan_ioctl(struct tty_struct *tty, unsigned= int cmd, } } =20 -static struct tty_ldisc_ops slc_ldisc =3D { +static struct tty_ldisc_ops slcan_ldisc =3D { .owner =3D THIS_MODULE, .num =3D N_SLCAN, .name =3D KBUILD_MODNAME, @@ -907,7 +910,7 @@ static int __init slcan_init(void) pr_info("serial line CAN interface driver\n"); =20 /* Fill in our line protocol discipline, and register it */ - status =3D tty_register_ldisc(&slc_ldisc); + status =3D tty_register_ldisc(&slcan_ldisc); if (status) pr_err("can't register line discipline\n"); =20 @@ -919,7 +922,7 @@ static void __exit slcan_exit(void) /* This will only be called when all channels have been closed by * userspace - tty_ldisc.c takes care of the module's refcount. */ - tty_unregister_ldisc(&slc_ldisc); + tty_unregister_ldisc(&slcan_ldisc); } =20 module_init(slcan_init); --=20 2.32.0 From nobody Sat Feb 7 09:49:22 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB99AC04A68 for ; Thu, 28 Jul 2022 07:03:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234658AbiG1HDo (ORCPT ); Thu, 28 Jul 2022 03:03:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234201AbiG1HDP (ORCPT ); Thu, 28 Jul 2022 03:03:15 -0400 Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 65EE65F9A9 for ; Thu, 28 Jul 2022 00:03:12 -0700 (PDT) Received: by mail-ed1-x52f.google.com with SMTP id f15so1011454edc.4 for ; Thu, 28 Jul 2022 00:03:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=aNGQLRTnPxlP6A96D7J1ivHff8xTlXOO4TAacZru318=; b=NixWIxUerULCg3FM+cnzFFOF13OA6uqtP9jW5CJygFwUBq6CkojjWu3Ex8IMlgKxPg e47d34vcuwDsFDJm3JWApkUUIPvEBe5EKLPqbtsImbdiBwY9Lf5/JidqqrNnDg6LR1XH Se0Mlb3kDA68wzj4aX6IKP8edThjDkhrYgsoI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=aNGQLRTnPxlP6A96D7J1ivHff8xTlXOO4TAacZru318=; b=aVTA/3I/2QPiamAT8K+yKjpRBrr6x4x0av4azaIE5RQxZjVWs0LdtqzQwmjb1dngIS Mu2CmulI7e7CEIL359kEtK2tAc7DCDfvBHydUuyWW5ab5TjeyUP9vSBxK9BDRL5Im01B TOa/LOedJFYC3YrGwtVGZewjcoiGq+vNnlPEZgxecrboTLJLp8KrDNIDoJ4pOg5Gsm6W TXIv/A0r4Tv+dF1hSbGSrYvG68HyBTw8wNowvt0jO+0j2xYNwf+MMN7ZvBLQ8Wu/lXQS uaVNXZ6E0g/jWUwQbpyYAZ/W+X7LfCXoxdWoxQfKCDE7K6svEjMd1KT2mxMxXV2PkqkM eGJw== X-Gm-Message-State: AJIora/MrRS3rpoX8Fsf5YUQBfUnFAAah9mhsscqIbtxFUGjJfuxBxLc Ur7uymbat7X5tSnORCgGAzRDo6XYyOH+kw== X-Google-Smtp-Source: AGRyM1sW5lx3Slj726RXZEGv5WZ7pNAuYrxHGJowrHZRoGZVE59uH/w0nSGFMTcUJpW2vMINSFhH7Q== X-Received: by 2002:a05:6402:2b88:b0:43a:6c58:6c64 with SMTP id fj8-20020a0564022b8800b0043a6c586c64mr27065401edb.348.1658991790073; Thu, 28 Jul 2022 00:03:10 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-79-31-31-9.retail.telecomitalia.it. [79.31.31.9]) by smtp.gmail.com with ESMTPSA id r18-20020aa7d152000000b0042de3d661d2sm154742edo.1.2022.07.28.00.03.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Jul 2022 00:03:09 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-can@vger.kernel.org, Marc Kleine-Budde , Jeroen Hofstee , michael@amarulasolutions.com, Amarula patchwork , Oliver Hartkopp , Dario Binacchi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wolfgang Grandegger , netdev@vger.kernel.org Subject: [PATCH v4 5/7] can: slcan: use the generic can_change_mtu() Date: Thu, 28 Jul 2022 09:02:52 +0200 Message-Id: <20220728070254.267974-6-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> References: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" It is useless to define a custom function that does nothing but always return the same error code. Better to use the generic can_change_mtu() function. Signed-off-by: Dario Binacchi --- (no changes since v1) drivers/net/can/slcan/slcan-core.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slc= an-core.c index bd8e84ded051..d12d98426f37 100644 --- a/drivers/net/can/slcan/slcan-core.c +++ b/drivers/net/can/slcan/slcan-core.c @@ -742,16 +742,11 @@ static int slcan_netdev_open(struct net_device *dev) return err; } =20 -static int slcan_netdev_change_mtu(struct net_device *dev, int new_mtu) -{ - return -EINVAL; -} - 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 slcan_netdev_change_mtu, + .ndo_change_mtu =3D can_change_mtu, }; =20 /****************************************** --=20 2.32.0 From nobody Sat Feb 7 09:49:22 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA249C19F2A for ; Thu, 28 Jul 2022 07:04:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234740AbiG1HEI (ORCPT ); Thu, 28 Jul 2022 03:04:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34718 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234532AbiG1HDZ (ORCPT ); Thu, 28 Jul 2022 03:03:25 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 618765F9AD for ; Thu, 28 Jul 2022 00:03:13 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id a89so1008219edf.5 for ; Thu, 28 Jul 2022 00:03:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rbjoK64u0Nv21CxxlQFKwTPmVGnv7nDMih2pZ9805sY=; b=C7FiLKyPZ4FCyqVqKHTH0u3kzThIUIHGzGmpENUKjs7lLn7nuUq/F0CDRctZUOrMk0 t/sOrj4XKkHTilO8LlZmAL9oP2tcS+Sy+UE/uX2MEMsB1NNAd7leYUH/HnurR9cskWjj Rz7KsIi2lK03nyurAxH0h8wZB/OCTTkST0yaY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rbjoK64u0Nv21CxxlQFKwTPmVGnv7nDMih2pZ9805sY=; b=an8UloI8KVaRl1XHWJmvydcmfc70QtNxF40yQJOQxhspyeR7GsNvwtXSPnU0rTV+U0 azu7kwxRZiyRQ34e+u03ZaAWStH4BnhvtNrLpUOqwIYohgGcKwFU26OdiizYNSP0N+ek 01QvQjqSZfgAnZN0oHJZM7Ra37rFAb/cQMC21XfIpidZCA3btSHYgYdPISxkLtry1OYu EOJJkAixIlYyDEzXAL9Qo5abH2pg1mUjvae7GzngDYCOe+YXmZKVu8W3xjOODysqexVh 1SRP5bGve7ZgLHADiHIAPVQkO/VNb4HX9AZ1uPasTVqIVKGI3iZpbn3MpI4qSyNO8ryc W2Zg== X-Gm-Message-State: AJIora+DgBHKDu1aksitv9j5PKU0QlvhCShuRadLdW+4VGQYiY+ax372 xmkL+NdpTmF/vpooiHw2Y9W02wyhAhh4lA== X-Google-Smtp-Source: AGRyM1uBR5AmviksetzaG5WE2+2jyI37tQsV8728O+HE444Wk7IkXUhiFt8/ACmFoia+fP8TRbtmTg== X-Received: by 2002:a05:6402:194f:b0:43a:298f:f39c with SMTP id f15-20020a056402194f00b0043a298ff39cmr26569587edz.106.1658991791472; Thu, 28 Jul 2022 00:03:11 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-79-31-31-9.retail.telecomitalia.it. [79.31.31.9]) by smtp.gmail.com with ESMTPSA id r18-20020aa7d152000000b0042de3d661d2sm154742edo.1.2022.07.28.00.03.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Jul 2022 00:03:11 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-can@vger.kernel.org, Marc Kleine-Budde , Jeroen Hofstee , michael@amarulasolutions.com, Amarula patchwork , Oliver Hartkopp , Dario Binacchi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wolfgang Grandegger , netdev@vger.kernel.org Subject: [PATCH v4 6/7] can: slcan: add support for listen-only mode Date: Thu, 28 Jul 2022 09:02:53 +0200 Message-Id: <20220728070254.267974-7-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> References: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" For non-legacy, i.e. ip based configuration, add support for listen-only mode. If listen-only is requested send a listen-only ("L\r") command instead of an open ("O\r") command to the adapter. Signed-off-by: Dario Binacchi --- (no changes since v2) Changes in v2: - Remove comment on listen-only command. - Update the commit subject and description. drivers/net/can/slcan/slcan-core.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slc= an-core.c index d12d98426f37..45e521910236 100644 --- a/drivers/net/can/slcan/slcan-core.c +++ b/drivers/net/can/slcan/slcan-core.c @@ -726,10 +726,20 @@ static int slcan_netdev_open(struct net_device *dev) } } =20 - err =3D slcan_transmit_cmd(sl, "O\r"); - if (err) { - netdev_err(dev, "failed to send open command 'O\\r'\n"); - goto cmd_transmit_failed; + if (sl->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) { + err =3D slcan_transmit_cmd(sl, "L\r"); + if (err) { + netdev_err(dev, + "failed to send listen-only command 'L\\r'\n"); + goto cmd_transmit_failed; + } + } else { + err =3D slcan_transmit_cmd(sl, "O\r"); + if (err) { + netdev_err(dev, + "failed to send open command 'O\\r'\n"); + goto cmd_transmit_failed; + } } } =20 @@ -816,6 +826,7 @@ static int slcan_open(struct tty_struct *tty) /* Configure CAN metadata */ sl->can.bitrate_const =3D slcan_bitrate_const; sl->can.bitrate_const_cnt =3D ARRAY_SIZE(slcan_bitrate_const); + sl->can.ctrlmode_supported =3D CAN_CTRLMODE_LISTENONLY; =20 /* Configure netdev interface */ sl->dev =3D dev; --=20 2.32.0 From nobody Sat Feb 7 09:49:22 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5BBFCC04A68 for ; Thu, 28 Jul 2022 07:04:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234422AbiG1HEM (ORCPT ); Thu, 28 Jul 2022 03:04:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34734 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234619AbiG1HDZ (ORCPT ); Thu, 28 Jul 2022 03:03:25 -0400 Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B0A875F9BF for ; Thu, 28 Jul 2022 00:03:13 -0700 (PDT) Received: by mail-ed1-x52f.google.com with SMTP id m8so991962edd.9 for ; Thu, 28 Jul 2022 00:03:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fDjEmDyORVH40LT30HT7nddNnjTd9U3ufOmG3gtdwn4=; b=bhtAgngU0ARmVRA+ekvUAJt/91+Kyzk4BLE5J+upuCzSXKfnkw4CRLBDKZ+WYbLbaz P4jz1l6MzKgopkdCduGCdcy4eKqeECcgE8bISqw9VUyMMzEiwta+BQahMbSk8jkNItHB 5AZNxbQ3Mqu8N4xD2GFEJ9+PQ0B9n3NppUEMs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fDjEmDyORVH40LT30HT7nddNnjTd9U3ufOmG3gtdwn4=; b=IlK3uoqwC2WyLVA/ySx2DZGpdK5f5BGBf9uah5Alol355zM0zwbrGHet/lm9zFN4P6 +48xK08ITRI+V0/YOueq1GsI5ScbL7C4/YzWTVHuF633wRMQ6gTOn8VW18wYpK5uKInb 2SmMka1YW/b//05lniXfQPusGsPWzyhvcNLjt6Htc33thj2t0szczh0Y9ssTwthCnrOD 3is7VAmgCOFJwJRFFPyWHdTd0ZyQ3zoWmj1lCeocgu4C1yOyt4nb9S3r0G0h0GA+HlHW tvEg8Je7ccD37qpm/kUMrBWgEaPwV8qiJKjHSNnMI7pnd4ccDJq4dBcW+tgzVLEwXkDJ 4cyA== X-Gm-Message-State: AJIora/X5JiuyAJauhwcy4gxNOQUFDQ8pgXOVl4f55g38bI0St7wQRKF kwhIoIl1+FdpO9TKaaVMUHXv2S36zC0eXg== X-Google-Smtp-Source: AGRyM1tiqzR09UHp1JH3MSCIvelLBjjOZqohNSPDse2yML5BPTWiji9/+KZTUNVZXouGXZpzgbFjSg== X-Received: by 2002:a05:6402:54:b0:43b:5cbd:d5db with SMTP id f20-20020a056402005400b0043b5cbdd5dbmr27268474edu.264.1658991792820; Thu, 28 Jul 2022 00:03:12 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-79-31-31-9.retail.telecomitalia.it. [79.31.31.9]) by smtp.gmail.com with ESMTPSA id r18-20020aa7d152000000b0042de3d661d2sm154742edo.1.2022.07.28.00.03.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Jul 2022 00:03:12 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: linux-can@vger.kernel.org, Marc Kleine-Budde , Jeroen Hofstee , michael@amarulasolutions.com, Amarula patchwork , Oliver Hartkopp , Dario Binacchi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Wolfgang Grandegger , netdev@vger.kernel.org Subject: [PATCH v4 7/7] MAINTAINERS: Add maintainer for the slcan driver Date: Thu, 28 Jul 2022 09:02:54 +0200 Message-Id: <20220728070254.267974-8-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> References: <20220728070254.267974-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" At the suggestion of its author Oliver Hartkopp ([1]), I take over the maintainer-ship and add myself to the authors of the driver. [1] https://lore.kernel.org/all/507b5973-d673-4755-3b64-b41cb9a13b6f@hartko= pp.net Suggested-by: Oliver Hartkopp Signed-off-by: Dario Binacchi --- Changes in v4: - Drop the patch "ethtool: add support to get/set CAN bit time register". - Drop the patch "can: slcan: add support to set bit time register (btr)". - Remove the RFC prefix from the series. Changes in v3: - Put the series as RFC again. - Pick up the patch "can: slcan: use KBUILD_MODNAME and define pr_fmt to re= place hardcoded names". - Add the patch "ethtool: add support to get/set CAN bit time register" to the series. - Add the patch "can: slcan: add support to set bit time register (btr)" to the series. - Replace the link https://marc.info/?l=3Dlinux-can&m=3D165806705927851&w= =3D2 with https://lore.kernel.org/all/507b5973-d673-4755-3b64-b41cb9a13b6f@hartkopp= .net. - Add the `Suggested-by' tag. Changes in v2: - Add the patch "MAINTAINERS: Add myself as maintainer of the SLCAN driver" to the series. MAINTAINERS | 6 ++++++ drivers/net/can/slcan/slcan-core.c | 1 + 2 files changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index c3fc5ff6ffb8..c82b6e74220e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18450,6 +18450,12 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/g= it/vbabka/slab.git F: include/linux/sl?b*.h F: mm/sl?b* =20 +SLCAN CAN NETWORK DRIVER +M: Dario Binacchi +L: linux-can@vger.kernel.org +S: Maintained +F: drivers/net/can/slcan/ + SLEEPABLE READ-COPY UPDATE (SRCU) M: Lai Jiangshan M: "Paul E. McKenney" diff --git a/drivers/net/can/slcan/slcan-core.c b/drivers/net/can/slcan/slc= an-core.c index 45e521910236..f079c8f2296b 100644 --- a/drivers/net/can/slcan/slcan-core.c +++ b/drivers/net/can/slcan/slcan-core.c @@ -63,6 +63,7 @@ MODULE_ALIAS_LDISC(N_SLCAN); MODULE_DESCRIPTION("serial line CAN interface"); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Oliver Hartkopp "); +MODULE_AUTHOR("Dario Binacchi "); =20 /* maximum rx buffer len: extended CAN frame with timestamp */ #define SLCAN_MTU (sizeof("T1111222281122334455667788EA5F\r") + 1) --=20 2.32.0