diff options
Diffstat (limited to 'drivers/net/b44.c')
-rw-r--r-- | drivers/net/b44.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index e891ea2ecc3c..973b8eb37dc2 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
@@ -1706,14 +1706,15 @@ static void __b44_set_rx_mode(struct net_device *dev) | |||
1706 | 1706 | ||
1707 | __b44_set_mac_addr(bp); | 1707 | __b44_set_mac_addr(bp); |
1708 | 1708 | ||
1709 | if (dev->flags & IFF_ALLMULTI) | 1709 | if ((dev->flags & IFF_ALLMULTI) || |
1710 | (dev->mc_count > B44_MCAST_TABLE_SIZE)) | ||
1710 | val |= RXCONFIG_ALLMULTI; | 1711 | val |= RXCONFIG_ALLMULTI; |
1711 | else | 1712 | else |
1712 | i = __b44_load_mcast(bp, dev); | 1713 | i = __b44_load_mcast(bp, dev); |
1713 | 1714 | ||
1714 | for (; i < 64; i++) { | 1715 | for (; i < 64; i++) |
1715 | __b44_cam_write(bp, zero, i); | 1716 | __b44_cam_write(bp, zero, i); |
1716 | } | 1717 | |
1717 | bw32(bp, B44_RXCONFIG, val); | 1718 | bw32(bp, B44_RXCONFIG, val); |
1718 | val = br32(bp, B44_CAM_CTRL); | 1719 | val = br32(bp, B44_CAM_CTRL); |
1719 | bw32(bp, B44_CAM_CTRL, val | CAM_CTRL_ENABLE); | 1720 | bw32(bp, B44_CAM_CTRL, val | CAM_CTRL_ENABLE); |