From: florian Date: Tue, 31 Aug 2010 14:22:49 +0000 (+0000) Subject: backport r22852 X-Git-Url: http://git.ozo.com/?p=openwrt-10.03%2F.git;a=commitdiff_plain;h=b0d3673e99b72f758682dff9b5f6b4dccf761081 backport r22852 git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@22853 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- diff --git a/target/linux/rdc/patches-2.6.30/015-r6040_fix_multicast.patch b/target/linux/rdc/patches-2.6.30/015-r6040_fix_multicast.patch new file mode 100644 index 000000000..f41b4b542 --- /dev/null +++ b/target/linux/rdc/patches-2.6.30/015-r6040_fix_multicast.patch @@ -0,0 +1,35 @@ +--- +--- a/drivers/net/r6040.c ++++ b/drivers/net/r6040.c +@@ -136,7 +136,7 @@ + #define RX_DESC_SIZE (RX_DCNT * sizeof(struct r6040_descriptor)) + #define TX_DESC_SIZE (TX_DCNT * sizeof(struct r6040_descriptor)) + #define MBCR_DEFAULT 0x012A /* MAC Bus Control Register */ +-#define MCAST_MAX 4 /* Max number multicast addresses to filter */ ++#define MCAST_MAX 3 /* Max number multicast addresses to filter */ + + /* Descriptor status */ + #define DSC_OWNER_MAC 0x8000 /* MAC is the owner of this descriptor */ +@@ -887,9 +887,6 @@ static void r6040_multicast_list(struct + crc >>= 26; + hash_table[crc >> 4] |= 1 << (15 - (crc & 0xf)); + } +- /* Write the index of the hash table */ +- for (i = 0; i < 4; i++) +- iowrite16(hash_table[i] << 14, ioaddr + MCR1); + /* Fill the MAC hash tables with their values */ + iowrite16(hash_table[0], ioaddr + MAR0); + iowrite16(hash_table[1], ioaddr + MAR1); +@@ -905,9 +902,9 @@ static void r6040_multicast_list(struct + dmi = dmi->next; + } + for (i = dev->mc_count; i < MCAST_MAX; i++) { +- iowrite16(0xffff, ioaddr + MID_0L + 8*i); +- iowrite16(0xffff, ioaddr + MID_0M + 8*i); +- iowrite16(0xffff, ioaddr + MID_0H + 8*i); ++ iowrite16(0xffff, ioaddr + MID_1L + 8 * i); ++ iowrite16(0xffff, ioaddr + MID_1M + 8 * i); ++ iowrite16(0xffff, ioaddr + MID_1H + 8 * i); + } + } +