diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2006-02-05 23:23:33 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-02-05 23:23:33 -0500 |
commit | e3f749c4af69c4344d89f11e2293e3790eb4eaca (patch) | |
tree | b418be396db3ec7486767b93239da208662017bb /drivers | |
parent | 410c05427a69f53851637ccb85c2212131409fbd (diff) |
[PPP]: Fixed hardware RX checksum handling
When we pull the PPP protocol off the skb, we forgot to update the
hardware RX checksum. This may lead to messages such as
dsl0: hw csum failure.
Similarly, we need to clear the hardware checksum flag when we use
the existing packet to store the decompressed result.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ppp_generic.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index 1c6d328165bb..0245e40b51a1 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c | |||
@@ -1610,6 +1610,8 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb) | |||
1610 | } | 1610 | } |
1611 | else if (!pskb_may_pull(skb, skb->len)) | 1611 | else if (!pskb_may_pull(skb, skb->len)) |
1612 | goto err; | 1612 | goto err; |
1613 | else | ||
1614 | skb->ip_summed = CHECKSUM_NONE; | ||
1613 | 1615 | ||
1614 | len = slhc_uncompress(ppp->vj, skb->data + 2, skb->len - 2); | 1616 | len = slhc_uncompress(ppp->vj, skb->data + 2, skb->len - 2); |
1615 | if (len <= 0) { | 1617 | if (len <= 0) { |
@@ -1690,6 +1692,7 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb) | |||
1690 | kfree_skb(skb); | 1692 | kfree_skb(skb); |
1691 | } else { | 1693 | } else { |
1692 | skb_pull(skb, 2); /* chop off protocol */ | 1694 | skb_pull(skb, 2); /* chop off protocol */ |
1695 | skb_postpull_rcsum(skb, skb->data - 2, 2); | ||
1693 | skb->dev = ppp->dev; | 1696 | skb->dev = ppp->dev; |
1694 | skb->protocol = htons(npindex_to_ethertype[npi]); | 1697 | skb->protocol = htons(npindex_to_ethertype[npi]); |
1695 | skb->mac.raw = skb->data; | 1698 | skb->mac.raw = skb->data; |