aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sunqe.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/sunqe.c')
-rw-r--r--drivers/net/sunqe.c13
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)
627static void qe_set_multicast(struct net_device *dev) 627static 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;