aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/freescale
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/freescale')
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index f43c388e2eb9..1cd71a8d9996 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1068,8 +1068,10 @@ static void fec_enet_work(struct work_struct *work)
1068 1068
1069 if (fep->delay_work.timeout) { 1069 if (fep->delay_work.timeout) {
1070 fep->delay_work.timeout = false; 1070 fep->delay_work.timeout = false;
1071 rtnl_lock();
1071 fec_restart(fep->netdev, fep->full_duplex); 1072 fec_restart(fep->netdev, fep->full_duplex);
1072 netif_wake_queue(fep->netdev); 1073 netif_wake_queue(fep->netdev);
1074 rtnl_unlock();
1073 } 1075 }
1074 1076
1075 if (fep->delay_work.trig_tx) { 1077 if (fep->delay_work.trig_tx) {
@@ -2680,11 +2682,14 @@ fec_suspend(struct device *dev)
2680 struct net_device *ndev = dev_get_drvdata(dev); 2682 struct net_device *ndev = dev_get_drvdata(dev);
2681 struct fec_enet_private *fep = netdev_priv(ndev); 2683 struct fec_enet_private *fep = netdev_priv(ndev);
2682 2684
2685 rtnl_lock();
2683 if (netif_running(ndev)) { 2686 if (netif_running(ndev)) {
2684 phy_stop(fep->phy_dev); 2687 phy_stop(fep->phy_dev);
2685 fec_stop(ndev); 2688 fec_stop(ndev);
2686 netif_device_detach(ndev); 2689 netif_device_detach(ndev);
2687 } 2690 }
2691 rtnl_unlock();
2692
2688 fec_enet_clk_enable(ndev, false); 2693 fec_enet_clk_enable(ndev, false);
2689 pinctrl_pm_select_sleep_state(&fep->pdev->dev); 2694 pinctrl_pm_select_sleep_state(&fep->pdev->dev);
2690 2695
@@ -2712,11 +2717,13 @@ fec_resume(struct device *dev)
2712 if (ret) 2717 if (ret)
2713 goto failed_clk; 2718 goto failed_clk;
2714 2719
2720 rtnl_lock();
2715 if (netif_running(ndev)) { 2721 if (netif_running(ndev)) {
2716 fec_restart(ndev, fep->full_duplex); 2722 fec_restart(ndev, fep->full_duplex);
2717 netif_device_attach(ndev); 2723 netif_device_attach(ndev);
2718 phy_start(fep->phy_dev); 2724 phy_start(fep->phy_dev);
2719 } 2725 }
2726 rtnl_unlock();
2720 2727
2721 return 0; 2728 return 0;
2722 2729