ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26; 
ether_crc(ETH_ALEN, mclist->dmi_addr) & 0x3f; 
static void sis190_set_rx_mode(struct net_device *dev){	struct sis190_private *tp = netdev_priv(dev);	void __iomem *ioaddr = tp->mmio_addr;	unsigned long flags;	u32 mc_filter[2];	/* Multicast hash filter */	u16 rx_mode;	if (dev->flags & IFF_PROMISC) {		/* Unconditionally log net taps. */		net_drv(tp, KERN_NOTICE "%s: Promiscuous mode enabled.\n",			dev->name);		rx_mode =			AcceptBroadcast | AcceptMulticast | AcceptMyPhys |			AcceptAllPhys;		mc_filter[1] = mc_filter[0] = 0xffffffff;	} else if ((dev->mc_count > multicast_filter_limit) ||		   (dev->flags & IFF_ALLMULTI)) {		/* Too many to filter perfectly -- accept all multicasts. */		rx_mode = AcceptBroadcast | AcceptMulticast | AcceptMyPhys;		mc_filter[1] = mc_filter[0] = 0xffffffff;	} else {		struct dev_mc_list *mclist;		unsigned int i;		rx_mode = AcceptBroadcast | AcceptMyPhys;		mc_filter[1] = mc_filter[0] = 0;		for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;		     i++, mclist = mclist->next) {			int bit_nr =				ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;			mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);			rx_mode |= AcceptMulticast;		}	}	spin_lock_irqsave(&tp->lock, flags);	SIS_W16(RxMacControl, rx_mode | 0x2);	SIS_W32(RxHashTable, mc_filter[0]);	SIS_W32(RxHashTable + 4, mc_filter[1]);	spin_unlock_irqrestore(&tp->lock, flags);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8fee5f51a56aa7a67d955993572a2ae05d31a2c6/sis190.c/buggy/drivers/net/sis190.c