From nobody@FreeBSD.org  Sat Mar  1 17:56:37 2014
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1])
	(using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by hub.freebsd.org (Postfix) with ESMTPS id 70EA8B29
	for <freebsd-gnats-submit@FreeBSD.org>; Sat,  1 Mar 2014 17:56:37 +0000 (UTC)
Received: from newred.freebsd.org (cgiserv.freebsd.org [IPv6:2001:1900:2254:206a::50:4])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by mx1.freebsd.org (Postfix) with ESMTPS id 5D1961F58
	for <freebsd-gnats-submit@FreeBSD.org>; Sat,  1 Mar 2014 17:56:37 +0000 (UTC)
Received: from cgiserv.freebsd.org ([127.0.1.6])
	by newred.freebsd.org (8.14.7/8.14.7) with ESMTP id s21HuaGH056871
	for <freebsd-gnats-submit@FreeBSD.org>; Sat, 1 Mar 2014 17:56:37 GMT
	(envelope-from nobody@cgiserv.freebsd.org)
Received: (from nobody@localhost)
	by cgiserv.freebsd.org (8.14.7/8.14.7/Submit) id s21Huanw056870;
	Sat, 1 Mar 2014 17:56:36 GMT
	(envelope-from nobody)
Message-Id: <201403011756.s21Huanw056870@cgiserv.freebsd.org>
Date: Sat, 1 Mar 2014 17:56:36 GMT
From: Takanori Sawada <tak.swd@gmail.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Wandboard ffec cannot receive IPv6 multicast
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         187179
>Category:       arm
>Synopsis:       Wandboard ffec cannot receive IPv6 multicast
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    hrs
>State:          patched
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Mar 01 18:00:00 UTC 2014
>Closed-Date:    
>Last-Modified:  Sat Mar  8 15:00:00 UTC 2014
>Originator:     Takanori Sawada
>Release:        FreeBSD 11.0-CURRENT
>Organization:
>Environment:
FreeBSD wandboard 11.0-CURRENT FreeBSD 11.0-CURRENT #12 9e667e1(master): Sun Mar  2 01:57:57 JST 2014     tak@localhost.localdomain:/home/tak/share/github/freebsd-objs/arm.armv6/home/tak/share/github/freebsd/sys/WANDBOARD-DUAL  arm
>Description:
Wandboard ffec cannot receive IPv6 multicast.

- ping6 (From Wandboard to Test Server)
ping6 ff02::1%ffec0
netstat -i
===> Cannot receive NS multicast. transmit OK.

ping6 server_linklocal_address%ffec0
netstat -i
===> Cannot receive NS multicast. transmit OK.



- ping6 (From Test Server to Wandboard)
tcpdump -i ffec0

ping6 Wandboard_ffec_linklocal_address%em0
===> Cannot receive ICMPv6 Echo Request Multicast.

>How-To-Repeat:

>Fix:
I found ffec multicast filter problem.
Patch file attached.

Patch attached with submission follows:

diff --git sys/dev/ffec/if_ffec.c sys/dev/ffec/if_ffec.c
index 05a6c99..ca5b77b 100644
--- sys/dev/ffec/if_ffec.c
+++ sys/dev/ffec/if_ffec.c
@@ -954,14 +954,14 @@ ffec_setup_rxfilter(struct ffec_softc *sc)
 	if ((ifp->if_flags & IFF_ALLMULTI))
 		ghash = 0xffffffffffffffffLLU;
 	else {
-		ghash = 0;
+		ghash = 0LLU;
 		if_maddr_rlock(ifp);
 		TAILQ_FOREACH(ifma, &sc->ifp->if_multiaddrs, ifma_link) {
 			if (ifma->ifma_addr->sa_family != AF_LINK)
 				continue;
 			crc = ether_crc32_be(LLADDR((struct sockaddr_dl *)
 			    ifma->ifma_addr), ETHER_ADDR_LEN);
-			ghash |= 1 << (crc & 0x3f);
+			ghash |= 1LLU << (crc & 0x3f);
 		}
 		if_maddr_runlock(ifp);
 	}


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-arm->hrs 
Responsible-Changed-By: hrs 
Responsible-Changed-When: Sun Mar 2 05:49:06 UTC 2014 
Responsible-Changed-Why:  
Take. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=187179 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: arm/187179: commit references a PR
Date: Tue,  4 Mar 2014 06:56:01 +0000 (UTC)

 Author: hrs
 Date: Tue Mar  4 06:55:54 2014
 New Revision: 262728
 URL: http://svnweb.freebsd.org/changeset/base/262728
 
 Log:
   Fix multicast filtering.
   
   Submitted by:	Takanori Sawada
   PR:		arm/187179
 
 Modified:
   head/sys/dev/ffec/if_ffec.c
 
 Modified: head/sys/dev/ffec/if_ffec.c
 ==============================================================================
 --- head/sys/dev/ffec/if_ffec.c	Tue Mar  4 05:09:46 2014	(r262727)
 +++ head/sys/dev/ffec/if_ffec.c	Tue Mar  4 06:55:54 2014	(r262728)
 @@ -961,7 +961,7 @@ ffec_setup_rxfilter(struct ffec_softc *s
  				continue;
  			crc = ether_crc32_be(LLADDR((struct sockaddr_dl *)
  			    ifma->ifma_addr), ETHER_ADDR_LEN);
 -			ghash |= 1 << (crc & 0x3f);
 +			ghash |= 1LLU << (crc & 0x3f);
  		}
  		if_maddr_runlock(ifp);
  	}
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->patched 
State-Changed-By: hrs 
State-Changed-When: Tue Mar 4 07:12:56 UTC 2014 
State-Changed-Why:  
Committed into head. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=187179 

From: Takanori Sawada <tak.swd@gmail.com>
To: bug-followup@FreeBSD.org, tak.swd@gmail.com
Cc:  
Subject: Re: arm/187179: Wandboard ffec cannot receive IPv6 multicast
Date: Thu, 6 Mar 2014 01:02:36 +0900

 --089e013c5d2e3a29fb04f3de263a
 Content-Type: text/plain; charset=ISO-8859-1
 
 I test IPv6 multicast carefully.
 I noticed IPv6 all node multicast recieve fail.
 (ping6 ff02::1%ffec0 a part of node success.)
 
 So I read i.MX 6Solo/6DualLite Applications Processor Reference Manual.
 (23.4.4.3.2 Multicast and unicast address resolution (P1104-1105) )
 
 RM says
 - CRC is 802.3 standard CRC(ether_crc32_le())
 - six(6) most significant bits of the CRC use
 
 Patch file attached.
 Description's  test pattarn all success.
 (I cleared Wandboard/Server ND cache beforehand.(ndp -c))
 
 --089e013c5d2e3a29fb04f3de263a
 Content-Type: text/plain; charset=US-ASCII; name="_if_ffec.c.patch.txt"
 Content-Disposition: attachment; filename="_if_ffec.c.patch.txt"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_hsera5oy0
 
 ZGlmZiAtLWdpdCBzeXMvZGV2L2ZmZWMvaWZfZmZlYy5jIHN5cy9kZXYvZmZlYy9pZl9mZmVjLmMK
 aW5kZXggMjAzYWY5Yi4uYjBmMzQ2MSAxMDA2NDQKLS0tIHN5cy9kZXYvZmZlYy9pZl9mZmVjLmMK
 KysrIHN5cy9kZXYvZmZlYy9pZl9mZmVjLmMKQEAgLTk1OSw5ICs5NTksOSBAQCBmZmVjX3NldHVw
 X3J4ZmlsdGVyKHN0cnVjdCBmZmVjX3NvZnRjICpzYykKIAkJVEFJTFFfRk9SRUFDSChpZm1hLCAm
 c2MtPmlmcC0+aWZfbXVsdGlhZGRycywgaWZtYV9saW5rKSB7CiAJCQlpZiAoaWZtYS0+aWZtYV9h
 ZGRyLT5zYV9mYW1pbHkgIT0gQUZfTElOSykKIAkJCQljb250aW51ZTsKLQkJCWNyYyA9IGV0aGVy
 X2NyYzMyX2JlKExMQUREUigoc3RydWN0IHNvY2thZGRyX2RsICopCisJCQljcmMgPSBldGhlcl9j
 cmMzMl9sZShMTEFERFIoKHN0cnVjdCBzb2NrYWRkcl9kbCAqKQogCQkJICAgIGlmbWEtPmlmbWFf
 YWRkciksIEVUSEVSX0FERFJfTEVOKTsKLQkJCWdoYXNoIHw9IDFMTFUgPDwgKGNyYyAmIDB4M2Yp
 OworCQkJZ2hhc2ggfD0gMUxMVSA8PCAoKGNyYyA+PiAoKHNpemVvZihjcmMpICogOCkgLSA2KSkg
 JiAweDNmKTsKIAkJfQogCQlpZl9tYWRkcl9ydW5sb2NrKGlmcCk7CiAJfQo=
 --089e013c5d2e3a29fb04f3de263a--

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: arm/187179: commit references a PR
Date: Sat,  8 Mar 2014 14:58:50 +0000 (UTC)

 Author: hrs
 Date: Sat Mar  8 14:58:39 2014
 New Revision: 262929
 URL: http://svnweb.freebsd.org/changeset/base/262929
 
 Log:
   Fix another bug in multicast filtering.  i.MX uses 6 bits from MSB in
   LE CRC32 for the hash value, not the lowest 6 bits in BE CRC32.
   
   Tested by:	Takanori Sawada
   PR:		arm/187179
 
 Modified:
   head/sys/dev/ffec/if_ffec.c
 
 Modified: head/sys/dev/ffec/if_ffec.c
 ==============================================================================
 --- head/sys/dev/ffec/if_ffec.c	Sat Mar  8 12:26:17 2014	(r262928)
 +++ head/sys/dev/ffec/if_ffec.c	Sat Mar  8 14:58:39 2014	(r262929)
 @@ -959,9 +959,10 @@ ffec_setup_rxfilter(struct ffec_softc *s
  		TAILQ_FOREACH(ifma, &sc->ifp->if_multiaddrs, ifma_link) {
  			if (ifma->ifma_addr->sa_family != AF_LINK)
  				continue;
 -			crc = ether_crc32_be(LLADDR((struct sockaddr_dl *)
 +			/* 6 bits from MSB in LE CRC32 are used for hash. */
 +			crc = ether_crc32_le(LLADDR((struct sockaddr_dl *)
  			    ifma->ifma_addr), ETHER_ADDR_LEN);
 -			ghash |= 1LLU << (crc & 0x3f);
 +			ghash |= 1LLU << (((uint8_t *)&crc)[3] >> 2);
  		}
  		if_maddr_runlock(ifp);
  	}
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
>Unformatted:
