This patch fixes "kernel: raw v6 hw csum failure." messages.
It distracted me from the TCPMSS issue, I'll take care of that
tomorrow.

[IPV6]: Fix raw socket hardware checksum failures

When packets hit raw sockets the csum update isn't done yet, do it manually.
Packets can also reach rawv6_rcv on the output path through
ip6_call_ra_chain, in this case skb->ip_summed is CHECKSUM_NONE and this
codepath isn't executed.

Signed-off-by: Patrick McHardy <[EMAIL PROTECTED]>

---
commit 619592d37b7c4ad57c4a9f01d30465a8c4d32af1
tree 3e877169788411b1c31bd34c9f547e0f0fb7452e
parent ead40dd0539f0223d80f956f823f7091f90ad92b
author Patrick McHardy <[EMAIL PROTECTED]> Wed, 17 Aug 2005 05:27:26 +0200
committer Patrick McHardy <[EMAIL PROTECTED]> Wed, 17 Aug 2005 05:27:26 +0200

 net/ipv6/raw.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -337,6 +337,8 @@ int rawv6_rcv(struct sock *sk, struct sk
 
        if (skb->ip_summed != CHECKSUM_UNNECESSARY) {
                if (skb->ip_summed == CHECKSUM_HW) {
+                       skb_postpull_rcsum(skb, skb->nh.raw,
+                                          skb->h.raw - skb->nh.raw);
                        skb->ip_summed = CHECKSUM_UNNECESSARY;
                        if (csum_ipv6_magic(&skb->nh.ipv6h->saddr,
                                            &skb->nh.ipv6h->daddr,

Reply via email to