Date: Sat, 26 Mar 2016 17:20:12 +0300 From: Guy Yur <guyyur@gmail.com> To: freebsd-arm <freebsd-arm@freebsd.org> Subject: ODROID C1+ dwc doesn't pass rx multicast ipv6 packets unless in promiscuous mode Message-ID: <CAC67Hz8GJK6roWdQ80LssDAxOmv0fD4xzm0PZsn89V6dLmWu5Q@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAC67Hz8GJK6roWdQ80LssDAxOmv0fD4xzm0PZsn89V6dLmWu5Q>