summaryrefslogtreecommitdiffstats
path: root/drivers/net/skge.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2005-11-28 20:38:50 +0100
committerJeff Garzik <jgarzik@pobox.com>2005-12-01 08:28:56 +0100
commit1096e87174f925bb817a41386ee70573b2a7d6ff (patch)
treee095794ba061aa573bbd975a035e20abcaa857c8 /drivers/net/skge.c
parent[PATCH] orinoco: fix setting power management parameters (diff)
downloadlinux-1096e87174f925bb817a41386ee70573b2a7d6ff.tar.xz
linux-1096e87174f925bb817a41386ee70573b2a7d6ff.zip
[PATCH] skge: handle VLAN checksum correctly on yukon rev 0
If using UDP over VLAN, with the skge driver there is a possibility of generating an incorrect checksum. This is a unlikely occurrence because it is only an issue on Yukon revision 0, and that revision doesn't seem to exist on any current hardware (probably early prototype). Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/skge.c')
-rw-r--r--drivers/net/skge.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 596c93b12daa..96ffcc1666bc 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -2300,14 +2300,12 @@ static int skge_xmit_frame(struct sk_buff *skb, struct net_device *dev)
td->dma_hi = map >> 32;
if (skb->ip_summed == CHECKSUM_HW) {
- const struct iphdr *ip
- = (const struct iphdr *) (skb->data + ETH_HLEN);
int offset = skb->h.raw - skb->data;
/* This seems backwards, but it is what the sk98lin
* does. Looks like hardware is wrong?
*/
- if (ip->protocol == IPPROTO_UDP
+ if (skb->h.ipih->protocol == IPPROTO_UDP
&& hw->chip_rev == 0 && hw->chip_id == CHIP_ID_YUKON)
control = BMU_TCP_CHECK;
else