diff options
-rw-r--r-- | drivers/net/ethernet/xilinx/ll_temac_main.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c index caf3659e173c..05a1ffad20d2 100644 --- a/drivers/net/ethernet/xilinx/ll_temac_main.c +++ b/drivers/net/ethernet/xilinx/ll_temac_main.c | |||
@@ -203,6 +203,9 @@ static void temac_dma_bd_release(struct net_device *ndev) | |||
203 | struct temac_local *lp = netdev_priv(ndev); | 203 | struct temac_local *lp = netdev_priv(ndev); |
204 | int i; | 204 | int i; |
205 | 205 | ||
206 | /* Reset Local Link (DMA) */ | ||
207 | lp->dma_out(lp, DMA_CONTROL_REG, DMA_CONTROL_RST); | ||
208 | |||
206 | for (i = 0; i < RX_BD_NUM; i++) { | 209 | for (i = 0; i < RX_BD_NUM; i++) { |
207 | if (!lp->rx_skb[i]) | 210 | if (!lp->rx_skb[i]) |
208 | break; | 211 | break; |
@@ -860,6 +863,8 @@ static int temac_open(struct net_device *ndev) | |||
860 | phy_start(lp->phy_dev); | 863 | phy_start(lp->phy_dev); |
861 | } | 864 | } |
862 | 865 | ||
866 | temac_device_reset(ndev); | ||
867 | |||
863 | rc = request_irq(lp->tx_irq, ll_temac_tx_irq, 0, ndev->name, ndev); | 868 | rc = request_irq(lp->tx_irq, ll_temac_tx_irq, 0, ndev->name, ndev); |
864 | if (rc) | 869 | if (rc) |
865 | goto err_tx_irq; | 870 | goto err_tx_irq; |
@@ -867,7 +872,6 @@ static int temac_open(struct net_device *ndev) | |||
867 | if (rc) | 872 | if (rc) |
868 | goto err_rx_irq; | 873 | goto err_rx_irq; |
869 | 874 | ||
870 | temac_device_reset(ndev); | ||
871 | return 0; | 875 | return 0; |
872 | 876 | ||
873 | err_rx_irq: | 877 | err_rx_irq: |