diff options
Diffstat (limited to 'drivers/net/ethernet/stmicro/stmmac/stmmac_main.c')
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index eac45d0c75e2..a473c182c91d 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | |||
@@ -3450,8 +3450,6 @@ int stmmac_resume(struct device *dev) | |||
3450 | if (!netif_running(ndev)) | 3450 | if (!netif_running(ndev)) |
3451 | return 0; | 3451 | return 0; |
3452 | 3452 | ||
3453 | spin_lock_irqsave(&priv->lock, flags); | ||
3454 | |||
3455 | /* Power Down bit, into the PM register, is cleared | 3453 | /* Power Down bit, into the PM register, is cleared |
3456 | * automatically as soon as a magic packet or a Wake-up frame | 3454 | * automatically as soon as a magic packet or a Wake-up frame |
3457 | * is received. Anyway, it's better to manually clear | 3455 | * is received. Anyway, it's better to manually clear |
@@ -3459,7 +3457,9 @@ int stmmac_resume(struct device *dev) | |||
3459 | * from another devices (e.g. serial console). | 3457 | * from another devices (e.g. serial console). |
3460 | */ | 3458 | */ |
3461 | if (device_may_wakeup(priv->device)) { | 3459 | if (device_may_wakeup(priv->device)) { |
3460 | spin_lock_irqsave(&priv->lock, flags); | ||
3462 | priv->hw->mac->pmt(priv->hw, 0); | 3461 | priv->hw->mac->pmt(priv->hw, 0); |
3462 | spin_unlock_irqrestore(&priv->lock, flags); | ||
3463 | priv->irq_wake = 0; | 3463 | priv->irq_wake = 0; |
3464 | } else { | 3464 | } else { |
3465 | pinctrl_pm_select_default_state(priv->device); | 3465 | pinctrl_pm_select_default_state(priv->device); |
@@ -3473,6 +3473,8 @@ int stmmac_resume(struct device *dev) | |||
3473 | 3473 | ||
3474 | netif_device_attach(ndev); | 3474 | netif_device_attach(ndev); |
3475 | 3475 | ||
3476 | spin_lock_irqsave(&priv->lock, flags); | ||
3477 | |||
3476 | priv->cur_rx = 0; | 3478 | priv->cur_rx = 0; |
3477 | priv->dirty_rx = 0; | 3479 | priv->dirty_rx = 0; |
3478 | priv->dirty_tx = 0; | 3480 | priv->dirty_tx = 0; |