diff options
| author | Ingo Molnar <mingo@elte.hu> | 2010-04-02 20:02:55 +0200 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2010-04-02 20:03:08 +0200 |
| commit | c9494727cf293ae2ec66af57547a3e79c724fec2 (patch) | |
| tree | 44ae197b64fa7530ee695a90ad31326dda06f1e1 /drivers/net/3c523.c | |
| parent | 6427462bfa50f50dc6c088c07037264fcc73eca1 (diff) | |
| parent | 42be79e37e264557f12860fa4cc84b4de3685954 (diff) | |
Merge branch 'linus' into sched/core
Merge reason: update to latest upstream
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/net/3c523.c')
| -rw-r--r-- | drivers/net/3c523.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/net/3c523.c b/drivers/net/3c523.c index 27d80ca5e4c..beed4fa10c6 100644 --- a/drivers/net/3c523.c +++ b/drivers/net/3c523.c @@ -625,8 +625,8 @@ static int init586(struct net_device *dev) volatile struct iasetup_cmd_struct *ias_cmd; volatile struct tdr_cmd_struct *tdr_cmd; volatile struct mcsetup_cmd_struct *mc_cmd; - struct dev_mc_list *dmi = dev->mc_list; - int num_addrs = dev->mc_count; + struct dev_mc_list *dmi; + int num_addrs = netdev_mc_count(dev); ptr = (void *) ((char *) p->scb + sizeof(struct scb_struct)); @@ -771,7 +771,7 @@ static int init586(struct net_device *dev) * Multicast setup */ - if (dev->mc_count) { + if (num_addrs) { /* I don't understand this: do we really need memory after the init? */ int len = ((char *) p->iscp - (char *) ptr - 8) / 6; if (len <= 0) { @@ -787,10 +787,9 @@ static int init586(struct net_device *dev) mc_cmd->cmd_cmd = CMD_MCSETUP | CMD_LAST; mc_cmd->cmd_link = 0xffff; mc_cmd->mc_cnt = num_addrs * 6; - for (i = 0; i < num_addrs; i++) { - memcpy((char *) mc_cmd->mc_list[i], dmi->dmi_addr, 6); - dmi = dmi->next; - } + i = 0; + netdev_for_each_mc_addr(dmi, dev) + memcpy((char *) mc_cmd->mc_list[i++], dmi->dmi_addr, 6); p->scb->cbl_offset = make16(mc_cmd); p->scb->cmd = CUC_START; elmc_id_attn586(); |
