RE: [PATCH net] net: phy: micrel: lan8814 fix reset of the QSGMII interface
From: Divya.Koppera
Date: Thu Nov 06 2025 - 09:07:52 EST
> -----Original Message-----
> From: Horatiu Vultur <horatiu.vultur@xxxxxxxxxxxxx>
> Sent: Thursday, November 6, 2025 2:37 PM
> To: andrew@xxxxxxx; hkallweit1@xxxxxxxxx; linux@xxxxxxxxxxxxxxx;
> davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx;
> pabeni@xxxxxxxxxx; Divya Koppera - I30481
> <Divya.Koppera@xxxxxxxxxxxxx>
> Cc: netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Horatiu Vultur -
> M31836 <Horatiu.Vultur@xxxxxxxxxxxxx>
> Subject: [PATCH net] net: phy: micrel: lan8814 fix reset of the QSGMII
> interface
>
> The lan8814 is a quad-phy and it is using QSGMII towards the MAC.
> The problem is that everytime when one of the ports is configured then the
> PCS is reseted for all the PHYs. Meaning that the other ports can loose traffic
> until the link is establish again.
> To fix this, do the reset one time for the entire PHY package.
>
> Fixes: ece19502834d ("net: phy: micrel: 1588 support for LAN8814 phy")
> Signed-off-by: Horatiu Vultur <horatiu.vultur@xxxxxxxxxxxxx>
> ---
> drivers/net/phy/micrel.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index
> 6a1a424e3b30f..01c87c9b77020 100644
> --- a/drivers/net/phy/micrel.c
> +++ b/drivers/net/phy/micrel.c
> @@ -4380,12 +4380,6 @@ static int lan8814_config_init(struct phy_device
> *phydev) {
> struct kszphy_priv *lan8814 = phydev->priv;
>
> - /* Reset the PHY */
> - lanphy_modify_page_reg(phydev, LAN8814_PAGE_COMMON_REGS,
> - LAN8814_QSGMII_SOFT_RESET,
> - LAN8814_QSGMII_SOFT_RESET_BIT,
> - LAN8814_QSGMII_SOFT_RESET_BIT);
> -
> /* Disable ANEG with QSGMII PCS Host side */
> lanphy_modify_page_reg(phydev, LAN8814_PAGE_PORT_REGS,
> LAN8814_QSGMII_PCS1G_ANEG_CONFIG, @@ -
> 4471,6 +4465,12 @@ static int lan8814_probe(struct phy_device *phydev)
> addr, sizeof(struct lan8814_shared_priv));
>
> if (phy_package_init_once(phydev)) {
> + /* Reset the PHY */
> + lanphy_modify_page_reg(phydev,
> LAN8814_PAGE_COMMON_REGS,
> + LAN8814_QSGMII_SOFT_RESET,
> + LAN8814_QSGMII_SOFT_RESET_BIT,
> + LAN8814_QSGMII_SOFT_RESET_BIT);
> +
> err = lan8814_release_coma_mode(phydev);
> if (err)
> return err;
> --
> 2.34.1
Reviewed-by: Divya Koppera <Divya.Koppera@xxxxxxxxxxxxx >