Commit 5c968f48 authored by Alexander Couzens's avatar Alexander Couzens Committed by David S. Miller

net: usb: asix: replace mii_nway_restart in resume path

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: d9fe64e5 ("net: asix: Add in_pm parameter")
Signed-off-by: default avatarAlexander Couzens <lynxis@fe80.eu>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 676bcfec
...@@ -642,10 +642,12 @@ static void ax88772_restore_phy(struct usbnet *dev) ...@@ -642,10 +642,12 @@ static void ax88772_restore_phy(struct usbnet *dev)
priv->presvd_phy_advertise); priv->presvd_phy_advertise);
/* Restore BMCR */ /* 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, asix_mdio_write_nopm(dev->net, dev->mii.phy_id, MII_BMCR,
priv->presvd_phy_bmcr); priv->presvd_phy_bmcr);
mii_nway_restart(&dev->mii);
priv->presvd_phy_advertise = 0; priv->presvd_phy_advertise = 0;
priv->presvd_phy_bmcr = 0; priv->presvd_phy_bmcr = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment