]>
Commit | Line | Data |
---|---|---|
aa8edcb9 CW |
1 | From 3be7c5ab93cf875aff5d91974d1df0851c329fd7 Mon Sep 17 00:00:00 2001 |
2 | Message-Id: <20080609.134337.193698173.davem@davemloft.net> | |
3 | From: David S. Miller <davem@davemloft.net> | |
4 | Date: Wed, 21 May 2008 17:05:34 -0700 | |
5 | Subject: cassini: Only use chip checksum for ipv4 packets. | |
6 | ||
7 | From: David S. Miller <davem@davemloft.net> | |
8 | ||
9 | [ upstream commit: b1443e2f6501f06930a162ff1ff08382a98bf23e ] | |
10 | ||
11 | According to David Monro, at least with Natsemi Saturn chips the | |
12 | cassini driver has some trouble with ipv6 checksums. | |
13 | ||
14 | Until we have more information about what's going on here, only | |
15 | use the chip checksums for ipv4. | |
16 | ||
17 | This workaround was suggested and tested by David. | |
18 | ||
19 | Update version and release date. | |
20 | ||
21 | Signed-off-by: David S. Miller <davem@davemloft.net> | |
22 | Signed-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 |