Skip to content

Commit

Permalink
[PATCH] skge: handle VLAN checksum correctly on yukon rev 0
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Stephen Hemminger authored and Jeff Garzik committed Dec 1, 2005
1 parent c08ad1e commit 1096e87
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions drivers/net/skge.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 1096e87

Please sign in to comment.