aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/r6040.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/r6040.c')
-rw-r--r--drivers/net/r6040.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c
index 142c381e1d73..80666f097ce6 100644
--- a/drivers/net/r6040.c
+++ b/drivers/net/r6040.c
@@ -893,16 +893,18 @@ static void r6040_multicast_list(struct net_device *dev)
893 /* Multicast Address 1~4 case */ 893 /* Multicast Address 1~4 case */
894 i = 0; 894 i = 0;
895 netdev_for_each_mc_addr(ha, dev) { 895 netdev_for_each_mc_addr(ha, dev) {
896 if (i < MCAST_MAX) { 896 if (i >= MCAST_MAX)
897 adrp = (u16 *) ha->addr; 897 break;
898 iowrite16(adrp[0], ioaddr + MID_1L + 8 * i); 898 adrp = (u16 *) ha->addr;
899 iowrite16(adrp[1], ioaddr + MID_1M + 8 * i); 899 iowrite16(adrp[0], ioaddr + MID_1L + 8 * i);
900 iowrite16(adrp[2], ioaddr + MID_1H + 8 * i); 900 iowrite16(adrp[1], ioaddr + MID_1M + 8 * i);
901 } else { 901 iowrite16(adrp[2], ioaddr + MID_1H + 8 * i);
902 iowrite16(0xffff, ioaddr + MID_1L + 8 * i); 902 i++;
903 iowrite16(0xffff, ioaddr + MID_1M + 8 * i); 903 }
904 iowrite16(0xffff, ioaddr + MID_1H + 8 * i); 904 while (i < MCAST_MAX) {
905 } 905 iowrite16(0xffff, ioaddr + MID_1L + 8 * i);
906 iowrite16(0xffff, ioaddr + MID_1M + 8 * i);
907 iowrite16(0xffff, ioaddr + MID_1H + 8 * i);
906 i++; 908 i++;
907 } 909 }
908} 910}