DragonFly BSD
DragonFly bugs List (threaded) for 2010-08
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

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

From: Mitja Horvat <pinkfluid@xxxxxxxxx>
Date: Thu, 5 Aug 2010 15:52:28 +0200


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).

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]);

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]