diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2009-10-09 11:57:07 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2009-10-09 11:57:07 +0200 |
commit | 67551e7a76b620ce3a2375bdda6dd5f294d5d084 (patch) | |
tree | 0bff7295adf9cac3b014eb2f054932a5593c0698 /drivers | |
parent | 56d833d07932d5978df50bb95d5f03803288f74c (diff) | |
download | barebox-67551e7a76b620ce3a2375bdda6dd5f294d5d084.tar.gz barebox-67551e7a76b620ce3a2375bdda6dd5f294d5d084.tar.xz |
fec_imx: initialize buffers on open time
We need to redo buffer initialization each time we open
the device, not only once on init time. Otherwise network
does not work if the last transfer was interrupted with
ctrl-c
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/fec_imx.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c index 43652c8915..2b35825b00 100644 --- a/drivers/net/fec_imx.c +++ b/drivers/net/fec_imx.c @@ -257,12 +257,6 @@ static int fec_init(struct eth_device *dev) struct fec_priv *fec = (struct fec_priv *)dev->priv; /* - * Initialize RxBD/TxBD rings - */ - fec_rbd_init(fec, FEC_RBD_NUM, FEC_MAX_PKT_SIZE); - fec_tbd_init(fec); - - /* * Clear FEC-Lite interrupt event register(IEVENT) */ writel(0xffffffff, fec->regs + FEC_IEVENT); @@ -337,6 +331,12 @@ static int fec_open(struct eth_device *edev) struct fec_priv *fec = (struct fec_priv *)edev->priv; int ret; + /* + * Initialize RxBD/TxBD rings + */ + fec_rbd_init(fec, FEC_RBD_NUM, FEC_MAX_PKT_SIZE); + fec_tbd_init(fec); + /* full-duplex, heartbeat disabled */ writel(1 << 2, fec->regs + FEC_X_CNTRL); fec->rbd_index = 0; |