diff options
Diffstat (limited to 'drivers/net/sunqe.c')
-rw-r--r-- | drivers/net/sunqe.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/net/sunqe.c b/drivers/net/sunqe.c index dcefb608a9f4..be637dce944c 100644 --- a/drivers/net/sunqe.c +++ b/drivers/net/sunqe.c | |||
@@ -627,7 +627,7 @@ static int qe_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
627 | static void qe_set_multicast(struct net_device *dev) | 627 | static void qe_set_multicast(struct net_device *dev) |
628 | { | 628 | { |
629 | struct sunqe *qep = netdev_priv(dev); | 629 | struct sunqe *qep = netdev_priv(dev); |
630 | struct dev_mc_list *dmi = dev->mc_list; | 630 | struct dev_mc_list *dmi; |
631 | u8 new_mconfig = qep->mconfig; | 631 | u8 new_mconfig = qep->mconfig; |
632 | char *addrs; | 632 | char *addrs; |
633 | int i; | 633 | int i; |
@@ -636,7 +636,7 @@ static void qe_set_multicast(struct net_device *dev) | |||
636 | /* Lock out others. */ | 636 | /* Lock out others. */ |
637 | netif_stop_queue(dev); | 637 | netif_stop_queue(dev); |
638 | 638 | ||
639 | if ((dev->flags & IFF_ALLMULTI) || (dev->mc_count > 64)) { | 639 | if ((dev->flags & IFF_ALLMULTI) || (netdev_mc_count(dev) > 64)) { |
640 | sbus_writeb(MREGS_IACONFIG_ACHNGE | MREGS_IACONFIG_LARESET, | 640 | sbus_writeb(MREGS_IACONFIG_ACHNGE | MREGS_IACONFIG_LARESET, |
641 | qep->mregs + MREGS_IACONFIG); | 641 | qep->mregs + MREGS_IACONFIG); |
642 | while ((sbus_readb(qep->mregs + MREGS_IACONFIG) & MREGS_IACONFIG_ACHNGE) != 0) | 642 | while ((sbus_readb(qep->mregs + MREGS_IACONFIG) & MREGS_IACONFIG_ACHNGE) != 0) |
@@ -650,12 +650,9 @@ static void qe_set_multicast(struct net_device *dev) | |||
650 | u16 hash_table[4]; | 650 | u16 hash_table[4]; |
651 | u8 *hbytes = (unsigned char *) &hash_table[0]; | 651 | u8 *hbytes = (unsigned char *) &hash_table[0]; |
652 | 652 | ||
653 | for (i = 0; i < 4; i++) | 653 | memset(hash_table, 0, sizeof(hash_table)); |
654 | hash_table[i] = 0; | 654 | netdev_for_each_mc_addr(dmi, dev) { |
655 | |||
656 | for (i = 0; i < dev->mc_count; i++) { | ||
657 | addrs = dmi->dmi_addr; | 655 | addrs = dmi->dmi_addr; |
658 | dmi = dmi->next; | ||
659 | 656 | ||
660 | if (!(*addrs & 1)) | 657 | if (!(*addrs & 1)) |
661 | continue; | 658 | continue; |
@@ -807,7 +804,7 @@ static struct sunqec * __devinit get_qec(struct of_device *child) | |||
807 | 804 | ||
808 | qec_init_once(qecp, op); | 805 | qec_init_once(qecp, op); |
809 | 806 | ||
810 | if (request_irq(op->irqs[0], &qec_interrupt, | 807 | if (request_irq(op->irqs[0], qec_interrupt, |
811 | IRQF_SHARED, "qec", (void *) qecp)) { | 808 | IRQF_SHARED, "qec", (void *) qecp)) { |
812 | printk(KERN_ERR "qec: Can't register irq.\n"); | 809 | printk(KERN_ERR "qec: Can't register irq.\n"); |
813 | goto fail; | 810 | goto fail; |