Fix hard reset of alix/soekris hardware under heavy NIC load
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 9 Aug 2012 09:41:22 +0000 (09:41 +0000)
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 9 Aug 2012 09:41:22 +0000 (09:41 +0000)
commit4c706d3cf575107462707efa475c6d7883c1d9af
tree88346759e647e8a73d1d48b568f21b458cdcc340
parent0301cbafe2f8ebe06f22799ace3789f02345e257
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>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33072 3c298f89-4303-0410-b956-a3cf2f4a3e73
target/linux/x86/patches-3.3/003-via-rhine-crash-fix.patch [new file with mode: 0644]