]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/2.6.25.7/cassini-only-use-chip-checksum-for-ipv4-packets.patch
4.14-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 2.6.25.7 / cassini-only-use-chip-checksum-for-ipv4-packets.patch
CommitLineData
aa8edcb9
CW
1From 3be7c5ab93cf875aff5d91974d1df0851c329fd7 Mon Sep 17 00:00:00 2001
2Message-Id: <20080609.134337.193698173.davem@davemloft.net>
3From: David S. Miller <davem@davemloft.net>
4Date: Wed, 21 May 2008 17:05:34 -0700
5Subject: cassini: Only use chip checksum for ipv4 packets.
6
7From: David S. Miller <davem@davemloft.net>
8
9[ upstream commit: b1443e2f6501f06930a162ff1ff08382a98bf23e ]
10
11According to David Monro, at least with Natsemi Saturn chips the
12cassini driver has some trouble with ipv6 checksums.
13
14Until we have more information about what's going on here, only
15use the chip checksums for ipv4.
16
17This workaround was suggested and tested by David.
18
19Update version and release date.
20
21Signed-off-by: David S. Miller <davem@davemloft.net>
22Signed-off-by: Chris Wright <chrisw@sous-sol.org>
23---
24 drivers/net/cassini.c | 11 +++++++----
25 1 file changed, 7 insertions(+), 4 deletions(-)
26
27--- a/drivers/net/cassini.c
28+++ b/drivers/net/cassini.c
29@@ -142,8 +142,8 @@
30
31 #define DRV_MODULE_NAME "cassini"
32 #define PFX DRV_MODULE_NAME ": "
33-#define DRV_MODULE_VERSION "1.5"
34-#define DRV_MODULE_RELDATE "4 Jan 2008"
35+#define DRV_MODULE_VERSION "1.6"
36+#define DRV_MODULE_RELDATE "21 May 2008"
37
38 #define CAS_DEF_MSG_ENABLE \
39 (NETIF_MSG_DRV | \
40@@ -2140,9 +2140,12 @@ end_copy_pkt:
41 if (addr)
42 cas_page_unmap(addr);
43 }
44- skb->csum = csum_unfold(~csum);
45- skb->ip_summed = CHECKSUM_COMPLETE;
46 skb->protocol = eth_type_trans(skb, cp->dev);
47+ if (skb->protocol == htons(ETH_P_IP)) {
48+ skb->csum = csum_unfold(~csum);
49+ skb->ip_summed = CHECKSUM_COMPLETE;
50+ } else
51+ skb->ip_summed = CHECKSUM_NONE;
52 return len;
53 }
54