|
@@ -1216,7 +1216,7 @@ static int elp_close(struct net_device *dev)
|
|
static void elp_set_mc_list(struct net_device *dev)
|
|
static void elp_set_mc_list(struct net_device *dev)
|
|
{
|
|
{
|
|
elp_device *adapter = netdev_priv(dev);
|
|
elp_device *adapter = netdev_priv(dev);
|
|
- struct dev_mc_list *dmi = dev->mc_list;
|
|
|
|
|
|
+ struct dev_mc_list *dmi;
|
|
int i;
|
|
int i;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
|
|
|
@@ -1230,10 +1230,9 @@ static void elp_set_mc_list(struct net_device *dev)
|
|
/* if num_addrs==0 the list will be cleared */
|
|
/* if num_addrs==0 the list will be cleared */
|
|
adapter->tx_pcb.command = CMD_LOAD_MULTICAST_LIST;
|
|
adapter->tx_pcb.command = CMD_LOAD_MULTICAST_LIST;
|
|
adapter->tx_pcb.length = 6 * netdev_mc_count(dev);
|
|
adapter->tx_pcb.length = 6 * netdev_mc_count(dev);
|
|
- for (i = 0; i < netdev_mc_count(dev); i++) {
|
|
|
|
- memcpy(adapter->tx_pcb.data.multicast[i], dmi->dmi_addr, 6);
|
|
|
|
- dmi = dmi->next;
|
|
|
|
- }
|
|
|
|
|
|
+ i = 0;
|
|
|
|
+ netdev_for_each_mc_addr(dmi, dev)
|
|
|
|
+ memcpy(adapter->tx_pcb.data.multicast[i++], dmi->dmi_addr, 6);
|
|
adapter->got[CMD_LOAD_MULTICAST_LIST] = 0;
|
|
adapter->got[CMD_LOAD_MULTICAST_LIST] = 0;
|
|
if (!send_pcb(dev, &adapter->tx_pcb))
|
|
if (!send_pcb(dev, &adapter->tx_pcb))
|
|
pr_err("%s: couldn't send set_multicast command\n", dev->name);
|
|
pr_err("%s: couldn't send set_multicast command\n", dev->name);
|