Root/target/linux/rdc/patches-2.6.30/015-r6040_fix_multicast.patch

1---
2--- a/drivers/net/r6040.c
3+++ b/drivers/net/r6040.c
4@@ -136,7 +136,7 @@
5 #define RX_DESC_SIZE (RX_DCNT * sizeof(struct r6040_descriptor))
6 #define TX_DESC_SIZE (TX_DCNT * sizeof(struct r6040_descriptor))
7 #define MBCR_DEFAULT 0x012A /* MAC Bus Control Register */
8-#define MCAST_MAX 4 /* Max number multicast addresses to filter */
9+#define MCAST_MAX 3 /* Max number multicast addresses to filter */
10 
11 /* Descriptor status */
12 #define DSC_OWNER_MAC 0x8000 /* MAC is the owner of this descriptor */
13@@ -887,9 +887,6 @@ static void r6040_multicast_list(struct
14             crc >>= 26;
15             hash_table[crc >> 4] |= 1 << (15 - (crc & 0xf));
16         }
17- /* Write the index of the hash table */
18- for (i = 0; i < 4; i++)
19- iowrite16(hash_table[i] << 14, ioaddr + MCR1);
20         /* Fill the MAC hash tables with their values */
21         iowrite16(hash_table[0], ioaddr + MAR0);
22         iowrite16(hash_table[1], ioaddr + MAR1);
23@@ -905,9 +902,9 @@ static void r6040_multicast_list(struct
24         dmi = dmi->next;
25     }
26     for (i = dev->mc_count; i < MCAST_MAX; i++) {
27- iowrite16(0xffff, ioaddr + MID_0L + 8*i);
28- iowrite16(0xffff, ioaddr + MID_0M + 8*i);
29- iowrite16(0xffff, ioaddr + MID_0H + 8*i);
30+ iowrite16(0xffff, ioaddr + MID_1L + 8 * i);
31+ iowrite16(0xffff, ioaddr + MID_1M + 8 * i);
32+ iowrite16(0xffff, ioaddr + MID_1H + 8 * i);
33     }
34 }
35 
36

Archive Download this file



interactive