Received: by 2002:a25:ef43:0:0:0:0:0 with SMTP id w3csp498674ybm; Fri, 29 May 2020 05:28:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzwjROneUhDGUab+uh8W5gkUSs7jpty+Y7175iyXj63KaMPk66tyylaZnAq1N7VUNTvIRsn X-Received: by 2002:aa7:c418:: with SMTP id j24mr8198127edq.313.1590755286300; Fri, 29 May 2020 05:28:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590755286; cv=none; d=google.com; s=arc-20160816; b=QXqNfKEDcEek9knLtBNAxS3hHPqDaBvSmYJrHksNMmYMRW4piFL7jM7xMVrBdoOM5w GPJ3ILPRJsVSo8CM7raPog6Y2KyT7gD+I+trjy7as6yCr0BlBD19iDVlMIh58VGNdSFw KrDSNJo6uz2oRBnphFqmgkReGTXSxalWVuCYm9aQyJXMnSGbSwiIHkCyTe9zM8glyGcS YgUtJj165pM7S8hI4eWyMHpnrlnl2EsYHuRLcGNKYzQsRyIilQjG3YavqcwQafL9QDRn ijX5SQ6rtYOFMfpvI5qgAiC52id8fX5o+VxRZoi21vaxKN5/4UihcWDoA/dsQ8NcSE/h uvIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=miaVF3MTzoKSp7ORWQqbyPvsYFTTc9qLnj6qEF7CfnA=; b=rQyL2nPYdaMKj3kBJ6iTaJL5xXn2qKHFOKD9JHyE774gqgvdGlv4NRSoPAL+pzWlhI fyB3+Zf5mYNQ0g+/1o1gVV1DG3sULsy+z53T8Mu8MxWL86D9IR43JaS/g9N0QcQhWayj j56Iu5Oamd7TjCZLw26sEcJ6ePrjbmF64pTabGne4l/+0ofjyDcnwnL9WEJHg9C1ZDzv q7JfG8BltUhIB8pTiNSjyaSDVWXN+dUqUkIrVFYFdzVPoOvv6Hnimw9Sgg/8izg+dhik lwb4E+hvGPp/xO5l42yDx92oraG/ULbtJjyufK1BBbedT0Tk7rhFTwOSaFm1VwkKtQ27 TIdA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c4si5292123ejb.189.2020.05.29.05.27.41; Fri, 29 May 2020 05:28:06 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726799AbgE2MZw (ORCPT + 99 others); Fri, 29 May 2020 08:25:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49464 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726579AbgE2MZw (ORCPT ); Fri, 29 May 2020 08:25:52 -0400 Received: from baptiste.telenet-ops.be (baptiste.telenet-ops.be [IPv6:2a02:1800:120:4::f00:13]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A687EC08C5C8 for ; Fri, 29 May 2020 05:25:51 -0700 (PDT) Received: from ramsan ([IPv6:2a02:1810:ac12:ed60:21:946d:6344:ccc1]) by baptiste.telenet-ops.be with bizsmtp id kcRi2200155ue4H01cRi43; Fri, 29 May 2020 14:25:49 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan with esmtp (Exim 4.90_1) (envelope-from ) id 1jee4z-0005Pb-Sb; Fri, 29 May 2020 14:25:41 +0200 Received: from geert by rox.of.borg with local (Exim 4.90_1) (envelope-from ) id 1jee4z-0008Ah-Ot; Fri, 29 May 2020 14:25:41 +0200 From: Geert Uytterhoeven To: Sergei Shtylyov , "David S . Miller" , Jakub Kicinski Cc: Andrew Lunn , Oleksij Rempel , Philippe Schenker , Florian Fainelli , Heiner Kallweit , Russell King , Kazuya Mizuguchi , Grygorii Strashko , Wolfram Sang , netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH RFT] ravb: Mask PHY mode to avoid inserting delays twice Date: Fri, 29 May 2020 14:25:40 +0200 Message-Id: <20200529122540.31368-1-geert+renesas@glider.be> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Until recently, the Micrel KSZ9031 PHY driver ignored any PHY mode ("RGMII-*ID") settings, but used the hardware defaults, augmented by explicit configuration of individual skew values using the "*-skew-ps" DT properties. The lack of PHY mode support was compensated by the EtherAVB MAC driver, which configures TX and/or RX internal delay itself, based on the PHY mode. However, now the KSZ9031 driver has gained PHY mode support, delays may be configured twice, causing regressions. E.g. on the Renesas Salvator-X board with R-Car M3-W ES1.0, TX performance dropped from ca. 400 Mbps to 0.1-0.3 Mbps, as measured by nuttcp. As internal delay configuration supported by the KSZ9031 PHY is too limited for some use cases, the ability to configure MAC internal delay is deemed useful and necessary. Hence a proper fix would involve splitting internal delay configuration in two parts, one for the PHY, and one for the MAC. However, this would require adding new DT properties, thus breaking DTB backwards-compatibility. Hence fix the regression in a backwards-compatibility way, by letting the EtherAVB driver mask the PHY mode when it has inserted a delay, to avoid the PHY driver adding a second delay. This also fixes messages like: Micrel KSZ9031 Gigabit PHY e6800000.ethernet-ffffffff:00: *-skew-ps values should be used only with phy-mode = "rgmii" as the PHY no longer sees the original RGMII-*ID mode. Solving the issue by splitting configuration in two parts can be handled in future patches, and would require retaining a backwards-compatibility mode anyway. Fixes: bcf3440c6dd78bfe ("net: phy: micrel: add phy-mode support for the KSZ9031 PHY") Signed-off-by: Geert Uytterhoeven --- Tested on: - Salvator-X with R-Car H3 ES1.0 (limited too 100M, hardware erratum), - Salvator-X with R-Car M3-W ES1.0, - Salvator-XS with R-Car H3 ES2.0, - Salvator-XS with R-Car M3-N ES1.0, - Ebisu-4D with R-Car E3 ES1.0 (limited to 100M, no MAC TX delay). Needs testing on: - ULCB with various R-Car H3, M3-W, and M3-N SoCs and revisions, - HiHope RZ/G2M sub board, using RGMII-TXID, - Eagle and V3MSK with R-Car V3M, using RGMII-ID, Not affected by this patch, but may still be impacted by the micrel patch, as it changed skew values for all RGMII* modes, not just for RGMII-*ID modes, so needs testing: - Condor with R-Car V3H, using GEther MAC (support for TX/RX internal delay not yet implemented) and RGMII-ID. - V3HSK with R-Car V3H, using GEther MAC and RGMII, - Draak with R-Car D3 using EtherAVB MAC and RGMII (limited to 100M, no MAC TX delay). Reference: "Re: [PATCH net-next v3] net: phy: micrel: add phy-mode support for the KSZ9031 PHY" (https://lore.kernel.org/r/CAMuHMdU1ZmSm_tjtWxoFNako2fzmranGVz5qqD2YRNEFRjX0Sw@mail.gmail.com/) --- drivers/net/ethernet/renesas/ravb_main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 067ad25553b92e43..a442bcf64b9cd875 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -1014,6 +1014,7 @@ static int ravb_phy_init(struct net_device *ndev) struct ravb_private *priv = netdev_priv(ndev); struct phy_device *phydev; struct device_node *pn; + phy_interface_t iface; int err; priv->link = 0; @@ -1032,8 +1033,13 @@ static int ravb_phy_init(struct net_device *ndev) } pn = of_node_get(np); } - phydev = of_phy_connect(ndev, pn, ravb_adjust_link, 0, - priv->phy_interface); + + iface = priv->phy_interface; + if (priv->chip_id != RCAR_GEN2 && phy_interface_mode_is_rgmii(iface)) { + /* ravb_set_delay_mode() takes care of internal delay mode */ + iface = PHY_INTERFACE_MODE_RGMII; + } + phydev = of_phy_connect(ndev, pn, ravb_adjust_link, 0, iface); of_node_put(pn); if (!phydev) { netdev_err(ndev, "failed to connect PHY\n"); -- 2.17.1