summaryrefslogtreecommitdiffstats
path: root/net/802/psnap.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2006-02-03 01:53:26 +0100
committerDavid S. Miller <davem@davemloft.net>2006-02-03 01:53:26 +0100
commit42c5e15f18d63c1ecf79d52bdaf4ea31cd22416d (patch)
tree1f93d1430321312857a93157276aa94c2b5db14d /net/802/psnap.c
parent[PATCH] device-mapper log bitset: fix big endian find_next_zero_bit (diff)
downloadlinux-42c5e15f18d63c1ecf79d52bdaf4ea31cd22416d.tar.xz
linux-42c5e15f18d63c1ecf79d52bdaf4ea31cd22416d.zip
[NET] snap: needs hardware checksum fix
The SNAP code pops off it's 5 byte header, but doesn't adjust the checksum. This would cause problems when using device that does IP over SNAP and hardware receive checksums. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/802/psnap.c')
-rw-r--r--net/802/psnap.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/802/psnap.c b/net/802/psnap.c
index 4d638944d933..34e42968b477 100644
--- a/net/802/psnap.c
+++ b/net/802/psnap.c
@@ -59,8 +59,10 @@ static int snap_rcv(struct sk_buff *skb, struct net_device *dev,
proto = find_snap_client(skb->h.raw);
if (proto) {
/* Pass the frame on. */
+ u8 *hdr = skb->data;
skb->h.raw += 5;
skb_pull(skb, 5);
+ skb_postpull_rcsum(skb, hdr, 5);
rc = proto->rcvfunc(skb, dev, &snap_packet_type, orig_dev);
} else {
skb->sk = NULL;