From patchwork Fri May 22 21:30:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeremy Linton X-Patchwork-Id: 218671 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6BEEC433E0 for ; Fri, 22 May 2020 21:32:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A3E9120723 for ; Fri, 22 May 2020 21:32:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731141AbgEVVbL (ORCPT ); Fri, 22 May 2020 17:31:11 -0400 Received: from foss.arm.com ([217.140.110.172]:42312 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730976AbgEVVbK (ORCPT ); Fri, 22 May 2020 17:31:10 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5DBA41063; Fri, 22 May 2020 14:31:09 -0700 (PDT) Received: from mammon-tx2.austin.arm.com (mammon-tx2.austin.arm.com [10.118.28.62]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 4D5063F68F; Fri, 22 May 2020 14:31:09 -0700 (PDT) From: Jeremy Linton To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, madalin.bucur@oss.nxp.com, calvin.johnson@oss.nxp.com, linux-kernel@vger.kernel.org, Jeremy Linton Subject: [RFC 01/11] net: phy: Don't report success if devices weren't found Date: Fri, 22 May 2020 16:30:49 -0500 Message-Id: <20200522213059.1535892-2-jeremy.linton@arm.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200522213059.1535892-1-jeremy.linton@arm.com> References: <20200522213059.1535892-1-jeremy.linton@arm.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org C45 devices are to return 0 for registers they haven't implemented. This means in theory we can terminate the device search loop without finding any MMDs. In that case we want to immediately return indicating that nothing was found rather than continuing to probe and falling into the success state at the bottom. Signed-off-by: Jeremy Linton --- drivers/net/phy/phy_device.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index ac2784192472..245899b58a7d 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -742,6 +742,12 @@ static int get_phy_c45_ids(struct mii_bus *bus, int addr, u32 *phy_id, } } + /* no reported devices */ + if (*devs == 0) { + *phy_id = 0xffffffff; + return 0; + } + /* Now probe Device Identifiers for each device present. */ for (i = 1; i < num_ids; i++) { if (!(c45_ids->devices_in_package & (1 << i))) From patchwork Fri May 22 21:30:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeremy Linton X-Patchwork-Id: 218675 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0CEBCC433E0 for ; Fri, 22 May 2020 21:31:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D47C520723 for ; Fri, 22 May 2020 21:31:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731152AbgEVVbM (ORCPT ); Fri, 22 May 2020 17:31:12 -0400 Received: from foss.arm.com ([217.140.110.172]:42324 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731128AbgEVVbK (ORCPT ); Fri, 22 May 2020 17:31:10 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E850E106F; Fri, 22 May 2020 14:31:09 -0700 (PDT) Received: from mammon-tx2.austin.arm.com (mammon-tx2.austin.arm.com [10.118.28.62]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E0C5D3F68F; Fri, 22 May 2020 14:31:09 -0700 (PDT) From: Jeremy Linton To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, madalin.bucur@oss.nxp.com, calvin.johnson@oss.nxp.com, linux-kernel@vger.kernel.org, Jeremy Linton Subject: [RFC 02/11] net: phy: Simplify MMD device list termination Date: Fri, 22 May 2020 16:30:50 -0500 Message-Id: <20200522213059.1535892-3-jeremy.linton@arm.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200522213059.1535892-1-jeremy.linton@arm.com> References: <20200522213059.1535892-1-jeremy.linton@arm.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Since we are already checking for *devs == 0 after the loop terminates, we can add a mostly F's check as well. With that change we can simplify the return/break sequence inside the loop. Add a valid_phy_id() macro for this, since we will be using it in a couple other places. Signed-off-by: Jeremy Linton --- drivers/net/phy/phy_device.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 245899b58a7d..7746c07b97fe 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -695,6 +695,11 @@ static int get_phy_c45_devs_in_pkg(struct mii_bus *bus, int addr, int dev_addr, return 0; } +static bool valid_phy_id(int val) +{ + return (val > 0 && ((val & 0x1fffffff) != 0x1fffffff)); +} + /** * get_phy_c45_ids - reads the specified addr for its 802.3-c45 IDs. * @bus: the target MII bus @@ -732,18 +737,12 @@ static int get_phy_c45_ids(struct mii_bus *bus, int addr, u32 *phy_id, phy_reg = get_phy_c45_devs_in_pkg(bus, addr, 0, devs); if (phy_reg < 0) return -EIO; - /* no device there, let's get out of here */ - if ((*devs & 0x1fffffff) == 0x1fffffff) { - *phy_id = 0xffffffff; - return 0; - } else { - break; - } + break; } } /* no reported devices */ - if (*devs == 0) { + if (!valid_phy_id(*devs)) { *phy_id = 0xffffffff; return 0; } From patchwork Fri May 22 21:30:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeremy Linton X-Patchwork-Id: 218674 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E642AC433E1 for ; Fri, 22 May 2020 21:31:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C69C120723 for ; Fri, 22 May 2020 21:31:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731186AbgEVVbQ (ORCPT ); Fri, 22 May 2020 17:31:16 -0400 Received: from foss.arm.com ([217.140.110.172]:42338 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731153AbgEVVbM (ORCPT ); Fri, 22 May 2020 17:31:12 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2F54E142F; Fri, 22 May 2020 14:31:12 -0700 (PDT) Received: from mammon-tx2.austin.arm.com (mammon-tx2.austin.arm.com [10.118.28.62]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2849E3F68F; Fri, 22 May 2020 14:31:12 -0700 (PDT) From: Jeremy Linton To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, madalin.bucur@oss.nxp.com, calvin.johnson@oss.nxp.com, linux-kernel@vger.kernel.org, Jeremy Linton Subject: [RFC 05/11] net: phy: Scan the entire MMD device space Date: Fri, 22 May 2020 16:30:53 -0500 Message-Id: <20200522213059.1535892-6-jeremy.linton@arm.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200522213059.1535892-1-jeremy.linton@arm.com> References: <20200522213059.1535892-1-jeremy.linton@arm.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The spec identifies devices in the top of the 32-bit device space. Some phys are actually responding that high. Lets try and capture their information as well. Starting at the reserved address 0, lets scan every single possible MMD address. The spec seems to indicate that every MMD should respond with the same devices list. But it seems this is being interpreted that only implemented MMDs need respond. Since it doesn't appear to hurt to scan reserved addresses, and the spec says that access to unimplemented registers should return 0 (despite this some devices appear to be returning 0xFFFFFFFF) we are just going to ignore anything that doesn't look like a valid return. Signed-off-by: Jeremy Linton --- drivers/net/phy/phy_device.c | 8 +++----- include/linux/phy.h | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 2d677490ecab..360c3a72c498 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -743,7 +743,8 @@ static int get_phy_c45_ids(struct mii_bus *bus, int addr, u32 *phy_id, bool valid_id = false; /* Find first non-zero Devices In package. Device zero is reserved - * for 802.3 c45 complied PHYs, so don't probe it at first. + * for 802.3 c45 complied PHYs, We will ask it for a devices list, + * but later we won't ask for identification from it. */ for (i = 0; i < num_ids && *devs == 0; i++) { ret = get_phy_c45_devs_in_pkg(bus, addr, i, devs); @@ -756,10 +757,7 @@ static int get_phy_c45_ids(struct mii_bus *bus, int addr, u32 *phy_id, * 10G PHYs have zero Devices In package, * e.g. Cortina CS4315/CS4340 PHY. */ - phy_reg = get_phy_c45_devs_in_pkg(bus, addr, 0, devs); - if (phy_reg < 0) - return -EIO; - break; + *devs = 0; } } diff --git a/include/linux/phy.h b/include/linux/phy.h index 2432ca463ddc..480a6b153227 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -346,7 +346,7 @@ enum phy_state { */ struct phy_c45_device_ids { u32 devices_in_package; - u32 device_ids[8]; + u32 device_ids[32]; }; struct macsec_context; From patchwork Fri May 22 21:30:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeremy Linton X-Patchwork-Id: 218672 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3B55AC433E0 for ; Fri, 22 May 2020 21:31:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 10FE720723 for ; Fri, 22 May 2020 21:31:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731244AbgEVVbf (ORCPT ); Fri, 22 May 2020 17:31:35 -0400 Received: from foss.arm.com ([217.140.110.172]:42348 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731174AbgEVVbO (ORCPT ); Fri, 22 May 2020 17:31:14 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4FBE5143B; Fri, 22 May 2020 14:31:14 -0700 (PDT) Received: from mammon-tx2.austin.arm.com (mammon-tx2.austin.arm.com [10.118.28.62]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 48A573F68F; Fri, 22 May 2020 14:31:14 -0700 (PDT) From: Jeremy Linton To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, madalin.bucur@oss.nxp.com, calvin.johnson@oss.nxp.com, linux-kernel@vger.kernel.org, Jeremy Linton Subject: [RFC 09/11] net: phy: Refuse to consider phy_id=0 a valid phy Date: Fri, 22 May 2020 16:30:57 -0500 Message-Id: <20200522213059.1535892-10-jeremy.linton@arm.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200522213059.1535892-1-jeremy.linton@arm.com> References: <20200522213059.1535892-1-jeremy.linton@arm.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This is another one of those questionable commits. In this case a bus tagged C45_FIRST refuses to create phys where the phy id is invalid. In general this is probably a good idea, but might cause problems. Another idea might be to create an additional flag (MDIOBUS_STRICT_ID?) for this case. Or we just ignore it and accept that the probe logic as it stands potentially creates bogus phy devices, to avoid the case where an actual phy exists but isn't responding correctly. Signed-off-by: Jeremy Linton --- drivers/net/phy/phy_device.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index acdada865864..e74f2ef6f12b 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -789,7 +789,9 @@ static int get_phy_c45_ids(struct mii_bus *bus, int addr, u32 *phy_id, if (!valid_id && c22_present) return 0; - *phy_id = 0; + if (valid_id || bus->probe_capabilities != MDIOBUS_C45_FIRST) + *phy_id = 0; + return 0; } @@ -853,6 +855,10 @@ struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45) if ((phy_id & 0x1fffffff) == 0x1fffffff) return ERR_PTR(-ENODEV); + /* Strict scanning should also ignore phy_id = 0 */ + if (phy_id == 0 && bus->probe_capabilities == MDIOBUS_C45_FIRST) + return ERR_PTR(-ENODEV); + return phy_device_create(bus, addr, phy_id, is_c45, &c45_ids); } EXPORT_SYMBOL(get_phy_device); From patchwork Fri May 22 21:30:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeremy Linton X-Patchwork-Id: 218673 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48AA8C433DF for ; Fri, 22 May 2020 21:31:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 33BCD20757 for ; Fri, 22 May 2020 21:31:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731206AbgEVVbW (ORCPT ); Fri, 22 May 2020 17:31:22 -0400 Received: from foss.arm.com ([217.140.110.172]:42408 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731179AbgEVVbP (ORCPT ); Fri, 22 May 2020 17:31:15 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4EFB91480; Fri, 22 May 2020 14:31:15 -0700 (PDT) Received: from mammon-tx2.austin.arm.com (mammon-tx2.austin.arm.com [10.118.28.62]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 3E9903F68F; Fri, 22 May 2020 14:31:15 -0700 (PDT) From: Jeremy Linton To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, f.fainelli@gmail.com, hkallweit1@gmail.com, linux@armlinux.org.uk, madalin.bucur@oss.nxp.com, calvin.johnson@oss.nxp.com, linux-kernel@vger.kernel.org, Jeremy Linton Subject: [RFC 11/11] net: example xgmac enable extended scanning Date: Fri, 22 May 2020 16:30:59 -0500 Message-Id: <20200522213059.1535892-12-jeremy.linton@arm.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200522213059.1535892-1-jeremy.linton@arm.com> References: <20200522213059.1535892-1-jeremy.linton@arm.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Since we know the xgmac hardware always has a c45 complaint bus, lets try scanning for c45 capable phys first. If we fail to find any, then it with fall back to c22 automatically. Signed-off-by: Jeremy Linton --- drivers/net/ethernet/freescale/xgmac_mdio.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/freescale/xgmac_mdio.c b/drivers/net/ethernet/freescale/xgmac_mdio.c index 96ee3bd89983..1d7313031be6 100644 --- a/drivers/net/ethernet/freescale/xgmac_mdio.c +++ b/drivers/net/ethernet/freescale/xgmac_mdio.c @@ -263,6 +263,7 @@ static int xgmac_mdio_probe(struct platform_device *pdev) bus->read = xgmac_mdio_read; bus->write = xgmac_mdio_write; bus->parent = &pdev->dev; + bus->probe_capabilities = MDIOBUS_C45_FIRST; snprintf(bus->id, MII_BUS_ID_SIZE, "%llx", (unsigned long long)res->start); /* Set the PHY base address */