From: Ang Way Chuang <wcang@sfc.wide.ad.jp>
To: "Yan, Zheng " <yanzheng@21cn.com>
Cc: "Eric Dumazet" <eric.dumazet@gmail.com>,
netdev@vger.kernel.org, "Linus Lüssing" <linus.luessing@web.de>,
"Herbert Xu" <herbert@gondor.apana.org.au>
Subject: Re: IPv6 multicast snooping behaviour on 2.6.39-rc2 and later
Date: Wed, 24 Aug 2011 16:38:39 +0900 [thread overview]
Message-ID: <4E54AA7F.80107@sfc.wide.ad.jp> (raw)
In-Reply-To: <CAAM7YAmht5FFTTFHrDUXAXHD5h5gzn1GrtEbHkQfbaoCwccG0w@mail.gmail.com>
Thanks Zheng Yan. Your patch works as well. I trust others' code more than mine,
so please ignore the patch that I sent earlier.
On 24/08/11 16:04, Yan, Zheng wrote:
> On Wed, Aug 24, 2011 at 1:24 AM, Ang Way Chuang <wcang@sfc.wide.ad.jp> wrote:
>> This is what I found so far from debugging.
>>
>> The packet is not forwarded due to the failed checksum at
>> br_multicast.c:1533
>>
>> case CHECKSUM_NONE:
>> skb2->csum = 0;
>> if (skb_checksum_complete(skb2))
>> goto out;
>> }
>>
>> Contrary to description of commit ff9a57a6, when the patch of commit
>> ff9a57a6 is applied,
>> pskb_trim_rcsum is never called at all on my testbed. When commit ff9a57a6
>> is reverted,
>> pskb_trim_rcsum will be called. The difference is:
>>
>> with commit ff9a57a6,
>> pskb_trim_rcsum is never called, br_multicast_ipv6_rcv returns -EINVAL
>> which causes
>> br_handle_frame_finish to drop the packet
>>
>> without commit ff9a57a6,
>> pskb_trim_rcsum is called overwriting err with 0. br_multicast_ipv6_rcv
>> still fails on the
>> same line (skb_checksum_complete). But the difference is err is set to 0
>> this time. Thereby,
>> allowing the packet to be forwarded.
>>
>> Anyway, I don't think the behaviour is correct with or without commit
>> ff9a57a6
>>
>>
> Looks like a checksum calculation bug. Please try below patch, Thanks.
>
> ---
> diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
> index 2d85ca7..22d2d1a 100644
> --- a/net/bridge/br_multicast.c
> +++ b/net/bridge/br_multicast.c
> @@ -1520,16 +1520,23 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
> err = pskb_trim_rcsum(skb2, len);
> if (err)
> goto out;
> + err = -EINVAL;
> }
>
> + ip6h = ipv6_hdr(skb2);
> +
> switch (skb2->ip_summed) {
> case CHECKSUM_COMPLETE:
> - if (!csum_fold(skb2->csum))
> + if (!csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr, skb2->len,
> + IPPROTO_ICMPV6, skb2->csum))
> break;
> /*FALLTHROUGH*/
> case CHECKSUM_NONE:
> - skb2->csum = 0;
> - if (skb_checksum_complete(skb2))
> + skb2->csum = ~csum_unfold(csum_ipv6_magic(&ip6h->saddr,
> + &ip6h->daddr,
> + skb2->len,
> + IPPROTO_ICMPV6, 0));
> + if (__skb_checksum_complete(skb2))
> goto out;
> }
>
> ---
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
prev parent reply other threads:[~2011-08-24 7:38 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-23 8:41 IPv6 multicast snooping behaviour on 2.6.39-rc2 and later Ang Way Chuang
2011-08-23 9:57 ` Eric Dumazet
2011-08-23 12:31 ` Ang Way Chuang
2011-08-23 13:10 ` Eric Dumazet
2011-08-23 14:04 ` Ang Way Chuang
2011-08-23 17:24 ` Ang Way Chuang
2011-08-24 4:56 ` [PATCH] bridge: Pseudo-header required for the checksum of ICMP6 header of MLD Ang Way Chuang
2011-08-24 5:06 ` David Miller
2011-08-24 7:04 ` IPv6 multicast snooping behaviour on 2.6.39-rc2 and later Yan, Zheng
2011-08-24 7:22 ` Eric Dumazet
2011-08-24 7:38 ` Ang Way Chuang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E54AA7F.80107@sfc.wide.ad.jp \
--to=wcang@sfc.wide.ad.jp \
--cc=eric.dumazet@gmail.com \
--cc=herbert@gondor.apana.org.au \
--cc=linus.luessing@web.de \
--cc=netdev@vger.kernel.org \
--cc=yanzheng@21cn.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.