From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Couzens Subject: [PATCH] net: usb: asix: replace mii_nway_restart in resume path Date: Tue, 17 Jul 2018 13:17:09 +0200 Message-ID: <20180717111709.8598-1-lynxis@fe80.eu> Cc: Robert Foss , netdev@vger.kernel.org, "David S. Miller" , Alexander Couzens To: linux-usb@vger.kernel.org Return-path: Received: from mail.base45.de ([80.241.60.77]:33795 "EHLO mail.base45.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731066AbeGQMVd (ORCPT ); Tue, 17 Jul 2018 08:21:33 -0400 Sender: netdev-owner@vger.kernel.org List-ID: mii_nway_restart is not pm aware which results in a rtnl deadlock. Implement mii_nway_restart manual by setting BMCR_ANRESTART if BMCR_ANENABLE is set. To reproduce: * plug an asix based usb network interface * wait until the device enters PM (~5 sec) * `ip link set eth1 up` will never return Fixes: d9fe64e51114 ("net: asix: Add in_pm parameter") Signed-off-by: Alexander Couzens --- drivers/net/usb/asix_devices.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/usb/asix_devices.c b/drivers/net/usb/asix_devices.c index 3d4f7959dabb..b1b3d8f7e67d 100644 --- a/drivers/net/usb/asix_devices.c +++ b/drivers/net/usb/asix_devices.c @@ -642,10 +642,12 @@ static void ax88772_restore_phy(struct usbnet *dev) priv->presvd_phy_advertise); /* Restore BMCR */ + if (priv->presvd_phy_bmcr & BMCR_ANENABLE) + priv->presvd_phy_bmcr |= BMCR_ANRESTART; + asix_mdio_write_nopm(dev->net, dev->mii.phy_id, MII_BMCR, priv->presvd_phy_bmcr); - mii_nway_restart(&dev->mii); priv->presvd_phy_advertise = 0; priv->presvd_phy_bmcr = 0; } -- 2.18.0