|
@@ -1964,9 +1964,7 @@ SetMulticastFilter(struct net_device *dev)
|
|
omr |= OMR_PM; /* Pass all multicasts */
|
|
omr |= OMR_PM; /* Pass all multicasts */
|
|
} else if (lp->setup_f == HASH_PERF) { /* Hash Filtering */
|
|
} else if (lp->setup_f == HASH_PERF) { /* Hash Filtering */
|
|
netdev_for_each_mc_addr(ha, dev) {
|
|
netdev_for_each_mc_addr(ha, dev) {
|
|
- addrs = ha->addr;
|
|
|
|
- if ((*addrs & 0x01) == 1) { /* multicast address? */
|
|
|
|
- crc = ether_crc_le(ETH_ALEN, addrs);
|
|
|
|
|
|
+ crc = ether_crc_le(ETH_ALEN, ha->addr);
|
|
hashcode = crc & HASH_BITS; /* hashcode is 9 LSb of CRC */
|
|
hashcode = crc & HASH_BITS; /* hashcode is 9 LSb of CRC */
|
|
|
|
|
|
byte = hashcode >> 3; /* bit[3-8] -> byte in filter */
|
|
byte = hashcode >> 3; /* bit[3-8] -> byte in filter */
|
|
@@ -1977,7 +1975,6 @@ SetMulticastFilter(struct net_device *dev)
|
|
byte -= 1;
|
|
byte -= 1;
|
|
}
|
|
}
|
|
lp->setup_frame[byte] |= bit;
|
|
lp->setup_frame[byte] |= bit;
|
|
- }
|
|
|
|
}
|
|
}
|
|
} else { /* Perfect filtering */
|
|
} else { /* Perfect filtering */
|
|
netdev_for_each_mc_addr(ha, dev) {
|
|
netdev_for_each_mc_addr(ha, dev) {
|