[tulip] Linksys LNE100TX on PowerPC system works only in promiscuous mode?

Gregorio Gervasio Jr. gtgj@pacbell.net
09 Mar 2001 01:07:58 -0800


>>>>> On Thu, 08 Mar 2001 18:44:03 -0500 (EST), Donald Becker <becker@scyld.com> said:
[...]
> d> Please try the following change around line 710
> d> 	} else if (chip_idx == COMET) {
> d> 		/* No need to read the EEPROM. */
> d> -		put_unaligned(inl(ioaddr + 0xA4), (u32 *)dev->dev_addr);
> d> -		put_unaligned(inl(ioaddr + 0xA8), (u16 *)(dev->dev_addr + 4));
> d> +		put_unaligned(le32_to_cpu(inl(ioaddr + 0xA4)),
> d> 				(u32 *)dev->dev_addr);
> d> 		put_unaligned(le16_to_cpu(inl(ioaddr + 0xA8)),
> d> 				(u16 *)(dev->dev_addr + 4));
> d> 		for (i = 0; i < 6; i ++)
> d> 			sum += dev->dev_addr[i];

d> Doh!

d> First, note that there are two modified statements (four new lines)
d> above.  I wrote it as if there was only one replacement line.

        I thought that was what you intended so I forgot to mention
that I did add all four lines.

[...]
d> Lets try fixing line 1460
d>     if (tp->flags & MC_HASH_ONLY) {
d> 	u32 addr_low = cpu_to_le32(get_unaligned((u32 *)dev->dev_addr));
d> -	u32 addr_high = cpu_to_le32(get_unaligned((u16 *)(dev->dev_addr+4)));
d> +	u32 addr_high = cpu_to_le16(get_unaligned((u16 *)(dev->dev_addr+4)));

        This seems to have done the trick.  I haven't done any speed
testing yet but it's working now.  Thank you very much!

Gregorio Gervasio, Jr.
gtgj@pacbell.net