diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2009-01-29 12:37:50 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2009-01-29 12:37:50 +0000 |
commit | 396bc3cb8b875e7ec1ce1ff0020dd352ae7aecbe (patch) | |
tree | 1060a4ca7d5bca3dbcb85267d50e0cb69346215f /sys | |
parent | 95b3ded6e762829152839636b2b11db0c443b5e4 (diff) |
Make multicast actually work this time.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/socppc/dev/if_tsec.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/arch/socppc/dev/if_tsec.c b/sys/arch/socppc/dev/if_tsec.c index c66f437c088..fed717e54c8 100644 --- a/sys/arch/socppc/dev/if_tsec.c +++ b/sys/arch/socppc/dev/if_tsec.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_tsec.c,v 1.16 2009/01/29 10:15:46 kettenis Exp $ */ +/* $OpenBSD: if_tsec.c,v 1.17 2009/01/29 12:37:49 kettenis Exp $ */ /* * Copyright (c) 2008 Mark Kettenis @@ -954,9 +954,9 @@ tsec_iff(struct tsec_softc *sc) if (bcmp(enm->enm_addrlo, enm->enm_addrhi, ETHER_ADDR_LEN)) goto allmulti; - crc = ether_crc32_le(enm->enm_addrlo, ETHER_ADDR_LEN); + crc = ether_crc32_be(enm->enm_addrlo, ETHER_ADDR_LEN); crc >>= 24; - hash[crc / 32] |= 1 << (crc % 32); + hash[crc / 32] |= 1 << (31 - (crc % 32)); ETHER_NEXT_MULTI(step, enm); } @@ -969,7 +969,7 @@ allmulti: domulti: for (i = 0; i < nitems(hash); i++) - tsec_write(sc, TSEC_IADDR0 + i * 4, hash[i]); + tsec_write(sc, TSEC_GADDR0 + i * 4, hash[i]); rctrl = tsec_read(sc, TSEC_RCTRL); if (ifp->if_flags & IFF_ALLMULTI) |