summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/if_cue.c
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2000-01-14 17:03:00 +0000
committerwpaul <wpaul@FreeBSD.org>2000-01-14 17:03:00 +0000
commit39da78bb33cd9dd59b6d989aa5d7656206fd6adc (patch)
tree55d04ca9ede842fbe84c0f972e9be441e35b0346 /sys/dev/usb/if_cue.c
parenta01339bf7788d145ee969e09bbb6af67d5487e73 (diff)
downloadFreeBSD-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.c8
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);
OpenPOWER on IntegriCloud