filter[bit/8] |= 1 << (bit%8); 
filter[bit / 8] |= 1 << (bit % 8); 
static void sky2_set_multicast(struct net_device *dev){	struct sky2_port *sky2 = netdev_priv(dev);	struct sky2_hw *hw = sky2->hw;	unsigned port = sky2->port;	struct dev_mc_list *list = dev->mc_list;	u16 reg;	u8 filter[8];	memset(filter, 0, sizeof(filter));	reg = gma_read16(hw, port, GM_RX_CTRL);	reg |= GM_RXCR_UCF_ENA;	if (dev->flags & IFF_PROMISC) 		/* promiscious */		reg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);	else if (dev->flags & IFF_ALLMULTI)	/* all multicast */		memset(filter, 0xff, sizeof(filter));	else if (dev->mc_count == 0)		/* no multicast */		reg &= ~GM_RXCR_MCF_ENA;	else {		int i;		reg |= GM_RXCR_MCF_ENA;		for (i = 0; list && i < dev->mc_count; i++, list = list->next) {			u32 bit = ether_crc(ETH_ALEN, list->dmi_addr) & 0x3f;			filter[bit/8] |= 1 << (bit%8);		}	}	gma_write16(hw, port, GM_MC_ADDR_H1,			 (u16)filter[0] | ((u16)filter[1] << 8));	gma_write16(hw, port, GM_MC_ADDR_H2,			 (u16)filter[2] | ((u16)filter[3] << 8));	gma_write16(hw, port, GM_MC_ADDR_H3,			 (u16)filter[4] | ((u16)filter[5] << 8));	gma_write16(hw, port, GM_MC_ADDR_H4,			 (u16)filter[6] | ((u16)filter[7] << 8));	gma_write16(hw, port, GM_RX_CTRL, reg);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/793b883ed12a6ae6e2901ddb5e038b77d6f0c0ac/sky2.c/buggy/drivers/net/sky2.c