openwrt/target/linux
Jo-Philipp Wich c8a0166212 Fix hard reset of alix/soekris hardware under heavy NIC load
The following patch corrects a hard reset that occurs on alix and
soekris net5501 hardware. Specifically, this is an issue with the via
rhine NIC driver. Under periods of extreme load, the via rhine driver
can cause a reset of the entire system. When this happens no output is
seen on the console, the device simply reboots. This was reported in the
following ticket:

Consistent crash on Soekris NET5501
https://dev.openwrt.org/ticket/11882

I was able to reproduce the problem locally with numerous alix 2d13
platforms. Under heavy 64 byte frame size load from a Smartbits traffic
generator, the alix hardware will hard reset in under 5 minutes. The
same hardware, under the same load, on FreeBSD 9.0 does not reset.

The patch below backports most of the via rhine changes from kernel 3.5.
With OpenWrt trunk being on kernel 3.3.8, it seemed prudent to bring
these changes in to avoid this serious issue.

I've tested this heavily in my test environment and was able to keep the
device stable under load for extended periods of time without any resets.

Also, a nice side effect of this change is that it significantly raises
the performance the platform. Without this patch the alix 2d13 can move
approximately 29,000 packets per second at 64 byte frame sizes. After
this patch the alix can move 52,000 packets per second at 64 byte frame
sizes.

I put this patch under the x86 patches as those are the only platforms
with via rhine hardware that I'm aware of. If it needs to go some place
else please let me know.

Thanks,
Adam

Signed-off-by: Adam Gensler <openwrt@kristenandadam.net>

SVN-Revision: 33072
2012-08-09 09:41:22 +00:00
..
adm5120 bump to 3.3.8 2012-06-05 06:57:51 +00:00
adm8668 bump to 3.3.8 2012-06-05 06:57:51 +00:00
amazon bump to 3.3.8 2012-06-05 06:57:51 +00:00
ar7 bump to 3.3.8 2012-06-05 06:57:51 +00:00
ar71xx ar71xx: simplify misc IRQ handling 2012-08-02 11:25:49 +00:00
at91 move i2c module to target modules.mk 2012-07-29 13:20:51 +00:00
atheros Add leds back after migration to sysfs 2012-07-26 17:06:55 +00:00
au1000 rename upgrade image to sysupgrade.bin for consistency 2012-07-17 16:47:57 +00:00
avr32 move mmc driver to target specific modules.mk 2012-07-25 15:50:26 +00:00
brcm47xx update tg3 driver 2012-08-05 20:27:40 +00:00
brcm63xx bcm63xx: fix USB base registers and IRQs for BCM6328 2012-08-05 23:18:22 +00:00
brcm2708 add more missing config symbols 2012-07-26 17:03:08 +00:00
cns3xxx laguna: fix eeprom read buffer size during platform configuration 2012-07-25 08:01:38 +00:00
cns21xx bump to 3.3.8 2012-06-05 06:57:51 +00:00
cobalt make kmod-fb dependent on DISPLAY_SUPPORT and update targets accordingly 2012-07-25 19:36:19 +00:00
coldfire linux: move certain disabled symbols to the generic configs 2012-05-15 10:58:52 +00:00
ep93xx make sure target modules depend on the target 2012-07-26 17:03:02 +00:00
etrax linux: move certain disabled symbols to the generic configs 2012-05-15 10:58:52 +00:00
gemini bump to 3.3.8 2012-06-05 06:57:51 +00:00
generic Codel: avoid a nul rec_inv_sqrt 2012-08-02 13:39:50 +00:00
goldfish linux: move certain disabled symbols to the generic configs 2012-05-15 10:58:52 +00:00
imx21 linux: move certain disabled symbols to the generic configs 2012-05-15 10:58:52 +00:00
iop32x bump to 3.3.8 2012-06-05 06:57:51 +00:00
ixp4xx move ixp4xx-eth to target specific modules.mk 2012-07-25 15:50:23 +00:00
kirkwood kernel: add Marvell SoC built-in RTC to modules 2012-07-15 14:25:30 +00:00
lantiq pci gpio mapping 2012-08-08 12:14:43 +00:00
leon linux: move certain disabled symbols to the generic configs 2012-05-15 10:58:52 +00:00
malta bump to 3.3.8 2012-06-05 06:57:51 +00:00
mcs814x nuport-mac: use dma_mapping_error() instead of checking pointers 2012-08-09 09:06:35 +00:00
mpc52xx bump to 3.3.8 2012-06-05 06:57:51 +00:00
mpc83xx bump to 3.3.8 2012-06-05 06:57:51 +00:00
mpc85xx bump to 3.3.8 2012-06-05 06:57:51 +00:00
octeon move i2c driver to target modules.mk 2012-07-25 15:50:13 +00:00
omap4 bump to 3.3.8 2012-06-05 06:57:51 +00:00
omap24xx resync config 2012-07-29 13:20:39 +00:00
omap35xx linux: move certain disabled symbols to the generic configs 2012-05-15 10:58:52 +00:00
orion bump to 3.3.8 2012-06-05 06:57:51 +00:00
ppc40x move isp116x driver to target specific modules.mk 2012-07-25 15:50:45 +00:00
ppc44x bump to 3.3.8 2012-06-05 06:57:51 +00:00
ps3 linux: move certain disabled symbols to the generic configs 2012-05-15 10:58:52 +00:00
pxa bump to 3.3.8 2012-06-05 06:57:51 +00:00
pxcab linux: add broken flag to targets which are using 2.6.30 2012-04-21 15:18:54 +00:00
ramips move rt305x-dwc driver to target specific modules.mk 2012-07-25 15:50:42 +00:00
rb532 bump to 3.3.8 2012-06-05 06:57:51 +00:00
rdc remove broken flags 2012-06-16 16:45:28 +00:00
realview resync config 2012-07-27 15:35:15 +00:00
s3c24xx linux: move certain disabled symbols to the generic configs 2012-05-15 10:58:52 +00:00
sibyte bump to 3.3.8 2012-06-05 06:57:51 +00:00
sparc linux: add broken flag to targets which are using 2.6.36 2012-04-29 15:00:32 +00:00
ubicom32 linux: move certain disabled symbols to the generic configs 2012-05-15 10:58:52 +00:00
uml bump to 3.3.8 2012-06-05 06:57:51 +00:00
x86 Fix hard reset of alix/soekris hardware under heavy NIC load 2012-08-09 09:41:22 +00:00
xburst verified to work - remove broken flag 2012-06-20 19:04:35 +00:00
Makefile