Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48e2f183 authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller
Browse files

net: convert multiple drivers to use netdev_for_each_mc_addr, part4

parent 7a81e9f3
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -965,8 +965,7 @@ static void emac_dev_mcast_set(struct net_device *ndev)
			mbp_enable = (mbp_enable | EMAC_MBP_RXMCAST);
			emac_add_mcast(priv, EMAC_ALL_MULTI_CLR, NULL);
			/* program multicast address list into EMAC hardware */
			for (mc_ptr = ndev->mc_list; mc_ptr;
			     mc_ptr = mc_ptr->next) {
			netdev_for_each_mc_addr(mc_ptr, ndev) {
				emac_add_mcast(priv, EMAC_MULTICAST_ADD,
					       (u8 *) mc_ptr->dmi_addr);
			}
+7 −3
Original line number Diff line number Diff line
@@ -1537,15 +1537,19 @@ static int e100_hw_init(struct nic *nic)
static void e100_multi(struct nic *nic, struct cb *cb, struct sk_buff *skb)
{
	struct net_device *netdev = nic->netdev;
	struct dev_mc_list *list = netdev->mc_list;
	struct dev_mc_list *list;
	u16 i, count = min(netdev_mc_count(netdev), E100_MAX_MULTICAST_ADDRS);

	cb->command = cpu_to_le16(cb_multi);
	cb->u.multi.count = cpu_to_le16(count * ETH_ALEN);
	for (i = 0; list && i < count; i++, list = list->next)
		memcpy(&cb->u.multi.addr[i*ETH_ALEN], &list->dmi_addr,
	i = 0;
	netdev_for_each_mc_addr(list, netdev) {
		if (i == count)
			break;
		memcpy(&cb->u.multi.addr[i++ * ETH_ALEN], &list->dmi_addr,
			ETH_ALEN);
	}
}

static void e100_set_multicast_list(struct net_device *netdev)
{
+3 −5
Original line number Diff line number Diff line
@@ -1287,7 +1287,7 @@ set_multicast_list(struct net_device *dev)
	struct eepro_local *lp = netdev_priv(dev);
	short ioaddr = dev->base_addr;
	unsigned short mode;
	struct dev_mc_list *dmi=dev->mc_list;
	struct dev_mc_list *dmi;
	int mc_count = netdev_mc_count(dev);

	if (dev->flags&(IFF_ALLMULTI|IFF_PROMISC) || mc_count > 63)
@@ -1332,10 +1332,8 @@ set_multicast_list(struct net_device *dev)
		outw(0, ioaddr + IO_PORT);
		outw(6 * (mc_count + 1), ioaddr + IO_PORT);

		for (i = 0; i < mc_count; i++)
		{
		netdev_for_each_mc_addr(dmi, dev) {
			eaddrs = (unsigned short *) dmi->dmi_addr;
			dmi=dmi->next;
			outw(*eaddrs++, ioaddr + IO_PORT);
			outw(*eaddrs++, ioaddr + IO_PORT);
			outw(*eaddrs++, ioaddr + IO_PORT);
+6 −10
Original line number Diff line number Diff line
@@ -1588,23 +1588,19 @@ static void eexp_setup_filter(struct net_device *dev)

	outw(CONF_NR_MULTICAST & ~31, ioaddr+SM_PTR);
	outw(6*count, ioaddr+SHADOW(CONF_NR_MULTICAST));
	for (i = 0, dmi = dev->mc_list; i < count; i++, dmi = dmi->next) {
		unsigned short *data;
		if (!dmi) {
			printk(KERN_INFO "%s: too few multicast addresses\n", dev->name);
	i = 0;
	netdev_for_each_mc_addr(dmi, dev) {
		unsigned short *data = (unsigned short *) dmi->dmi_addr;

		if (i == count)
			break;
		}
		if (dmi->dmi_addrlen != ETH_ALEN) {
			printk(KERN_INFO "%s: invalid multicast address length given.\n", dev->name);
			continue;
		}
		data = (unsigned short *)dmi->dmi_addr;
		outw((CONF_MULTICAST+(6*i)) & ~31, ioaddr+SM_PTR);
		outw(data[0], ioaddr+SHADOW(CONF_MULTICAST+(6*i)));
		outw((CONF_MULTICAST+(6*i)+2) & ~31, ioaddr+SM_PTR);
		outw(data[1], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+2));
		outw((CONF_MULTICAST+(6*i)+4) & ~31, ioaddr+SM_PTR);
		outw(data[2], ioaddr+SHADOW(CONF_MULTICAST+(6*i)+4));
		i++;
	}
}

+2 −3
Original line number Diff line number Diff line
@@ -1967,7 +1967,7 @@ static void ehea_set_multicast_list(struct net_device *dev)
{
	struct ehea_port *port = netdev_priv(dev);
	struct dev_mc_list *k_mcl_entry;
	int ret, i;
	int ret;

	if (dev->flags & IFF_PROMISC) {
		ehea_promiscuous(dev, 1);
@@ -1997,8 +1997,7 @@ static void ehea_set_multicast_list(struct net_device *dev)
			goto out;
		}

		for (i = 0, k_mcl_entry = dev->mc_list; i < netdev_mc_count(dev); i++,
			     k_mcl_entry = k_mcl_entry->next)
		netdev_for_each_mc_addr(k_mcl_entry, dev)
			ehea_add_multicast_entry(port, k_mcl_entry->dmi_addr);

	}
Loading