--- /dev/null
+From fa2da8cdae1dd64f78fc915ca1d1a4a93c71e7cb Mon Sep 17 00:00:00 2001
+From: stephen hemminger <shemminger@vyatta.com>
+Date: Tue, 15 Nov 2011 08:09:14 +0000
+Subject: bridge: correct IPv6 checksum after pull
+
+From: stephen hemminger <shemminger@vyatta.com>
+
+commit fa2da8cdae1dd64f78fc915ca1d1a4a93c71e7cb upstream.
+
+Bridge multicast snooping of ICMPv6 would incorrectly report a checksum problem
+when used with Ethernet devices like sky2 that use CHECKSUM_COMPLETE.
+When bytes are removed from skb, the computed checksum needs to be adjusted.
+
+Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
+Tested-by: Martin Volf <martin.volf.42@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/bridge/br_multicast.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/net/bridge/br_multicast.c
++++ b/net/bridge/br_multicast.c
+@@ -1501,6 +1501,8 @@ static int br_multicast_ipv6_rcv(struct
+
+ __skb_pull(skb2, offset);
+ skb_reset_transport_header(skb2);
++ skb_postpull_rcsum(skb2, skb_network_header(skb2),
++ skb_network_header_len(skb2));
+
+ icmp6_type = icmp6_hdr(skb2)->icmp6_type;
+