Subject: Re: TG3 network data corruption regression 2.6.24/2.6.23.4

From: Tony Battersby <[email-masked]>
Date: Wed, 20 Feb 2008 18:04:09 -0500

The following patch fixes the problem for me.  Do we want to accept this
patch and call it a day or continue investigating the source of the problem?

Patch applies to 2.6.24.2, but doesn't apply to 2.6.25-rc.  If everyone
agrees that this is the right solution, I will resubmit with a proper
subject line and description.

Tony

--- linux-2.6.24.2/include/net/sock.h.orig	2008-02-20 17:19:20.000000000 -0500
+++ linux-2.6.24.2/include/net/sock.h	2008-02-20 17:25:55.000000000 -0500
@@ -1236,8 +1236,10 @@ static inline struct sk_buff *sk_stream_
 {
 	struct sk_buff *skb;
 
-	/* The TCP header must be at least 32-bit aligned.  */
-	size = ALIGN(size, 4);
+	/* The TCP header must be at least 32-bit aligned, but some chipsets
+	 * such as Broadcom BCM5701 require at least 16-byte alignment.
+	 */
+	size = ALIGN(size, 16);
 
 	skb = alloc_skb_fclone(size + sk->sk_prot->max_header, gfp);
 	if (skb) {