forked from luck/tmp_suning_uos_patched
b44: fix IFF_ALLMULTI handling of CAM slots
If you set the IFF_ALLMULTI flag on a b44 device, or if you join more than B44_MCAST_TABLE_SIZE multicast groups, the device will stop receiving unicast messages. This is because the __b44_set_mac_addr call sets the zeroth CAM entry to the MAC address of the device, and then the loop at line 1722 proceeds to overwrite it unless the value of i is set by the __b44_load_mcast call. However, when IFF_ALLMULTI is set, that call is bypassed, leaving i set to zero. Fixed by starting the loop at 1 to make it skip the CAM entry for the MAC address. Signed-off-by: Bill Helfinstine <bhelf@flitterfly.whirpon.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
7f672cf5b2
commit
cda22aa94d
@ -1709,7 +1709,7 @@ static void __b44_set_rx_mode(struct net_device *dev)
|
|||||||
bw32(bp, B44_RXCONFIG, val);
|
bw32(bp, B44_RXCONFIG, val);
|
||||||
} else {
|
} else {
|
||||||
unsigned char zero[6] = {0, 0, 0, 0, 0, 0};
|
unsigned char zero[6] = {0, 0, 0, 0, 0, 0};
|
||||||
int i = 0;
|
int i = 1;
|
||||||
|
|
||||||
__b44_set_mac_addr(bp);
|
__b44_set_mac_addr(bp);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user