I finally tracked down what caused the red zone failures with forcedeth
on my test system.  It's only related to me starting to use CONFIG_SLAB_DEBUG
instead of any driver changes and probably was always broken.

I have not done too heavy testing with this yet, but the simple
tests where it failed before are ok now.

-Andi

----

I got frequent red zone failures and data corruption when transfering over a 
CK804 on a 64bit kernel with CONFIG_SLAB_DEBUG enabled. This patch fixes it.

It shouldn't make any difference on !SLAB_DEBUG kernels because kmalloc
will pad typical mtus (1.5k, 9k) to 2k or 16k.  But at least the 
network driver is usable now again with slab debugging enabled.

The magic value 86 has been found with binary search.

Signed-off-by: Andi Kleen <[EMAIL PROTECTED]>

--- linux-2.6.15rc5-git4/drivers/net/forcedeth.c-ORIG   2005-12-16 
01:00:33.000000000 +0100
+++ linux-2.6.15rc5-git4/drivers/net/forcedeth.c        2005-12-23 
20:42:25.000000000 +0100
@@ -419,8 +419,9 @@
 
 /* rx/tx mac addr + type + vlan + align + slack*/
 #define NV_RX_HEADERS          (64)
-/* even more slack. */
-#define NV_RX_ALLOC_PAD                (64)
+/* even more slack. The value 86 has been found with binary 
+   search with a kernel that does slab debug checking on a CK804 a3 */
+#define NV_RX_ALLOC_PAD                (86)
 
 /* maximum mtu size */
 #define NV_PKTLIMIT_1  ETH_DATA_LEN    /* hard limit not known */
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to