|
@@ -1706,14 +1706,15 @@ static void __b44_set_rx_mode(struct net_device *dev)
|
|
|
|
|
|
__b44_set_mac_addr(bp);
|
|
__b44_set_mac_addr(bp);
|
|
|
|
|
|
- if (dev->flags & IFF_ALLMULTI)
|
|
|
|
|
|
+ if ((dev->flags & IFF_ALLMULTI) ||
|
|
|
|
+ (dev->mc_count > B44_MCAST_TABLE_SIZE))
|
|
val |= RXCONFIG_ALLMULTI;
|
|
val |= RXCONFIG_ALLMULTI;
|
|
else
|
|
else
|
|
i = __b44_load_mcast(bp, dev);
|
|
i = __b44_load_mcast(bp, dev);
|
|
|
|
|
|
- for (; i < 64; i++) {
|
|
|
|
|
|
+ for (; i < 64; i++)
|
|
__b44_cam_write(bp, zero, i);
|
|
__b44_cam_write(bp, zero, i);
|
|
- }
|
|
|
|
|
|
+
|
|
bw32(bp, B44_RXCONFIG, val);
|
|
bw32(bp, B44_RXCONFIG, val);
|
|
val = br32(bp, B44_CAM_CTRL);
|
|
val = br32(bp, B44_CAM_CTRL);
|
|
bw32(bp, B44_CAM_CTRL, val | CAM_CTRL_ENABLE);
|
|
bw32(bp, B44_CAM_CTRL, val | CAM_CTRL_ENABLE);
|