b44: fix IFF_ALLMULTI handling of CAM slots
authorBill Helfinstine <bhelf@flitterfly.whirpon.com>
Sun, 1 Apr 2007 17:10:28 +0000 (13:10 -0400)
committerJeff Garzik <jeff@garzik.org>
Wed, 4 Apr 2007 02:31:09 +0000 (22:31 -0400)
commitcda22aa94d3fe3942476b3652b8b92c653b96ee3
treeda718ea74a34e7336fa5eb2a1d6015bdf3fd04f7
parent7f672cf5b2382310d530469f1f78f69bf48adedc
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>
drivers/net/b44.c