summaryrefslogtreecommitdiff
path: root/target/linux
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/rdc/patches-2.6.32/015-r6040_fix_multicast.patch10
1 files changed, 5 insertions, 5 deletions
diff --git a/target/linux/rdc/patches-2.6.32/015-r6040_fix_multicast.patch b/target/linux/rdc/patches-2.6.32/015-r6040_fix_multicast.patch
index f2236655bf..c3e1830c41 100644
--- a/target/linux/rdc/patches-2.6.32/015-r6040_fix_multicast.patch
+++ b/target/linux/rdc/patches-2.6.32/015-r6040_fix_multicast.patch
@@ -9,7 +9,7 @@
#define MCR1 0x04 /* Control register 1 */
#define MAC_RST 0x0001 /* Reset the MAC */
#define MBCR 0x08 /* Bus control */
-@@ -837,76 +839,96 @@
+@@ -837,76 +839,96 @@ static void r6040_multicast_list(struct
{
struct r6040_private *lp = netdev_priv(dev);
void __iomem *ioaddr = lp->base;
@@ -97,11 +97,12 @@
+ /* Otherwise, Enable multicast hash table function. */
+ else {
+ u32 crc;
-+
-+ lp->mcr0 |= HASH_EN;
- if (!(*addrs & 1))
- continue;
++ lp->mcr0 |= HASH_EN;
+
+- crc = ether_crc_le(6, addrs);
+ for (i = 0; i < MCAST_MAX ; i++) {
+ iowrite16(0, ioaddr + MID_1L + 8 * i);
+ iowrite16(0, ioaddr + MID_1M + 8 * i);
@@ -112,8 +113,7 @@
+ for (i = 0; i < dev->mc_count; i++) {
+ u8 *addrs = dmi->dmi_addr;
+ dmi = dmi->next;
-
-- crc = ether_crc_le(6, addrs);
++
+ crc = ether_crc(ETH_ALEN, addrs);
crc >>= 26;
- hash_table[crc >> 4] |= 1 << (15 - (crc & 0xf));