rtl8139 pci mem freeze (more info)
Daniel Kobras
zxmfj03@fphp16.tphys.physik.uni-tuebingen.de
Thu Sep 30 17:44:27 1999
On Thu, 30 Sep 1999, Donald Becker wrote:
> > + outl_f(dev->dev_addr[0], ioaddr + MAC0);
> > + outl(dev->dev_addr[4], ioaddr + MAC0 + 4);
>
> This is incorrect -- you are only writing one byte of the station address.
Duh. Yes.
> I think that the proper code is
> outl(cpu_to_le32(*(u32*)(dev->dev_addr + 0)), ioaddr + MAC0 + 0);
> outl(cpu_to_le32(*(u32*)(dev->dev_addr + 4)), ioaddr + MAC0 + 4);
Hm... I admit I always get terribly confused when it comes to endianness
issues but isn't the LE ordering already enforced by the fact that
dev_addr is a u8[] rather than a u32[]?
> > - outw(cur_rx - 16, ioaddr + RxBufPtr);
> > + outw_f(cur_rx - 16, ioaddr + RxBufPtr);
>
> This is very curious. It makes me suspicious about what the motherboard
> chipset is doing to the writes if this doesn't work correctly.
I'm puzzled as well. That's why I was extra careful that this change
indeed fixed the problem before sending out the patch. It did, but I don't
have the faintest idea as to why. So I guess there are still possible
lockups hidden in the driver (on certain chipsets).
Daniel.
| To unsubscribe, send mail to Majordomo@cesdis.gsfc.nasa.gov, and within the
| body of the mail, include only the text:
| unsubscribe this-list-name youraddress@wherever.org
| You will be unsubscribed as speedily as possible.