--- /dev/null
+From chrisw@osdl.org Wed Dec 21 09:28:06 2005
+Date: Wed, 14 Dec 2005 16:29:02 -0800 (PST)
+Message-Id: <20051214.162902.42775251.davem@davemloft.net>
+To: stable@kernel.org
+From: "David S. Miller" <davem@davemloft.net>
+Cc: shemminger@osdl.org
+Subject: [VLAN]: Fix hardware rx csum errors
+
+From: Stephen Hemminger <shemminger@osdl.org>
+
+Receiving VLAN packets over a device (without VLAN assist) that is
+doing hardware checksumming (CHECKSUM_HW), causes errors because the
+VLAN code forgets to adjust the hardware checksum.
+
+Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@redhat.com>
+---
+
+ net/8021q/vlan_dev.c | 3 +++
+ 1 files changed, 3 insertions(+)
+
+Index: linux-2.6.14.y/net/8021q/vlan_dev.c
+===================================================================
+--- linux-2.6.14.y.orig/net/8021q/vlan_dev.c
++++ linux-2.6.14.y/net/8021q/vlan_dev.c
+@@ -165,6 +165,9 @@ int vlan_skb_recv(struct sk_buff *skb, s
+
+ skb_pull(skb, VLAN_HLEN); /* take off the VLAN header (4 bytes currently) */
+
++ /* Need to correct hardware checksum */
++ skb_postpull_rcsum(skb, vhdr, VLAN_HLEN);
++
+ /* Ok, lets check to make sure the device (dev) we
+ * came in on is what this VLAN is attached to.
+ */