diff options
| author | Christian Weisgerber <naddy@FreeBSD.org> | 2004-06-09 14:34:04 +0000 |
|---|---|---|
| committer | Christian Weisgerber <naddy@FreeBSD.org> | 2004-06-09 14:34:04 +0000 |
| commit | 0e939c0ceab8e6f6421a2ccc1501f6d3fabd118f (patch) | |
| tree | 63c1a8adb963adf2b159557569195cbc8c219d33 /sys/dev/fe | |
| parent | 6c27c6039b0c96613aaca7a958e18ab9cd1778f6 (diff) | |
Notes
Diffstat (limited to 'sys/dev/fe')
| -rw-r--r-- | sys/dev/fe/if_fe.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/sys/dev/fe/if_fe.c b/sys/dev/fe/if_fe.c index 75b224654956..3788c07db4a2 100644 --- a/sys/dev/fe/if_fe.c +++ b/sys/dev/fe/if_fe.c @@ -2033,29 +2033,6 @@ fe_write_mbufs (struct fe_softc *sc, struct mbuf *m) } /* - * Compute hash value for an Ethernet address - */ -static uint32_t -fe_mchash (const uint8_t *addr) -{ -#define FE_POLY 0xEDB88320L - - uint32_t carry, crc = 0xFFFFFFFFL; - int idx, bit; - uint8_t data; - - for ( idx = ETHER_ADDR_LEN; --idx >= 0; ) { - for (data = *addr++, bit = 8; --bit >= 0; data >>= 1) { - carry = crc; - crc >>= 1; - if ((carry ^ data) & 1) - crc ^= FE_POLY; - } - } - return (crc >> 26); -} - -/* * Compute the multicast address filter from the * list of multicast addresses we need to listen to. */ @@ -2070,7 +2047,8 @@ fe_mcaf ( struct fe_softc *sc ) TAILQ_FOREACH(ifma, &sc->arpcom.ac_if.if_multiaddrs, ifma_link) { if (ifma->ifma_addr->sa_family != AF_LINK) continue; - index = fe_mchash(LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); + index = ether_crc32_le(LLADDR((struct sockaddr_dl *) + ifma->ifma_addr), ETHER_ADDR_LEN) >> 26; #ifdef FE_DEBUG printf("%s: hash(%6D) == %d\n", sc->sc_xname, enm->enm_addrlo , ":", index); |
