From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiner Kallweit Subject: [PATCH net] net: phy: fix phy_init_hw fixup handling Date: Sun, 23 Dec 2018 15:00:26 +0100 Message-ID: <07a7d513-cf5c-99b5-c5ac-337bed2d00dd@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: "netdev@vger.kernel.org" To: Andrew Lunn , Florian Fainelli , David Miller Return-path: Received: from mail-wm1-f68.google.com ([209.85.128.68]:32935 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725829AbeLWOAg (ORCPT ); Sun, 23 Dec 2018 09:00:36 -0500 Received: by mail-wm1-f68.google.com with SMTP id r24so17586551wmh.0 for ; Sun, 23 Dec 2018 06:00:35 -0800 (PST) Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: Currently we return immediately if callback config_init isn't defined. This prevents the fixups from being executed. I see no dependency between fixups and config_init, therefore change the function to run the fixups also if config_init isn't defined. Fixes: 2f5cb43406d0 ("phylib: Properly reinitialize PHYs after hibernation") Signed-off-by: Heiner Kallweit --- drivers/net/phy/phy_device.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index e10ac6075..07b1e6751 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -1035,20 +1035,22 @@ int phy_init_hw(struct phy_device *phydev) /* Deassert the reset signal */ phy_device_reset(phydev, 0); - if (!phydev->drv || !phydev->drv->config_init) + if (!phydev->drv) return 0; if (phydev->drv->soft_reset) ret = phydev->drv->soft_reset(phydev); - - if (ret < 0) + if (ret) return ret; ret = phy_scan_fixups(phydev); - if (ret < 0) + if (ret) return ret; - return phydev->drv->config_init(phydev); + if (phydev->drv->config_init) + ret = phydev->drv->config_init(phydev); + + return ret; } EXPORT_SYMBOL(phy_init_hw); -- 2.20.1