diff options
Diffstat (limited to 'drivers/net/ethernet/broadcom/bcmsysport.c')
-rw-r--r-- | drivers/net/ethernet/broadcom/bcmsysport.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c index 4122553e224b..0e2d99c737e3 100644 --- a/drivers/net/ethernet/broadcom/bcmsysport.c +++ b/drivers/net/ethernet/broadcom/bcmsysport.c | |||
@@ -1902,9 +1902,6 @@ static void bcm_sysport_netif_start(struct net_device *dev) | |||
1902 | intrl2_1_mask_clear(priv, 0xffffffff); | 1902 | intrl2_1_mask_clear(priv, 0xffffffff); |
1903 | else | 1903 | else |
1904 | intrl2_0_mask_clear(priv, INTRL2_0_TDMA_MBDONE_MASK); | 1904 | intrl2_0_mask_clear(priv, INTRL2_0_TDMA_MBDONE_MASK); |
1905 | |||
1906 | /* Last call before we start the real business */ | ||
1907 | netif_tx_start_all_queues(dev); | ||
1908 | } | 1905 | } |
1909 | 1906 | ||
1910 | static void rbuf_init(struct bcm_sysport_priv *priv) | 1907 | static void rbuf_init(struct bcm_sysport_priv *priv) |
@@ -2048,6 +2045,8 @@ static int bcm_sysport_open(struct net_device *dev) | |||
2048 | 2045 | ||
2049 | bcm_sysport_netif_start(dev); | 2046 | bcm_sysport_netif_start(dev); |
2050 | 2047 | ||
2048 | netif_tx_start_all_queues(dev); | ||
2049 | |||
2051 | return 0; | 2050 | return 0; |
2052 | 2051 | ||
2053 | out_clear_rx_int: | 2052 | out_clear_rx_int: |
@@ -2071,7 +2070,7 @@ static void bcm_sysport_netif_stop(struct net_device *dev) | |||
2071 | struct bcm_sysport_priv *priv = netdev_priv(dev); | 2070 | struct bcm_sysport_priv *priv = netdev_priv(dev); |
2072 | 2071 | ||
2073 | /* stop all software from updating hardware */ | 2072 | /* stop all software from updating hardware */ |
2074 | netif_tx_stop_all_queues(dev); | 2073 | netif_tx_disable(dev); |
2075 | napi_disable(&priv->napi); | 2074 | napi_disable(&priv->napi); |
2076 | cancel_work_sync(&priv->dim.dim.work); | 2075 | cancel_work_sync(&priv->dim.dim.work); |
2077 | phy_stop(dev->phydev); | 2076 | phy_stop(dev->phydev); |
@@ -2658,12 +2657,12 @@ static int __maybe_unused bcm_sysport_suspend(struct device *d) | |||
2658 | if (!netif_running(dev)) | 2657 | if (!netif_running(dev)) |
2659 | return 0; | 2658 | return 0; |
2660 | 2659 | ||
2660 | netif_device_detach(dev); | ||
2661 | |||
2661 | bcm_sysport_netif_stop(dev); | 2662 | bcm_sysport_netif_stop(dev); |
2662 | 2663 | ||
2663 | phy_suspend(dev->phydev); | 2664 | phy_suspend(dev->phydev); |
2664 | 2665 | ||
2665 | netif_device_detach(dev); | ||
2666 | |||
2667 | /* Disable UniMAC RX */ | 2666 | /* Disable UniMAC RX */ |
2668 | umac_enable_set(priv, CMD_RX_EN, 0); | 2667 | umac_enable_set(priv, CMD_RX_EN, 0); |
2669 | 2668 | ||
@@ -2746,8 +2745,6 @@ static int __maybe_unused bcm_sysport_resume(struct device *d) | |||
2746 | goto out_free_rx_ring; | 2745 | goto out_free_rx_ring; |
2747 | } | 2746 | } |
2748 | 2747 | ||
2749 | netif_device_attach(dev); | ||
2750 | |||
2751 | /* RX pipe enable */ | 2748 | /* RX pipe enable */ |
2752 | topctrl_writel(priv, 0, RX_FLUSH_CNTL); | 2749 | topctrl_writel(priv, 0, RX_FLUSH_CNTL); |
2753 | 2750 | ||
@@ -2788,6 +2785,8 @@ static int __maybe_unused bcm_sysport_resume(struct device *d) | |||
2788 | 2785 | ||
2789 | bcm_sysport_netif_start(dev); | 2786 | bcm_sysport_netif_start(dev); |
2790 | 2787 | ||
2788 | netif_device_attach(dev); | ||
2789 | |||
2791 | return 0; | 2790 | return 0; |
2792 | 2791 | ||
2793 | out_free_rx_ring: | 2792 | out_free_rx_ring: |