[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