From: Felix Fietkau Date: Sun, 4 Jul 2010 01:31:33 +0000 (+0000) Subject: ag71xx: fix a memory corruption bug that happens if you flood the interface with... X-Git-Tag: reboot~19480 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=89da22d1eadc7b829add26884954bf7107f13dd6;p=openwrt%2Fstaging%2Fchunkeey.git ag71xx: fix a memory corruption bug that happens if you flood the interface with packets while it's being brought down fixes boot time crashes under load reported by matteo SVN-Revision: 22054 --- diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c index a57b6d46fc..9fd41527dd 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c @@ -454,6 +454,12 @@ static void ag71xx_dma_reset(struct ag71xx *ag) ag71xx_wr(ag, AG71XX_REG_RX_CTRL, 0); ag71xx_wr(ag, AG71XX_REG_TX_CTRL, 0); + /* + * give the hardware some time to really stop all rx/tx activity + * clearing the descriptors too early causes random memory corruption + */ + mdelay(1); + /* clear descriptor addresses */ ag71xx_wr(ag, AG71XX_REG_TX_DESC, 0); ag71xx_wr(ag, AG71XX_REG_RX_DESC, 0);