diff options
| -rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index fa8a7b775b4a..7facda1328f8 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c | |||
| @@ -1976,29 +1976,31 @@ static int sh_eth_set_ringparam(struct net_device *ndev, | |||
| 1976 | sh_eth_write(ndev, 0, EDTRR); | 1976 | sh_eth_write(ndev, 0, EDTRR); |
| 1977 | sh_eth_write(ndev, 0, EDRRR); | 1977 | sh_eth_write(ndev, 0, EDRRR); |
| 1978 | synchronize_irq(ndev->irq); | 1978 | synchronize_irq(ndev->irq); |
| 1979 | } | ||
| 1980 | 1979 | ||
| 1981 | /* Free all the skbuffs in the Rx queue. */ | 1980 | /* Free all the skbuffs in the Rx queue. */ |
| 1982 | sh_eth_ring_free(ndev); | 1981 | sh_eth_ring_free(ndev); |
| 1983 | /* Free DMA buffer */ | 1982 | /* Free DMA buffer */ |
| 1984 | sh_eth_free_dma_buffer(mdp); | 1983 | sh_eth_free_dma_buffer(mdp); |
| 1984 | } | ||
| 1985 | 1985 | ||
| 1986 | /* Set new parameters */ | 1986 | /* Set new parameters */ |
| 1987 | mdp->num_rx_ring = ring->rx_pending; | 1987 | mdp->num_rx_ring = ring->rx_pending; |
| 1988 | mdp->num_tx_ring = ring->tx_pending; | 1988 | mdp->num_tx_ring = ring->tx_pending; |
| 1989 | 1989 | ||
| 1990 | ret = sh_eth_ring_init(ndev); | ||
| 1991 | if (ret < 0) { | ||
| 1992 | netdev_err(ndev, "%s: sh_eth_ring_init failed.\n", __func__); | ||
| 1993 | return ret; | ||
| 1994 | } | ||
| 1995 | ret = sh_eth_dev_init(ndev, false); | ||
| 1996 | if (ret < 0) { | ||
| 1997 | netdev_err(ndev, "%s: sh_eth_dev_init failed.\n", __func__); | ||
| 1998 | return ret; | ||
| 1999 | } | ||
| 2000 | |||
| 2001 | if (netif_running(ndev)) { | 1990 | if (netif_running(ndev)) { |
| 1991 | ret = sh_eth_ring_init(ndev); | ||
| 1992 | if (ret < 0) { | ||
| 1993 | netdev_err(ndev, "%s: sh_eth_ring_init failed.\n", | ||
| 1994 | __func__); | ||
| 1995 | return ret; | ||
| 1996 | } | ||
| 1997 | ret = sh_eth_dev_init(ndev, false); | ||
| 1998 | if (ret < 0) { | ||
| 1999 | netdev_err(ndev, "%s: sh_eth_dev_init failed.\n", | ||
| 2000 | __func__); | ||
| 2001 | return ret; | ||
| 2002 | } | ||
| 2003 | |||
| 2002 | sh_eth_write(ndev, mdp->cd->eesipr_value, EESIPR); | 2004 | sh_eth_write(ndev, mdp->cd->eesipr_value, EESIPR); |
| 2003 | /* Setting the Rx mode will start the Rx process. */ | 2005 | /* Setting the Rx mode will start the Rx process. */ |
| 2004 | sh_eth_write(ndev, EDRRR_R, EDRRR); | 2006 | sh_eth_write(ndev, EDRRR_R, EDRRR); |
