[patch] Multicast does not work on re(4)

Mitja Horvat pinkfluid at gmail.com
Thu Aug 5 07:16:08 PDT 2010


Hi,

yesterday, when experimenting with udpxy, I noticed that multicast
does not work on re(4) unless I explicitly set the interface to
promiscuous mode. I tried the exact same setup on an xl0 interface and
it worked out of the box.

After comparing the re(4) sources with FreeBSD, I noticed that in
their re driver writes some data (some hash tables related to
multicast) in a different order. After implementing similar changes in
DragonFly, multicast seems to work (please see attached patch).

Regard,
Mitja Horvat
diff --git a/sys/dev/netif/re/if_re.c b/sys/dev/netif/re/if_re.c
index 74ed2e5..31dda10 100644
--- a/sys/dev/netif/re/if_re.c
+++ b/sys/dev/netif/re/if_re.c
@@ -704,8 +704,8 @@ re_setmulti(struct re_softc *sc)
 	 * order for those devices.
 	 */
 	if (sc->re_caps & RE_C_PCIE) {
-		CSR_WRITE_4(sc, RE_MAR0, bswap32(hashes[0]));
-		CSR_WRITE_4(sc, RE_MAR4, bswap32(hashes[1]));
+		CSR_WRITE_4(sc, RE_MAR0, bswap32(hashes[1]));
+		CSR_WRITE_4(sc, RE_MAR4, bswap32(hashes[0]));
 	} else {
 		CSR_WRITE_4(sc, RE_MAR0, hashes[0]);
 		CSR_WRITE_4(sc, RE_MAR4, hashes[1]);




More information about the Bugs mailing list