diff options
author | wpaul <wpaul@FreeBSD.org> | 2000-01-14 17:03:00 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 2000-01-14 17:03:00 +0000 |
commit | 39da78bb33cd9dd59b6d989aa5d7656206fd6adc (patch) | |
tree | 55d04ca9ede842fbe84c0f972e9be441e35b0346 /sys/dev/usb/if_cue.c | |
parent | a01339bf7788d145ee969e09bbb6af67d5487e73 (diff) | |
download | FreeBSD-src-39da78bb33cd9dd59b6d989aa5d7656206fd6adc.zip FreeBSD-src-39da78bb33cd9dd59b6d989aa5d7656206fd6adc.tar.gz |
Fix multicast filter programming.
Diffstat (limited to 'sys/dev/usb/if_cue.c')
-rw-r--r-- | sys/dev/usb/if_cue.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/dev/usb/if_cue.c b/sys/dev/usb/if_cue.c index 0c8741c..f832e61 100644 --- a/sys/dev/usb/if_cue.c +++ b/sys/dev/usb/if_cue.c @@ -372,15 +372,17 @@ static void cue_setmulti(sc) if (ifma->ifma_addr->sa_family != AF_LINK) continue; h = cue_crc(LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); - sc->cue_mctab[h >> 3] |= 1 << (h & 0xF); + sc->cue_mctab[h >> 3] |= 1 << (h & 0x7); } /* * Also include the broadcast address in the filter * so we can receive broadcast frames. */ - h = cue_crc(etherbroadcastaddr); - sc->cue_mctab[h >> 4] |= 1 << (h & 0xF); + if (ifp->if_flags & IFF_BROADCAST) { + h = cue_crc(etherbroadcastaddr); + sc->cue_mctab[h >> 3] |= 1 << (h & 0x7); + } cue_mem(sc, CUE_CMD_WRITESRAM, CUE_MCAST_TABLE_ADDR, &sc->cue_mctab, CUE_MCAST_TABLE_LEN); |