diff options
author | Jiri Pirko <jpirko@redhat.com> | 2010-02-17 23:22:38 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-18 14:47:48 -0800 |
commit | 2a0d18f97cc15d57ad0c93259a3df4cb72c5a28b (patch) | |
tree | 8241c14e24223072ddeb68fcfe8b2aea37c2deab /drivers/net | |
parent | 59ce25d9eb2e17b901a404766f9e134759407d26 (diff) | |
download | op-kernel-dev-2a0d18f97cc15d57ad0c93259a3df4cb72c5a28b.zip op-kernel-dev-2a0d18f97cc15d57ad0c93259a3df4cb72c5a28b.tar.gz |
smsc911x: convert to use netdev_for_each_mc_addr
also removed unnecessary checks
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/smsc911x.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c index 13c0b76..4fd1d8b 100644 --- a/drivers/net/smsc911x.c +++ b/drivers/net/smsc911x.c @@ -1383,29 +1383,20 @@ static void smsc911x_set_multicast_list(struct net_device *dev) /* Enabling specific multicast addresses */ unsigned int hash_high = 0; unsigned int hash_low = 0; - unsigned int count = 0; - struct dev_mc_list *mc_list = dev->mc_list; + struct dev_mc_list *mc_list; pdata->set_bits_mask = MAC_CR_HPFILT_; pdata->clear_bits_mask = (MAC_CR_PRMS_ | MAC_CR_MCPAS_); - while (mc_list) { - count++; - if ((mc_list->dmi_addrlen) == ETH_ALEN) { - unsigned int bitnum = - smsc911x_hash(mc_list->dmi_addr); - unsigned int mask = 0x01 << (bitnum & 0x1F); - if (bitnum & 0x20) - hash_high |= mask; - else - hash_low |= mask; - } else { - SMSC_WARNING(DRV, "dmi_addrlen != 6"); - } - mc_list = mc_list->next; + netdev_for_each_mc_addr(mc_list, dev) { + unsigned int bitnum = smsc911x_hash(mc_list->dmi_addr); + unsigned int mask = 0x01 << (bitnum & 0x1F); + + if (bitnum & 0x20) + hash_high |= mask; + else + hash_low |= mask; } - if (count != (unsigned int)netdev_mc_count(dev)) - SMSC_WARNING(DRV, "mc_count != dev->mc_count"); pdata->hashhi = hash_high; pdata->hashlo = hash_low; |