Change the structure of dp83815_set_filter ever so slightly.

This commit is contained in:
thorpej 2001-07-07 17:37:39 +00:00
parent 5624bbb1d4
commit 62794086ea
1 changed files with 26 additions and 27 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_sip.c,v 1.37 2001/07/07 16:47:44 thorpej Exp $ */
/* $NetBSD: if_sip.c,v 1.38 2001/07/07 17:37:39 thorpej Exp $ */
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@ -2565,10 +2565,11 @@ SIP_DECL(dp83815_set_filter)(struct sip_softc *sc)
ifp->if_flags &= ~IFF_ALLMULTI;
ETHER_FIRST_MULTI(step, ec, enm);
if (enm != NULL) {
while (enm != NULL) {
if (memcmp(enm->enm_addrlo, enm->enm_addrhi,
ETHER_ADDR_LEN)) {
if (enm == NULL)
goto setit;
while (enm != NULL) {
if (memcmp(enm->enm_addrlo, enm->enm_addrhi,
ETHER_ADDR_LEN)) {
/*
* We must listen to a range of multicast addresses.
* For now, just accept all multicasts, rather than
@ -2577,31 +2578,29 @@ SIP_DECL(dp83815_set_filter)(struct sip_softc *sc)
* ranges is for IP multicast routing, for which the
* range is big enough to require all bits set.)
*/
goto allmulti;
}
#ifdef DP83820
crc = ether_crc32_be(enm->enm_addrlo, ETHER_ADDR_LEN);
/* Just want the 11 most significant bits. */
hash = crc >> 21;
#else
crc = ether_crc32_le(enm->enm_addrlo, ETHER_ADDR_LEN);
/* Just want the 9 most significant bits. */
hash = crc >> 23;
#endif /* DP83820 */
slot = hash >> 4;
bit = hash & 0xf;
/* Set the corresponding bit in the hash table. */
mchash[slot] |= 1 << bit;
ETHER_NEXT_MULTI(step, enm);
goto allmulti;
}
sc->sc_rfcr |= RFCR_MHEN;
#ifdef DP83820
crc = ether_crc32_be(enm->enm_addrlo, ETHER_ADDR_LEN);
/* Just want the 11 most significant bits. */
hash = crc >> 21;
#else
crc = ether_crc32_le(enm->enm_addrlo, ETHER_ADDR_LEN);
/* Just want the 9 most significant bits. */
hash = crc >> 23;
#endif /* DP83820 */
slot = hash >> 4;
bit = hash & 0xf;
/* Set the corresponding bit in the hash table. */
mchash[slot] |= 1 << bit;
ETHER_NEXT_MULTI(step, enm);
}
sc->sc_rfcr |= RFCR_MHEN;
goto setit;
allmulti: