]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/bluetooth/bnep/netdev.c
net: convert multiple drivers to use netdev_for_each_mc_addr, part7
[net-next-2.6.git] / net / bluetooth / bnep / netdev.c
index 26fb831ef7e0ed61060e4e844019d82dfa34b7cc..326ab453edb769717a79ab63059239994a5dce0b 100644 (file)
@@ -64,7 +64,7 @@ static void bnep_net_set_mc_list(struct net_device *dev)
        struct sk_buff *skb;
        int size;
 
-       BT_DBG("%s mc_count %d", dev->name, dev->mc_count);
+       BT_DBG("%s mc_count %d", dev->name, netdev_mc_count(dev));
 
        size = sizeof(*r) + (BNEP_MAX_MULTICAST_FILTERS + 1) * ETH_ALEN * 2;
        skb  = alloc_skb(size, GFP_ATOMIC);
@@ -87,7 +87,7 @@ static void bnep_net_set_mc_list(struct net_device *dev)
                memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
                r->len = htons(ETH_ALEN * 2);
        } else {
-               struct dev_mc_list *dmi = dev->mc_list;
+               struct dev_mc_list *dmi;
                int i, len = skb->len;
 
                if (dev->flags & IFF_BROADCAST) {
@@ -97,10 +97,12 @@ static void bnep_net_set_mc_list(struct net_device *dev)
 
                /* FIXME: We should group addresses here. */
 
-               for (i = 0; i < dev->mc_count && i < BNEP_MAX_MULTICAST_FILTERS; i++) {
+               i = 0;
+               netdev_for_each_mc_addr(dmi, dev) {
+                       if (i == BNEP_MAX_MULTICAST_FILTERS)
+                               break;
                        memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
                        memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN);
-                       dmi = dmi->next;
                }
                r->len = htons(skb->len - len);
        }