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

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

staging: convert to use netdev_for_each_mc_addr



removed needless checks in arlan-main.c and slicoss.c
fixed bug in et131x_netdev.c to actually fill addresses in.

Signed-off-by: default avatarJiri Pirko <jpirko@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a92635dc
Loading
Loading
Loading
Loading
+10 −15
Original line number Diff line number Diff line
@@ -1455,10 +1455,10 @@ static void arlan_rx_interrupt(struct net_device *dev, u_char rxStatus, u_short
#ifdef ARLAN_MULTICAST
			if (!(dev->flags & IFF_ALLMULTI) &&
				!(dev->flags & IFF_PROMISC) &&
				dev->mc_list)
				!netdev_mc_empty(dev))
			{
				char hw_dst_addr[6];
				struct dev_mc_list *dmi = dev->mc_list;
				struct dev_mc_list *dmi;
				int i;

				memcpy_fromio(hw_dst_addr, arlan->ultimateDestAddress, 6);
@@ -1469,9 +1469,7 @@ static void arlan_rx_interrupt(struct net_device *dev, u_char rxStatus, u_short
							printk(KERN_ERR "%s mcast 0x0100 \n", dev->name);
						else if (hw_dst_addr[1] == 0x40)
							printk(KERN_ERR "%s m/bcast 0x0140 \n", dev->name);
					while (dmi)
					{
						if (dmi->dmi_addrlen == 6) {
					netdev_for_each_mc_entry(dmi, dev) {
						if (arlan_debug & ARLAN_DEBUG_HEADER_DUMP)
							printk(KERN_ERR "%s mcl %pM\n",
							       dev->name, dmi->dmi_addr);
@@ -1480,9 +1478,6 @@ static void arlan_rx_interrupt(struct net_device *dev, u_char rxStatus, u_short
								break;
						if (i == 6)
							break;
						} else
							printk(KERN_ERR "%s: invalid multicast address length given.\n", dev->name);
						dmi = dmi->next;
					}
					/* we reach here if multicast filtering is on and packet 
					 * is multicast and not for receive */
+8 −7
Original line number Diff line number Diff line
@@ -411,9 +411,9 @@ void et131x_multicast(struct net_device *netdev)
{
	struct et131x_adapter *adapter = netdev_priv(netdev);
	uint32_t PacketFilter = 0;
	uint32_t count;
	unsigned long flags;
	struct dev_mc_list *mclist = netdev->mc_list;
	struct dev_mc_list *mclist;
	int i;

	spin_lock_irqsave(&adapter->Lock, flags);

@@ -456,12 +456,13 @@ void et131x_multicast(struct net_device *netdev)
	}

	/* Set values in the private adapter struct */
	adapter->MCAddressCount = netdev_mc_count(netdev);

	if (!netdev_mc_empty(netdev)) {
		count = netdev_mc_count(netdev) - 1;
		memcpy(adapter->MCList[count], mclist->dmi_addr, ETH_ALEN);
	i = 0;
	netdev_for_each_mc_addr(mclist, netdev) {
		if (i == NIC_MAX_MCAST_LIST)
			break;
		memcpy(adapter->MCList[i++], mclist->dmi_addr, ETH_ALEN);
	}
	adapter->MCAddressCount = i;

	/* Are the new flags different from the previous ones? If not, then no
	 * action is required
+1 −1
Original line number Diff line number Diff line
@@ -382,7 +382,7 @@ static void cvm_oct_common_set_multicast_list(struct net_device *dev)
		control.u64 = 0;
		control.s.bcst = 1;	/* Allow broadcast MAC addresses */

		if (dev->mc_list || (dev->flags & IFF_ALLMULTI) ||
		if (!netdev_mc_empty(dev) || (dev->flags & IFF_ALLMULTI) ||
		    (dev->flags & IFF_PROMISC))
			/* Force accept multicast packets */
			control.s.mcst = 2;
+4 −12
Original line number Diff line number Diff line
@@ -1362,25 +1362,17 @@ static void slic_mcast_set_list(struct net_device *dev)
{
	struct adapter *adapter = (struct adapter *)netdev_priv(dev);
	int status = STATUS_SUCCESS;
	int i;
	char *addresses;
	struct dev_mc_list *mc_list = dev->mc_list;
	int mc_count = netdev_mc_count(dev);
	struct dev_mc_list *mc_list;

	ASSERT(adapter);

	for (i = 1; i <= mc_count; i++) {
	netdev_for_each_mc_addr(mc_list, dev) {
		addresses = (char *) &mc_list->dmi_addr;
		if (mc_list->dmi_addrlen == 6) {
		status = slic_mcast_add_list(adapter, addresses);
		if (status != STATUS_SUCCESS)
			break;
		} else {
			status = -EINVAL;
			break;
		}
		slic_mcast_set_bit(adapter, addresses);
		mc_list = mc_list->next;
	}

	if (adapter->devflags_prev != dev->flags) {
+2 −4
Original line number Diff line number Diff line
@@ -3082,7 +3082,6 @@ static void device_set_multi(struct net_device *dev) {

    PSMgmtObject     pMgmt = pDevice->pMgmt;
    u32              mc_filter[2];
    int              i;
    struct dev_mc_list *mclist;


@@ -3103,8 +3102,7 @@ static void device_set_multi(struct net_device *dev) {
    }
    else {
        memset(mc_filter, 0, sizeof(mc_filter));
        for (i = 0, mclist = dev->mc_list; mclist && i < netdev_mc_count(dev);
             i++, mclist = mclist->next) {
	netdev_for_each_mc_addr(mclist, dev) {
            int bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
            mc_filter[bit_nr >> 5] |= cpu_to_le32(1 << (bit_nr & 31));
        }
Loading