Probably known problem

Christian Corti corticn@rupert.informatik.uni-stuttgart.de
Sun Sep 26 06:15:18 1999


Thank you for your answer!

On Wed, 22 Sep 1999, Donald Becker wrote:

> On Wed, 22 Sep 1999, Christian Corti wrote:
> 
> > I have one Linux server (Intel P60 / 16MB RAM) and another computer
> 
> That's a rather old machine, likely with an ancient PCI bus implementation
> that cannot handle burst transfers.

Well, it's rather old but it can handle burst transfers on all PCI slots.
My Promise Ultra/33 card works very well, and it uses burst transfers as
far as I know. I think the Saturn chipset (82420) found in 486 PCs 
couldn't handle them.

> Hmmm, Rx overrun errors are normally very rare.  They nominally mean that the
> card could not get enough PCI bandwidth, which is almost never a problem on
> a PCI bus that can burst transfer.

Sounds right, but why did I have full speed after building my server and
then never again? No BIOS changes since then.

> 
> Something that you can try is to lower the Rx threshold.  It's currently
> set to receive a whole packet before transferring it from the card to main
> memory.  (This setting is to work around a bug in older chips.)
> 
> Around line 966
> -	       outw(SetRxThreshold + (1536>>2), ioaddr + EL3_CMD);
> +	       outw(SetRxThreshold + (128 >> 2), ioaddr + EL3_CMD);
> 
> If this reduces or eliminates the Rx overruns, you have a PCI bus bandwidth
> issue.  Please let us know the results.
> 

This helped a little bit. I now get around 42 Mbit instead of 38 Mbit and 
less overruns. But still the old troubles with larger packets. I've just
tried the new linux driver from 3COM, but it is slower and causes the same
problems.

> > And that is what /proc/net/dev is saying right now (look for eth0, eth1 is
> > a 10Mbit NE2000 from Novell):
> 
> Are you running an ISA card on this machine as well!?
> They are OK for very light traffic, but suck down CPU time and bus bandwidth
> if you are putting a lot of data through them!
> 

Yes, it is an ISA card. But I don't have much traffic. It is only intended
for two or three additional computers who need 10base2. This card works
at full speed in both directions without any difficulties.

> > to get results. They were around 38 Mbit. With larger "big" packets I got
> > no answer from my server, but an extra overrun for each tried packet.
> 
> This seems to confirm the bus saturation.  Note that packets larger than
> 1500 bytes (1476 bytes or so) are fragmented into multiple Ethernet frames.

Yes, I noticed that in the driver's debug output while 'binging'.

> > Next strange thing is when I read a file from Windows (95 or NT) from
> > Samba. Reading speed is quite good (aroung 3 MB/s), but with LOTS of
> 
> Note that transmits will not usually be a problem, since the card can just
> delay sending the packet until it has finished getting it from the PCI bus.
> 

That's OK, but then why do I get so many collisions in Windows?

> > doesn't work with Linux. So I had to connect the INTA pin of the 3COM via
> > a small interface (an inverter actually) to a free IRQ pin on the ISA bus
> > (like very old PCI IDE cards) and modify the Linux driver to use a
> > fixed interrupt.
> 
> Ackkk!!!
> Wouldn't it be easier to just change the IDE driver to accept shared
> interrupts?

This was my first idea, too. But I'll never try that again! The IDE
card doesn't like to be interrupted while transferring. I got a lot of
trouble with data corruption and filesystem error (leading to kernel
panics). May also be a problem with the driver.

Thanks again,

Christian