Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp5498030pxv; Wed, 21 Jul 2021 07:01:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyMu+Mryk6lpySeq9/Anwp5zcTIHtgmlevT0rTWzmL8nU3foSDB7NeO0CadFVMpipJz7/GZ X-Received: by 2002:a02:8529:: with SMTP id g38mr30682521jai.88.1626876098453; Wed, 21 Jul 2021 07:01:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626876098; cv=none; d=google.com; s=arc-20160816; b=Kmi/mJKLa/fXb5cXIixqDu2Xfc9I6WXaf00/Uu5dqb75kzR3cBiNwSjVSGi+g/bbjy dc4ZkqIVK/vWVP26nFF13jaB67ibGumkeqUGeJRehK+2Hp0+QCQFkegFU/y6xLXAbMZo Myh1Ano/ImCmdprZdodMNWCG6THRTEO1cKyax51uJ50Xrb/mt7aLWVmXGL3XMlHseX5j XLg5vWzLPVNVYIpH5+R0fu69/y8oy7p7h+jdiXrx83dhpOb23aMFyfkFRbDs7iB+rCnj d1DKo/Iyae6sZLzD+uOCDt2oQVuBQR3xvtwR1l1BB6VBENMcAsBq/z3IXknuM+7dipJp QUOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=dSqJAOlSxZ15myCAkE3t0lhY1ZlRYiFCDX+JzW8ZRDA=; b=c67hg20VMMYo/THDgrThNro2JCRIEKnr+GsrFUo9vcuh/MLSaKszLMAVooyRF6pUj7 m2pwJmDLdMqnl06bkja7D/3W12APUdW7L0/dbvTX4v6DW/UehhtgtXgi+F5N9B2S6aYv TK079fqlXE0b/wVnxp/atZ3GaghHgSJzNOrZKkUuBFi7lwr/yPUnT3J4BqWjO5X2mPQa 8mxFNZHFL5/U5Zq+tkzYSdAt3dImMsbctHHDXepELYYE5XdJFqhlallDtUCvHvMDdbmL dbiqcgzQexL9G+b7ls8PGP5yH3pzTuVCh+38VQPAHlW934YHeI8JY4vJOBbC+zgCrl5y N/zw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=nOgNsDCL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t3si28448668ile.109.2021.07.21.07.01.22; Wed, 21 Jul 2021 07:01:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=nOgNsDCL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236757AbhGUMTa (ORCPT + 99 others); Wed, 21 Jul 2021 08:19:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35178 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235751AbhGUMT3 (ORCPT ); Wed, 21 Jul 2021 08:19:29 -0400 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A58F9C061574; Wed, 21 Jul 2021 06:00:04 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id f190so1269309wmf.4; Wed, 21 Jul 2021 06:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=dSqJAOlSxZ15myCAkE3t0lhY1ZlRYiFCDX+JzW8ZRDA=; b=nOgNsDCL6wc9pRUlqpN6unXU3aVQqr4x+E2FR4N+q0wSAh2lq2sak70YQr2Tx1sXUH GRriCKrwBNWtCJ5D0jAv8iPNIvFEHjyhsP/i8HetZcOeMXfsFc2SbgsQW2R6dZPDFZvP dJhMSOZZhKXELovAa2EX0a1g5fQrQuDa12cq9FZ2EjD5MgsegYyzon/Gi/CBTU5vy+BX dhHQxtJ30KXQZ/1m+Wyp9c8Pgau9lDXjW8swo06UT4+UkS5NPjkIz6PJacf/4FgcwZla GNYX5fKbAP5+hPanppHD861o8aw2nTmIORMPg6GkbUKkJ/qWjARZimEKXWjR8Qvk12kI pZKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dSqJAOlSxZ15myCAkE3t0lhY1ZlRYiFCDX+JzW8ZRDA=; b=S3kD3G5i9aA+yT0oTwWTRXKyk1ur58pmg5GFrxCvY/trNv8PWJJQz0Zj6CPDlAAZfS RI2Yc5QcwteWzbPeOdD3R9x1KSI1dWRgryYLxbJ0K1udrIILcxRiRjARa/l1FKF5r/wh JSvDbI7psO9+5/CNrZGTEj/LHewpBfJxQUsht+YPwskiZDCLWx5vzmwXJn0oW3TPKQ8D oIOLCNh7e/KtYPm0FpRkqWheaN0DBuX3QdYymCoR1WcLjW1WTsaQjNIr2mJrhVzeN192 c5q6wdQKr3QvUw/DjuGBvoEpQdafliEdrw0Tbj+C1n6SMJK0fs4H0JdP5PkEIR4HvWVF uUyA== X-Gm-Message-State: AOAM533xIbqO8AxoTz2wRhEu93g8AdKr8AmKtyjNy23+aXG/pjkmpA1C RD36hTM0zxaUcFCqgXeg1lI= X-Received: by 2002:a7b:cd90:: with SMTP id y16mr37483562wmj.87.1626872403325; Wed, 21 Jul 2021 06:00:03 -0700 (PDT) Received: from Buzz.nordsys.de ([2a02:810d:d40:2317:2ef0:5dff:fe0a:a2d5]) by smtp.gmail.com with ESMTPSA id q7sm22483733wmq.33.2021.07.21.06.00.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Jul 2021 06:00:02 -0700 (PDT) From: Andre Naujoks To: Wolfgang Grandegger , Marc Kleine-Budde , "David S. Miller" , Jakub Kicinski , Stephane Grosjean , Vincent Mailhol , "Gustavo A. R. Silva" , Pavel Skripkin , Colin Ian King , Andre Naujoks , linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] Expose Peak USB device id in sysfs via phys_port_name. Date: Wed, 21 Jul 2021 14:59:25 +0200 Message-Id: <20210721125926.593283-1-nautsch2@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210721124048.590426-1-nautsch2@gmail.com> References: <20210721124048.590426-1-nautsch2@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The Peak USB CAN adapters can be assigned a device id via the Peak provided tools (pcan-settings). This id can currently not be set by the upstream kernel drivers, but some devices expose this id already. The id can be used for consistent naming of CAN interfaces regardless of order of attachment or recognition on the system. The classical CAN Peak USB adapters expose this id via bcdDevice (combined with another value) on USB-level in the sysfs tree and this value is then available in ID_REVISION from udev. This is not a feasible approach, when a single USB device offers more than one CAN-interface, like e.g. the PCAN-USB Pro FD devices. This patch exposes those ids via the, up to now unused, netdevice sysfs attribute phys_port_name as a simple decimal ASCII representation of the id. phys_port_id was not used, since the default print functions from net/core/net-sysfs.c output a hex-encoded binary value, which is overkill for a one-byte device id, like this one. Signed-off-by: Andre Naujoks --- drivers/net/can/usb/peak_usb/pcan_usb_core.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 e8f43ed90b72..f6cbb01a58cc 100644 --- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c +++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c @@ -408,6 +408,21 @@ static netdev_tx_t peak_usb_ndo_start_xmit(struct sk_buff *skb, return NETDEV_TX_OK; } +static int peak_usb_ndo_get_phys_port_name(struct net_device *netdev, + char *name, size_t len) +{ + const struct peak_usb_device *dev = netdev_priv(netdev); + int err; + + err = snprintf(name, len, "%u", dev->device_number); + + if (err >= len || err <= 0) { + return -EINVAL; + } + + return 0; +} + /* * start the CAN interface. * Rx and Tx urbs are allocated here. Rx urbs are submitted here. @@ -769,6 +784,7 @@ static const struct net_device_ops peak_usb_netdev_ops = { .ndo_stop = peak_usb_ndo_stop, .ndo_start_xmit = peak_usb_ndo_start_xmit, .ndo_change_mtu = can_change_mtu, + .ndo_get_phys_port_name = peak_usb_ndo_get_phys_port_name, }; /* -- 2.32.0