Received: by 2002:a05:7412:3b8b:b0:fc:a2b0:25d7 with SMTP id nd11csp3108216rdb; Tue, 13 Feb 2024 07:09:46 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCW1rdV6XY4c2zNJP52O6ZnNoJg7+B7DbV7wDloWJ1d/5qxTe6yyCq87vl48pXNpy8mbTVxPhZU0qOzW9mKnT8yugZL77RvRHUUB0QUNAQ== X-Google-Smtp-Source: AGHT+IHonEAAxysuyOfj2epdwARlkKB4OKsicj225iK6oYsvbG11wBXkcUbjzjRASO3+G5Rg5UWT X-Received: by 2002:ae9:f812:0:b0:785:ca45:8264 with SMTP id x18-20020ae9f812000000b00785ca458264mr8586857qkh.28.1707836986198; Tue, 13 Feb 2024 07:09:46 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707836986; cv=pass; d=google.com; s=arc-20160816; b=A9pWI10Ig0h9YSTe7s9aL0pRhaXKATmWNsN30Breg7B0TdFs6+g+pvmF2J8a0YQzX2 A3oOmlQwRfijFdiiZTC4UpL02Sl/2MYjSZuVpVD/ZTTHRtW/R7u9Yo36d4KukHQKNEOI 6HzBOXrGtih2tURQZpmr91wteyKLf9XMbFwBoyk5zlPSGGkxvRKOfNan76xbHefOT9Go DDG+b8h3iQ/1oQD0vH4xzRzXL2J3jre7Dql6jGcHcDCE7KWFUVZr0ixSXVcueiT7MBDO LxFzv7Rj8s8ACfE9jXO3iSLVRD1Y7Ds/xrztOIz6Vk9kBzvuGQqvIcA7nNEykFEXqvKv X75g== 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=R1uKYiprcO54ajkzkmno8J7tplqI0DAVEd2mUYJA06g=; fh=+CCrVFWfPPsgdnwrrkPs529q+mU2KP4s30tuO/rrjVE=; b=GFkEFSsfv/WVoXR8BC9nVu0G1z+BAUVNyEZ4a53SaSeEuR8LRmxK8UUUim25E7uNIk LFOMNgsQe1Lu14tYwjhas1FT4br9N/4osNg9VGUdnepTeaeydhj1hI34u5jyYrhOhNlT 59xDFLH623nWyVsqhieBPLqI2LnHyiyqoL2TdMudl4kL+6GJem6YEcCUL3IG7C5xHLVV 5mEKHE4HKdPYrtT+qQWYD0n6K74M+dZUB0l9jHl16whAp6d6+9Rhrcq/8xwusq6R8Her aPFv2NpAAIn50K10bXe6bMm57I4AgppZt5zK4CY7I3OOdQMF6OqiXowAJsr0ojmcl4nf HA3Q==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=n6bv22s6; 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-63765-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-63765-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com X-Forwarded-Encrypted: i=2; AJvYcCXZY6a6CAIP/IwSxZqDgeYQKoK/xwga7V9jgWZKBb/6oqFXDxByhsdrUs55/JIFaUVpmBrTHxEdVcPJ1ypGiunakXm7Mbr50r0e/7CPig== Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id pj7-20020a05620a1d8700b0078403a5e00csi8276689qkn.252.2024.02.13.07.09.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Feb 2024 07:09:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-63765-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=n6bv22s6; 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-63765-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-63765-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 ny.mirrors.kernel.org (Postfix) with ESMTPS id 3F4BA1C28033 for ; Tue, 13 Feb 2024 15:06:39 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 731FF5EE6D; Tue, 13 Feb 2024 15:04:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="n6bv22s6" Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.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 DDFCA5DF18; Tue, 13 Feb 2024 15:04:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707836681; cv=none; b=FxFqZ40Bor90aS+NzzGLpWrwSQlqZaRQsl/TSLOcFHbEaZ25L3aNQH8bO2I6nnevG4FVzSvSXbZgMHLfsppBoqDpDoYOnXx3ZPET6FHvEFoJXY6bZ+WGH7+8uYPXv2L7lMszN8Rj7NdgsiW2dtVjSiOHe2UI+oOHhOrmkJVgxUg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707836681; c=relaxed/simple; bh=OZO9PxY7EJpy3qriHwydGP0GT1QPvBRdEFJw9EK2Apg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=ApM79ZTm4D1+83SQB41kaPIB320wwtZeHJeYzxndUnkyuyUdJ6xzpIa+1RBPXlD10kRVV6iHiYo3eH1mWZqbKLLwrjCnj1WMSKFC91shsjO2dhnYVzrCBx/sYgPTzbQtG5ADNPy7WsQTaz+shwGRonv35EXM+ToLggAnv9YpSPU= 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=n6bv22s6; arc=none smtp.client-ip=217.70.183.201 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 0DF311BF204; Tue, 13 Feb 2024 15:04:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1707836677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=R1uKYiprcO54ajkzkmno8J7tplqI0DAVEd2mUYJA06g=; b=n6bv22s6Xu2eqbUIqKfcs06JBkGHOyZI9vFFDQXtwIb1dFHUSBo2UNEbaP9qr26CSZqNdL 8YlTuKwjXuM0y1jchX/DrKHgQ2iB9PgskHXIqRFhmmaByPGkdN1egc2Wknhqg4jMLsBQef EoVWklUFGblPKrgMCaLp2xkIbLIISB34EF/6IHkgv97t5TqUT6WIHqlYhXgW+V98SqDshV LD/QHHGpBPj28U6evCL0yBvxFSPrNm50EnQm1LNaPWCeIbxtHB3RkwrMcRn1sYNfOM8zOd HKwWiMZivkankZq087C07VcjpGnHZ1LXZwkk5O/yP+AEYSUC3SwAH/fBIMv7Vw== 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 , Jonathan Corbet , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Piergiorgio Beruto , Oleksij Rempel , =?UTF-8?q?Nicol=C3=B2=20Veronese?= , Simon Horman , mwojtas@chromium.org Subject: [PATCH net-next v7 00/13] Introduce PHY listing and link_topology tracking Date: Tue, 13 Feb 2024 16:04:17 +0100 Message-ID: <20240213150431.1796171-1-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-GND-Sasl: maxime.chevallier@bootlin.com Hello everyone, This is V7 for the link topology addition, allowing to track all PHYs that are linked to netdevices. The main change in V7 is the protection of the main internal API entrypoints (link_topo_init/cleanup, link_topo_add/del_phy) by IS_REACHABLE(CONFIG_PHYLIB). That's restrictive, but it looks difficult to do otherwise while still keep the data structure opaque and not add dependency clutter with PHYLIB. As you can tell, I'm unsure about this, so please don't hesitate to comment on that part :) The other changes are very minor, the only one is a call to netdev_put in the .done() netlink callback. 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/link-topo-v6 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 | 46 +++ Documentation/networking/index.rst | 1 + .../networking/phy-link-topology.rst | 121 +++++++ MAINTAINERS | 2 + drivers/net/phy/Makefile | 2 +- drivers/net/phy/at803x.c | 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 | 55 ++++ drivers/net/phy/phy_link_topology.c | 105 +++++++ drivers/net/phy/phylink.c | 3 +- drivers/net/phy/sfp-bus.c | 15 +- include/linux/netdevice.h | 4 +- include/linux/phy.h | 6 + include/linux/phy_link_topology.h | 72 +++++ include/linux/phy_link_topology_core.h | 25 ++ include/linux/sfp.h | 8 +- include/uapi/linux/ethtool.h | 16 + include/uapi/linux/ethtool_netlink.h | 21 ++ net/core/dev.c | 9 + net/ethtool/Makefile | 2 +- net/ethtool/cabletest.c | 16 +- net/ethtool/netlink.c | 53 +++- net/ethtool/netlink.h | 10 + net/ethtool/phy.c | 297 ++++++++++++++++++ net/ethtool/plca.c | 19 +- net/ethtool/pse-pd.c | 13 +- net/ethtool/strset.c | 17 +- 30 files changed, 965 insertions(+), 43 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 include/linux/phy_link_topology_core.h create mode 100644 net/ethtool/phy.c -- 2.43.0