diff options
| author | Matthew Wilcox <willy@debian.org> | 2002-12-13 03:39:56 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-12-13 03:39:56 -0800 |
| commit | c5d08c19ec74969b358f96272ff1699b6a0b0acf (patch) | |
| tree | c78fa11c4ea0c36bb363cd1cb4c680603989078d | |
| parent | 8020f9339499c52485502a74e7dccdd159304992 (diff) | |
[PATCH] Remove test/set_bit from dl2k
This driver does not need to use atomic operations on local variables.
| -rw-r--r-- | drivers/net/dl2k.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c index 9c2840f63567..37ce2728ce0f 100644 --- a/drivers/net/dl2k.c +++ b/drivers/net/dl2k.c @@ -1140,10 +1140,6 @@ set_multicast (struct net_device *dev) long ioaddr = dev->base_addr; u32 hash_table[2]; u16 rx_mode = 0; - int i; - int bit; - long index, crc; - struct dev_mc_list *mclist; struct netdev_private *np = dev->priv; hash_table[0] = hash_table[1] = 0; @@ -1157,6 +1153,8 @@ set_multicast (struct net_device *dev) /* Receive broadcast and multicast frames */ rx_mode = ReceiveBroadcast | ReceiveMulticast | ReceiveUnicast; } else if (dev->mc_count > 0) { + int i; + struct dev_mc_list *mclist; /* Receive broadcast frames and multicast frames filtering by Hashtable */ rx_mode = @@ -1164,14 +1162,13 @@ set_multicast (struct net_device *dev) for (i=0, mclist = dev->mc_list; mclist && i < dev->mc_count; i++, mclist=mclist->next) { - crc = ether_crc_le (ETH_ALEN, mclist->dmi_addr); + int bit, index = 0; + int crc = ether_crc_le (ETH_ALEN, mclist->dmi_addr); /* The inverted high significant 6 bits of CRC are used as an index to hashtable */ - for (index=0, bit=0; bit < 6; bit++) { - if (test_bit(31-bit, &crc)) { - set_bit(bit, &index); - } - } + for (bit = 0; bit < 6; bit++) + if (crc & (1 << (31 - bit))) + index |= (1 << bit); hash_table[index / 32] |= (1 << (index % 32)); } } else { |
