diff options
author | Bill Helfinstine <bhelf@flitterfly.whirpon.com> | 2007-04-01 13:10:28 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-04-03 22:31:09 -0400 |
commit | cda22aa94d3fe3942476b3652b8b92c653b96ee3 (patch) | |
tree | da718ea74a34e7336fa5eb2a1d6015bdf3fd04f7 /drivers/net/b44.c | |
parent | 7f672cf5b2382310d530469f1f78f69bf48adedc (diff) | |
download | op-kernel-dev-cda22aa94d3fe3942476b3652b8b92c653b96ee3.zip op-kernel-dev-cda22aa94d3fe3942476b3652b8b92c653b96ee3.tar.gz |
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>
Diffstat (limited to 'drivers/net/b44.c')
-rw-r--r-- | drivers/net/b44.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index aaada57..d742bfe 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c @@ -1709,7 +1709,7 @@ static void __b44_set_rx_mode(struct net_device *dev) bw32(bp, B44_RXCONFIG, val); } else { unsigned char zero[6] = {0, 0, 0, 0, 0, 0}; - int i = 0; + int i = 1; __b44_set_mac_addr(bp); |