From: Simon Horman <horms@kernel.org>
To: Oleksij Rempel <o.rempel@pengutronix.de>
Cc: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Woojung Huh <woojung.huh@microchip.com>,
Andrew Lunn <andrew+netdev@lunn.ch>,
kernel@pengutronix.de, linux-kernel@vger.kernel.org,
netdev@vger.kernel.org, UNGLinuxDriver@microchip.com,
Phil Elwell <phil@raspberrypi.org>
Subject: Re: [PATCH net-next v1 02/21] net: usb: lan78xx: Remove KSZ9031 PHY fixup
Date: Thu, 5 Dec 2024 17:12:03 +0000 [thread overview]
Message-ID: <20241205171203.GE2581@kernel.org> (raw)
In-Reply-To: <20241203072154.2440034-3-o.rempel@pengutronix.de>
On Tue, Dec 03, 2024 at 08:21:35AM +0100, Oleksij Rempel wrote:
> Remove the KSZ9031RNX PHY fixup from the lan78xx driver. The fixup applied
> specific RGMII pad skew configurations globally, but these settings violate the
> RGMII specification and cause more harm than benefit.
>
> Key issues with the fixup:
> 1. **Non-Compliant Timing**: The fixup's delay settings fall outside the RGMII
> specification requirements of 1.5 ns to 2.0 ns:
> - RX Path: Total delay of **2.16 ns** (PHY internal delay of 1.2 ns + 0.96
> ns skew).
> - TX Path: Total delay of **0.96 ns**, significantly below the RGMII minimum
> of 1.5 ns.
>
> 2. **Redundant or Incorrect Configurations**:
> - The RGMII skew registers written by the fixup do not meaningfully alter
> the PHY's default behavior and fail to account for its internal delays.
> - The TX_DATA pad skew was not configured, relying on power-on defaults
> that are insufficient for RGMII compliance.
>
> 3. **Micrel Driver Support**: By setting `PHY_INTERFACE_MODE_RGMII_ID`, the
> Micrel driver can calculate and assign appropriate skew values for the
> KSZ9031 PHY. This ensures better timing configurations without relying on
> external fixups.
>
> 4. **System Interference**: The fixup applied globally, reconfiguring all
> KSZ9031 PHYs in the system, even those unrelated to the LAN78xx adapter.
> This could lead to unintended and harmful behavior on unrelated interfaces.
>
> While the fixup is removed, a better mechanism is still needed to dynamically
> determine the optimal combination of PHY and MAC delays to fully meet RGMII
> requirements without relying on Device Tree or global fixups. This would allow
> for robust operation across different hardware configurations.
>
> The Micrel driver is capable of using the interface mode value to calculate and
> apply better skew values, providing a configuration much closer to the RGMII
> specification than the fixup. Removing the fixup ensures better default
> behavior and prevents harm to other system interfaces.
>
> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
> ---
> drivers/net/usb/lan78xx.c | 38 +++++---------------------------------
> 1 file changed, 5 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
...
> @@ -2283,14 +2263,11 @@ static struct phy_device *lan7801_phy_init(struct lan78xx_net *dev)
> netdev_err(dev->net, "no PHY driver found\n");
> return NULL;
> }
> - dev->interface = PHY_INTERFACE_MODE_RGMII;
> - /* external PHY fixup for KSZ9031RNX */
> - ret = phy_register_fixup_for_uid(PHY_KSZ9031RNX, 0xfffffff0,
> - ksz9031rnx_fixup);
> - if (ret < 0) {
> - netdev_err(dev->net, "Failed to register fixup for PHY_KSZ9031RNX\n");
> - return NULL;
> - }
> + dev->interface = PHY_INTERFACE_MODE_RGMII_ID;
> + /* The PHY driver is responsible to configure proper RGMII
> + * interface delays. Disable RGMII delays on MAC side.
> + */
> + lan78xx_write_reg(dev, MAC_RGMII_ID, 0);
>
> phydev->is_internal = false;
> }
nit: With this change ret is now set but otherwise unused in this function.
I would suggest a new patch, prior to this one, that drops the
other places where it is set. They seem to have no effect.
And then remove ret from this function in this patch.
> @@ -2349,9 +2326,6 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)
> if (phy_is_pseudo_fixed_link(phydev)) {
> fixed_phy_unregister(phydev);
> phy_device_free(phydev);
> - } else {
> - phy_unregister_fixup_for_uid(PHY_KSZ9031RNX,
> - 0xfffffff0);
> }
> }
> return -EIO;
...
next prev parent reply other threads:[~2024-12-05 17:12 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-03 7:21 [PATCH net-next v1 00/21] lan78xx: Preparations for PHYlink Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 01/21] net: usb: lan78xx: Remove LAN8835 PHY fixup Oleksij Rempel
2024-12-03 20:26 ` Andrew Lunn
2024-12-03 7:21 ` [PATCH net-next v1 02/21] net: usb: lan78xx: Remove KSZ9031 " Oleksij Rempel
2024-12-03 20:29 ` Andrew Lunn
2024-12-05 17:12 ` Simon Horman [this message]
2024-12-06 8:56 ` Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 03/21] net: usb: lan78xx: move functions to avoid forward definitions Oleksij Rempel
2024-12-03 20:29 ` Andrew Lunn
2024-12-03 7:21 ` [PATCH net-next v1 04/21] net: usb: lan78xx: Improve error reporting with %pe specifier Oleksij Rempel
2024-12-03 20:30 ` Andrew Lunn
2024-12-03 7:21 ` [PATCH net-next v1 05/21] net: usb: lan78xx: Fix error handling in MII read/write functions Oleksij Rempel
2024-12-03 20:31 ` Andrew Lunn
2024-12-03 7:21 ` [PATCH net-next v1 06/21] net: usb: lan78xx: Improve error handling in EEPROM and OTP operations Oleksij Rempel
2024-12-03 20:35 ` Andrew Lunn
2024-12-03 7:21 ` [PATCH net-next v1 07/21] net: usb: lan78xx: Add error handling to lan78xx_init_ltm Oleksij Rempel
2024-12-03 20:36 ` Andrew Lunn
2024-12-03 7:21 ` [PATCH net-next v1 08/21] net: usb: lan78xx: Add error handling to set_rx_max_frame_length and set_mtu Oleksij Rempel
2024-12-03 20:37 ` Andrew Lunn
2024-12-03 7:21 ` [PATCH net-next v1 09/21] net: usb: lan78xx: Add error handling to lan78xx_irq_bus_sync_unlock Oleksij Rempel
2024-12-03 20:38 ` Andrew Lunn
2024-12-03 7:21 ` [PATCH net-next v1 10/21] net: usb: lan78xx: Improve error handling in dataport and multicast writes Oleksij Rempel
2024-12-03 20:39 ` Andrew Lunn
2024-12-03 7:21 ` [PATCH net-next v1 11/21] net: usb: lan78xx: Add error handling to lan78xx_setup_irq_domain Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 12/21] net: usb: lan78xx: Add error handling to lan78xx_init_mac_address Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 13/21] net: usb: lan78xx: Add error handling to lan78xx_set_mac_addr Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 14/21] net: usb: lan78xx: Add error handling to lan78xx_get_regs Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 15/21] net: usb: lan78xx: Simplify lan78xx_update_reg Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 16/21] net: usb: lan78xx: Fix return value handling in lan78xx_set_features Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 17/21] net: usb: lan78xx: Use ETIMEDOUT instead of ETIME in lan78xx_stop_hw Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 18/21] net: usb: lan78xx: Use function-specific label in lan78xx_mac_reset Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 19/21] net: usb: lan78xx: Improve error handling in lan78xx_phy_wait_not_busy Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 20/21] net: usb: lan78xx: Rename lan78xx_phy_wait_not_busy to lan78xx_mdiobus_wait_not_busy Oleksij Rempel
2024-12-03 7:21 ` [PATCH net-next v1 21/21] net: usb: lan78xx: Improve error handling in WoL operations Oleksij Rempel
2024-12-03 20:23 ` [PATCH net-next v1 00/21] lan78xx: Preparations for PHYlink Andrew Lunn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241205171203.GE2581@kernel.org \
--to=horms@kernel.org \
--cc=UNGLinuxDriver@microchip.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kernel@pengutronix.de \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=o.rempel@pengutronix.de \
--cc=pabeni@redhat.com \
--cc=phil@raspberrypi.org \
--cc=woojung.huh@microchip.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).