forked from Minki/linux
[netdrvr] b44: handle excessive multicast groups
If there are more than B44_MCAST_TABLE_SIZE groups in the dev->mc_list, it will only listen to the first B44_MCAST_TABLE_SIZE that it sees. This change makes the driver go into RXCONFIG_ALLMULTI mode if there are more than B44_MCAST_TABLE_SIZE groups being subscribed to, similar to other network drivers. Noticed by Bill Helfinstine <bhelf@flitterfly.whirpon.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
39984a9fad
commit
2f614fe04f
@ -1706,14 +1706,15 @@ static void __b44_set_rx_mode(struct net_device *dev)
|
||||
|
||||
__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;
|
||||
else
|
||||
i = __b44_load_mcast(bp, dev);
|
||||
|
||||
for (; i < 64; i++) {
|
||||
for (; i < 64; i++)
|
||||
__b44_cam_write(bp, zero, i);
|
||||
}
|
||||
|
||||
bw32(bp, B44_RXCONFIG, val);
|
||||
val = br32(bp, B44_CAM_CTRL);
|
||||
bw32(bp, B44_CAM_CTRL, val | CAM_CTRL_ENABLE);
|
||||
|
Loading…
Reference in New Issue
Block a user