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/net | |
| 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/net')
| -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; |
