diff options
| -rw-r--r-- | drivers/net/r6040.c | 22 |
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 | } |
