summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Paul <wpaul@FreeBSD.org>2000-01-11 18:09:19 +0000
committerBill Paul <wpaul@FreeBSD.org>2000-01-11 18:09:19 +0000
commit611d6a1573b295040c444fb5ed978cb7a09ca6a1 (patch)
tree01d84f34bc028dc494a2d565578ae52e0e4edc31
parent15e1a3068c5c93d14054e6ba40c6eb1a46e7a2d9 (diff)
Notes
-rw-r--r--sys/dev/usb/if_kue.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/dev/usb/if_kue.c b/sys/dev/usb/if_kue.c
index 2371a879c393..231437497d5e 100644
--- a/sys/dev/usb/if_kue.c
+++ b/sys/dev/usb/if_kue.c
@@ -343,21 +343,20 @@ static void kue_setmulti(sc)
* If there are too many addresses for the
* internal filter, switch over to allmulti mode.
*/
- if (i == KUE_MCFILTCNT(sc)) {
- i = 0;
+ if (i == KUE_MCFILTCNT(sc))
break;
- }
bcopy(LLADDR((struct sockaddr_dl *)ifma->ifma_addr),
KUE_MCFILT(sc, i), ETHER_ADDR_LEN);
i++;
}
- if (i) {
+ if (i == KUE_MCFILTCNT(sc))
+ sc->kue_rxfilt |= KUE_RXFILT_ALLMULTI;
+ else {
sc->kue_rxfilt |= KUE_RXFILT_MULTICAST;
kue_ctl(sc, KUE_CTL_WRITE, KUE_CMD_SET_MCAST_FILTERS,
i, sc->kue_mcfilters, i * ETHER_ADDR_LEN);
- } else
- sc->kue_rxfilt |= KUE_RXFILT_ALLMULTI;
+ }
kue_setword(sc, KUE_CMD_SET_PKT_FILTER, sc->kue_rxfilt);