ODROID C1+ dwc doesn't pass rx multicast ipv6 packets unless in promiscuous mode

Guy Yur guyyur at gmail.com
Sat Mar 26 14:20:14 UTC 2016


Hi,

I am running rtadvd on my ODROID C1+ and router solicitation messages
sent from other hosts are not seen in tcpdump unless I put the NIC in
promiscuous mode.

I was able to pass the multicast packets by switching to the NetBSD
dwc_gmac driver registers AWIN_GMAC_MAC_HTHIGH, AWIN_GMAC_MAC_HTLOW
instead of HASH_TABLE_REG(n) and using only the upper 6 bits instead
of the upper 8 bits.

http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/ic/dwc_gmac.c?only_with_tag=MAIN

The linux driver stmmac only uses HASH_TABLE_REG(n) (0x500 + (0x4 * n))
if the hash table size is 128 or 256.
If the hash table size is 64 it uses AWIN_GMAC_MAC_HTHIGH (0x8)
and AWIN_GMAC_MAC_HTLOW (0xc).
The hash table size defaults to 64 and can be overridden from
dts snps,multicast-filter-bins.
socfpga.dtsi defines it as 256 on linux so the Altera Cyclone
has 8 bits and if_dwc works for it but not for the ODROID C1+
which only has 6 bits.

Guy


More information about the freebsd-arm mailing list