[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>

authored by Stephen Hemminger and committed by Jeff Garzik 1096e871 c08ad1e3

+1 -3
+1 -3
drivers/net/skge.c
··· 2300 td->dma_hi = map >> 32; 2301 2302 if (skb->ip_summed == CHECKSUM_HW) { 2303 - const struct iphdr *ip 2304 - = (const struct iphdr *) (skb->data + ETH_HLEN); 2305 int offset = skb->h.raw - skb->data; 2306 2307 /* This seems backwards, but it is what the sk98lin 2308 * does. Looks like hardware is wrong? 2309 */ 2310 - if (ip->protocol == IPPROTO_UDP 2311 && hw->chip_rev == 0 && hw->chip_id == CHIP_ID_YUKON) 2312 control = BMU_TCP_CHECK; 2313 else
··· 2300 td->dma_hi = map >> 32; 2301 2302 if (skb->ip_summed == CHECKSUM_HW) { 2303 int offset = skb->h.raw - skb->data; 2304 2305 /* This seems backwards, but it is what the sk98lin 2306 * does. Looks like hardware is wrong? 2307 */ 2308 + if (skb->h.ipih->protocol == IPPROTO_UDP 2309 && hw->chip_rev == 0 && hw->chip_id == CHIP_ID_YUKON) 2310 control = BMU_TCP_CHECK; 2311 else