diff options
Diffstat (limited to 'drivers/net/sunqe.c')
-rw-r--r-- | drivers/net/sunqe.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/net/sunqe.c b/drivers/net/sunqe.c index 3bc35d86ed66..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; |
@@ -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 < netdev_mc_count(dev); 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; |