diff options
author | Stephen Hemminger <shemminger@osdl.org> | 2005-11-28 11:38:50 -0800 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-12-01 02:28:56 -0500 |
commit | 1096e87174f925bb817a41386ee70573b2a7d6ff (patch) | |
tree | e095794ba061aa573bbd975a035e20abcaa857c8 /drivers/net | |
parent | c08ad1e304061dbd6ef7545d8f2db530b43c0fbd (diff) | |
download | op-kernel-dev-1096e87174f925bb817a41386ee70573b2a7d6ff.zip op-kernel-dev-1096e87174f925bb817a41386ee70573b2a7d6ff.tar.gz |
[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')
-rw-r--r-- | drivers/net/skge.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c index 596c93b1..96ffcc1 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 |