Received: by 2002:ab2:6d45:0:b0:1fb:d597:ff75 with SMTP id d5csp298649lqr; Wed, 5 Jun 2024 06:34:17 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUqlhu+CkidOeyfYbDrTGJnu8TFxPEikEBnYcwjKu6gtQW4SU1z0Fq9dAoBAsoPLWT7FuZ/Pk4mc8j+7q7idtS2M3KgNy67QvhAYLaQSw== X-Google-Smtp-Source: AGHT+IE89dR05TdjGAvWRhj6VYbQ0Lny423Ebh40HUs2YivSMxhWRQzVAdyKDFy5poRD1GDpBoTj X-Received: by 2002:a05:6a21:193:b0:1ac:e379:52fd with SMTP id adf61e73a8af0-1b2b6eb56c6mr3235305637.14.1717594456784; Wed, 05 Jun 2024 06:34:16 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717594456; cv=pass; d=google.com; s=arc-20160816; b=Rs7veSOLFlL5RoMqLpzuEjB2YqL6uxUQpcHxbL7rhgrTHuIUOyUSBshF2OduMGJaBi wdhsxfh1OtIdCgmI3fq/T7RMHfPRskI68+K9yXNbC7PgydOTbtirSYk2mNP3ywvaNpy4 5mMAcJ+lopE0l92KSmNdjiOnMJfw0J23uwSC0A6+Lcp7+CxNkIGO3KjUdxseRnrzwJJr UxHY97376+h4n4f2vtJnkBrHJlfxtO9Jv5c9XbuyV9wcv6toIEBWB18TSdNNXVADXCjl kV3/tkt7RCHUavpxeIYIHzYCW5Ww1HP6c7x7phc9ddwW/tKwMpCfsUJ/TUNYTGulkpvj 0/ng== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=3h1XvjI0XZYt3LesNdW6+GYYYHkZnvi8kRcMDn2oGi0=; fh=Dinp91LF2KcnzfyOXGg1vCezYXJAYX+8GKPCxLQjq1Q=; b=mbnv5c6Rb3r4fAIGpJduUBdRhOPu+SlwSsPNSKdITLPcsLs+BE+jrOyMonwMfgs0Bm TJL1IQP6SwKhNr5LbaM/8UOWj0v69a8TOiw6C7YMc2T67Gax33WbUksyXGmK1bQCgQtT qPqjp+l/5bFa4Wi56KiTwOFJq8mC+g2+1OObUu94F0iU4neZGPq+QaJdohO/FZtFVwaF m5yF04WVhMxGuDQxb3Es48WPpSGn+OIAJupj54r+jFXLXIWawwxFE2wSCB0uYVrupCc/ 1LDADujL44upVEkRyr5G3L0eL0yQM0rOr/bcMsKNLG2Gyxkp6zB6rgISCoikSYCE2TCV WEDA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=pwgLwFXk; arc=pass (i=1 spf=pass spfdomain=bootlin.com dkim=pass dkdomain=bootlin.com dmarc=pass fromdomain=bootlin.com); spf=pass (google.com: domain of linux-kernel+bounces-202641-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-202641-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id 41be03b00d2f7-6c359e09a6csi10036260a12.400.2024.06.05.06.34.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 06:34:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-202641-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=pwgLwFXk; arc=pass (i=1 spf=pass spfdomain=bootlin.com dkim=pass dkdomain=bootlin.com dmarc=pass fromdomain=bootlin.com); spf=pass (google.com: domain of linux-kernel+bounces-202641-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-202641-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 5F4C6295B67 for ; Wed, 5 Jun 2024 13:23:27 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4C1471A2FD3; Wed, 5 Jun 2024 12:49:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="pwgLwFXk" Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200]) (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 CB3621A2FC3; Wed, 5 Jun 2024 12:49:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.200 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717591769; cv=none; b=O7oKm/W48k73nM2InO/RyuWW8OowUmnHDxPC836/OO2u7t6U12eE9C4Eshgto9QrmgRXPa3t7+YciuQenQJwAalOc1EQH5NbMtDF8i+lzmVtuuJ2G8isPgU6ubd1/QEKcsINYj/FO9PvKG0nkenxj5WfjzO9++hA6xHlRfKUn3M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717591769; c=relaxed/simple; bh=2P9IxU/Gw3VjMvVgMsOpTNkZuXjJtFEu07879BO8ysw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=RDzgQQ0HDVrDwfxVA+YOEunIqA8Z5znh7dGECeLP0QKU2AE8lm8aJY9VIDA8jp34ij0hJkD5gk6WK3GAWm5Xy//nNY/B/F+uFH9OAz4aNC54KmGRMCPVkjsO96Ri5CkTwNKAZ7mqofIw+htlN37EAGhIlW0o0Mat/J9xRvmEGRs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=pwgLwFXk; arc=none smtp.client-ip=217.70.183.200 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Received: by mail.gandi.net (Postfix) with ESMTPSA id DDF592000C; Wed, 5 Jun 2024 12:49:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1717591765; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3h1XvjI0XZYt3LesNdW6+GYYYHkZnvi8kRcMDn2oGi0=; b=pwgLwFXkfkonB/FhcANcUMY/VkhXByqbbe9bFSgyj8qnzJsIqO3CxSniU6omao6KcWiah/ ZKIKc9MKXZ97R+XevG1Jg5hP/YijKu1TbafAr1zJqVeVgqDGol78m4L2ADvntL04mKImhl JTmFHCHGLcW6f9XtC7n+44MHDcpyZTomXFaJF30H4hGW5uYDZoeFjIcG7QcANS71eF7v7C X8SDoPIZj7vPzO5XDRKp1xINMKxbcVKubuqEMd5Z91F/sH869PWFyLq9aFmpHLih8Q7g70 Iv+F6d6tLYe5XhKKVBXzDg+rftpg/gjBbDa0yJHPKqg7WJOFl3Ryd5kKO5Qo+g== From: Maxime Chevallier To: davem@davemloft.net Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, Andrew Lunn , Jakub Kicinski , Eric Dumazet , Paolo Abeni , Russell King , linux-arm-kernel@lists.infradead.org, Christophe Leroy , Herve Codina , Florian Fainelli , Heiner Kallweit , Vladimir Oltean , =?UTF-8?q?K=C3=B6ry=20Maincent?= , Jesse Brandeburg , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Piergiorgio Beruto , Oleksij Rempel , =?UTF-8?q?Nicol=C3=B2=20Veronese?= , Simon Horman , mwojtas@chromium.org, Nathan Chancellor , Antoine Tenart Subject: [PATCH net-next v12 00/13] Introduce PHY listing and link_topology tracking Date: Wed, 5 Jun 2024 14:49:05 +0200 Message-ID: <20240605124920.720690-1-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.45.1 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: 8bit X-GND-Sasl: maxime.chevallier@bootlin.com Hello everyone, This is V12 for the link topology addition, allowing to track all PHYs that are linked to netdevices. This version is based on the V11 that was partially applied during last cycle, then reverted as some issues were found by Nathan and Heiner, which lead som some discussions to address them. Therefore, all issues that were reported and the proposed fixes (thanks Heiner !) are taken into account, all of which ended-up in patch 01/13. The rest of the series is mostly untouched, the main points being an update of the PSE-PD part following the PoE support added by Köry and some fixes regarding the documentation (a broken ref found by Jakub). I've gathered all of Andrew's reviews on V11, however as I had to rework the pse-pd part a bit, I haven't added the tag on this patch (patch 10/13). Discussions on the patch 01/13 updates can be found here : https://lore.kernel.org/netdev/20240412104615.3779632-1-maxime.chevallier@bootlin.com/ https://lore.kernel.org/netdev/20240429131008.439231-1-maxime.chevallier@bootlin.com/ https://lore.kernel.org/netdev/20240507102822.2023826-1-maxime.chevallier@bootlin.com/ As a remainder, here's what the PHY listings would look like : - eth0 has a 88x3310 acting as media converter, and an SFP module with an embedded 88e1111 PHY - eth2 has a 88e1510 PHY # ethtool --show-phys * PHY for eth0: PHY index: 1 Driver name: mv88x3310 PHY device name: f212a600.mdio-mii:00 Downstream SFP bus name: sfp-eth0 PHY id: 0 Upstream type: MAC PHY for eth0: PHY index: 2 Driver name: Marvell 88E1111 PHY device name: i2c:sfp-eth0:16 PHY id: 21040322 Upstream type: PHY Upstream PHY index: 1 Upstream SFP name: sfp-eth0 PHY for eth2: PHY index: 1 Driver name: Marvell 88E1510 PHY device name: f212a200.mdio-mii:00 PHY id: 21040593 Upstream type: MAC Ethtool patches : https://github.com/minimaxwell/ethtool/tree/mc/main Link to v11: https://lore.kernel.org/netdev/20240404093004.2552221-1-maxime.chevallier@bootlin.com/ Link to V10: https://lore.kernel.org/netdev/20240304151011.1610175-1-maxime.chevallier@bootlin.com/ Link to V9: https://lore.kernel.org/netdev/20240228114728.51861-1-maxime.chevallier@bootlin.com/ Link to V8: https://lore.kernel.org/netdev/20240220184217.3689988-1-maxime.chevallier@bootlin.com/ Link to V7: https://lore.kernel.org/netdev/20240213150431.1796171-1-maxime.chevallier@bootlin.com/ Link to V6: https://lore.kernel.org/netdev/20240126183851.2081418-1-maxime.chevallier@bootlin.com/ Link to V5: https://lore.kernel.org/netdev/20231221180047.1924733-1-maxime.chevallier@bootlin.com/ Link to V4: https://lore.kernel.org/netdev/20231215171237.1152563-1-maxime.chevallier@bootlin.com/ Link to V3: https://lore.kernel.org/netdev/20231201163704.1306431-1-maxime.chevallier@bootlin.com/ Link to V2: https://lore.kernel.org/netdev/20231117162323.626979-1-maxime.chevallier@bootlin.com/ Link to V1: https://lore.kernel.org/netdev/20230907092407.647139-1-maxime.chevallier@bootlin.com/ Maxime Chevallier (13): net: phy: Introduce ethernet link topology representation net: sfp: pass the phy_device when disconnecting an sfp module's PHY net: phy: add helpers to handle sfp phy connect/disconnect net: sfp: Add helper to return the SFP bus name net: ethtool: Allow passing a phy index for some commands netlink: specs: add phy-index as a header parameter net: ethtool: Introduce a command to list PHYs on an interface netlink: specs: add ethnl PHY_GET command set net: ethtool: plca: Target the command to the requested PHY net: ethtool: pse-pd: Target the command to the requested PHY net: ethtool: cable-test: Target the command to the requested PHY net: ethtool: strset: Allow querying phy stats by index Documentation: networking: document phy_link_topology Documentation/netlink/specs/ethtool.yaml | 62 ++++ Documentation/networking/ethtool-netlink.rst | 52 +++ Documentation/networking/index.rst | 1 + .../networking/phy-link-topology.rst | 121 +++++++ MAINTAINERS | 1 + drivers/net/phy/Makefile | 2 +- drivers/net/phy/marvell-88x2222.c | 2 + drivers/net/phy/marvell.c | 2 + drivers/net/phy/marvell10g.c | 2 + drivers/net/phy/phy_device.c | 46 +++ drivers/net/phy/phy_link_topology.c | 105 ++++++ drivers/net/phy/phylink.c | 3 +- drivers/net/phy/qcom/at803x.c | 2 + drivers/net/phy/qcom/qca807x.c | 2 + drivers/net/phy/sfp-bus.c | 15 +- include/linux/netdevice.h | 4 +- include/linux/phy.h | 6 + include/linux/phy_link_topology.h | 82 +++++ include/linux/sfp.h | 8 +- include/uapi/linux/ethtool.h | 16 + include/uapi/linux/ethtool_netlink.h | 21 ++ net/core/dev.c | 15 + net/ethtool/Makefile | 2 +- net/ethtool/cabletest.c | 16 +- net/ethtool/netlink.c | 57 +++- net/ethtool/netlink.h | 10 + net/ethtool/phy.c | 306 ++++++++++++++++++ net/ethtool/plca.c | 19 +- net/ethtool/pse-pd.c | 16 +- net/ethtool/strset.c | 17 +- 30 files changed, 968 insertions(+), 45 deletions(-) create mode 100644 Documentation/networking/phy-link-topology.rst create mode 100644 drivers/net/phy/phy_link_topology.c create mode 100644 include/linux/phy_link_topology.h create mode 100644 net/ethtool/phy.c -- 2.45.1