diff options
author | Jiri Pirko <jpirko@redhat.com> | 2010-02-27 07:35:45 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-28 01:44:01 -0800 |
commit | 655ffee284dfcf9a24ac0343f3e5ee6db85b85c5 (patch) | |
tree | 83ac4727338e0565baae5bbe9ac8dfa57c69c545 /drivers/net/wireless/libertas | |
parent | 9675478bbafed08848bf8d7e28400d5e46330b23 (diff) |
wireless: convert to use netdev_for_each_mc_addr
also added missed locking in rndis_wlan.c
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/libertas')
-rw-r--r-- | drivers/net/wireless/libertas/main.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c index cd8ed7fdafa..28a1c9d1627 100644 --- a/drivers/net/wireless/libertas/main.c +++ b/drivers/net/wireless/libertas/main.c @@ -319,15 +319,18 @@ static int lbs_add_mcast_addrs(struct cmd_ds_mac_multicast_adr *cmd, { int i = nr_addrs; struct dev_mc_list *mc_list; + int cnt; if ((dev->flags & (IFF_UP|IFF_MULTICAST)) != (IFF_UP|IFF_MULTICAST)) return nr_addrs; netif_addr_lock_bh(dev); - for (mc_list = dev->mc_list; mc_list; mc_list = mc_list->next) { + cnt = netdev_mc_count(dev); + netdev_for_each_mc_addr(mc_list, dev) { if (mac_in_list(cmd->maclist, nr_addrs, mc_list->dmi_addr)) { lbs_deb_net("mcast address %s:%pM skipped\n", dev->name, mc_list->dmi_addr); + cnt--; continue; } @@ -337,9 +340,10 @@ static int lbs_add_mcast_addrs(struct cmd_ds_mac_multicast_adr *cmd, lbs_deb_net("mcast address %s:%pM added to filter\n", dev->name, mc_list->dmi_addr); i++; + cnt--; } netif_addr_unlock_bh(dev); - if (mc_list) + if (cnt) return -EOVERFLOW; return i; |