diff options
author | Francesco Virlinzi <francesco.virlinzi@st.com> | 2011-11-16 16:58:02 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-11-17 03:13:42 -0500 |
commit | 102463b18d922dd55c29fbfa222e0355ecf3e42f (patch) | |
tree | 8491bc4dcb12cef135d07461042a198692952b91 | |
parent | 989508ba60da6dce79f8aaee1be6c092fd4c67f8 (diff) |
stmmac: fix pm functions avoiding sleep on spinlock
This patch fixes the pm functions to avoid the system
sleeps while a spinlock is taken.
Signed-off-by: Francesco Virlinzi <francesco.virlinzi@st.com>
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 29dd87c675dc..8ea770a89f25 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | |||
@@ -2011,12 +2011,13 @@ static int stmmac_suspend(struct device *dev) | |||
2011 | if (!ndev || !netif_running(ndev)) | 2011 | if (!ndev || !netif_running(ndev)) |
2012 | return 0; | 2012 | return 0; |
2013 | 2013 | ||
2014 | if (priv->phydev) | ||
2015 | phy_stop(priv->phydev); | ||
2016 | |||
2014 | spin_lock(&priv->lock); | 2017 | spin_lock(&priv->lock); |
2015 | 2018 | ||
2016 | netif_device_detach(ndev); | 2019 | netif_device_detach(ndev); |
2017 | netif_stop_queue(ndev); | 2020 | netif_stop_queue(ndev); |
2018 | if (priv->phydev) | ||
2019 | phy_stop(priv->phydev); | ||
2020 | 2021 | ||
2021 | #ifdef CONFIG_STMMAC_TIMER | 2022 | #ifdef CONFIG_STMMAC_TIMER |
2022 | priv->tm->timer_stop(); | 2023 | priv->tm->timer_stop(); |
@@ -2074,12 +2075,13 @@ static int stmmac_resume(struct device *dev) | |||
2074 | #endif | 2075 | #endif |
2075 | napi_enable(&priv->napi); | 2076 | napi_enable(&priv->napi); |
2076 | 2077 | ||
2077 | if (priv->phydev) | ||
2078 | phy_start(priv->phydev); | ||
2079 | |||
2080 | netif_start_queue(ndev); | 2078 | netif_start_queue(ndev); |
2081 | 2079 | ||
2082 | spin_unlock(&priv->lock); | 2080 | spin_unlock(&priv->lock); |
2081 | |||
2082 | if (priv->phydev) | ||
2083 | phy_start(priv->phydev); | ||
2084 | |||
2083 | return 0; | 2085 | return 0; |
2084 | } | 2086 | } |
2085 | 2087 | ||