[809] in linux-net channel archive

home help back first fref pref prev next nref lref last post

Re: 8390s and Alphas (esp. 3c503)

daemon@ATHENA.MIT.EDU (Paul Gortmaker)
Sun Jul 30 17:45:42 1995

From: Paul Gortmaker <gpg109@rsphy1.anu.edu.au>
To: viper@ludd.luth.se (Mikael Nykvist)
Date: Sun, 30 Jul 1995 20:56:15 +1000 (EST)
Cc: linux-net@vger.rutgers.edu, linux-alpha@vger.rutgers.edu,
        gpg109@rsphy1.anu.edu.au
In-Reply-To: <199507300158.DAA16861@father.ludd.luth.se> from "Mikael Nykvist" at Jul 30, 95 03:58:59 am

Mikael wrote:

> > There were still a couple of direct memory dereferences in the 3c503
> > driver that I missed. The fatal one that Mikael Nykvist hit was fairly
> > obvious. The others were in the ifdef EL2MEMEST, which isn't used by

> Ok. The autoprobe still fails (kernel dies) with a message of:
> 
> "Unable to handle kernel paging request at virtual adress 0xffff7c020607ee00"

Oops. That is a typo/thinko on my part. This should fix that one for good.

-	unsigned int base_bits = readb(addr);
+	unsigned int base_bits = readb(*addr);

> So, I rebooted and specifed the "ether=" line at the bootprompt. Voila! =)
> Works "almost" perfect (se the perf note later down).
> 
> Ok. I also tried enabling the EL2MEMTEST, which also passes wo a problem
> if I specify the card at the bootprompt.

Good to see that I managed to convert that without screwing it up...

> I also tried disabling the ram on the card (to try out the "fail-back-to-
> pio" mode). I cant get this to work. It doesnt matter if I specify the
> card or not, it always hangs when booting. (As a side note, I couldnt either
> get card to work in a pc here, wo enabling the ram, so it might be a hw bug).

Possibly. I don't move any jumpers when playing with the PIO mode. The
3c503 cards can be used in PIO mode even when the jumper is set to 
enable shared memory. It is easier (for me) to change one line than to
change a jumper, so I do a:

-	if ((membase_reg & 0xf0) == 0) {
+	if (1) {

when testing the PIO mode of the card.

> So the perfnote. My alpha is routed to the net thro a pc (486sx25) running
> FreeBSD...  If I have the ne2k(16 bit) card in my alpha and the 3c503 
> (*8* bit) in the pc, I have ftp transfer rates of about 350-400k/s both way. 
> 
> When I switch cards, I have about 300-350k/s sending from the alpha, but
> only about 40k/s when receiving.. =(
> 
> I can see 3 reasons.
> 
> 1. The Linux driver for 3c503 cards (maybe the 8bit version) sux when 
>    receiving.

It is a variation on this one. I have seen this before on ix86. Linux
has a problem with slow cards (or more accurately - cards on slow buses)
combined with reasonably fast CPU systems. As you report, the Tx is
okay, but the Rx stinks badly. Others have reported this as well, since
early 1.1.x kernels.

For example, consider the following data set I took from a 486-40 with
an 8 bit wd8003 and an 8 bit 3c503, at various bus speeds, using Rx ttcp
and a stock 1.2.11 kernel.

ISA Bus Speed (MHz)	wd8003 (kB/s)	3c503 (kB/s)
----------------------------------------------------
3.33			82		80
4.00			75		76
5.00			165		153
6.66			170		149
8.00			205		121
10.0			690		143

The m/board I was using for these measurements was a crummy ALI unit,
limited to a max of 10MHz. If you move to another (decent) ISA board,
and continue to increase the ISA speed, the 3c503 eventually speeds up
as well, but is always behind the wd8003 card. At 16 to 20MHz, the
old 3c503 will do >=700kB/s which is respectable.

When observing these slow (<=200kB/s) rates with Rx/Tx monitors on the
cable, one sees that the Rx/Tx pulse in unison at a rate of about 2Hz.
This holds true for both the wd and the 3c503, so I don't think it is
a driver issue.

However, if you cripple the Rx system by disabling the cache(s) and
then repeat the test, the pulsing is gone, and a smooth flow of traffic
takes place at > 500kB/s. The moral is that fast systems with cards
on slow busses just suck. Slow systems with slow busses are OK.
I don't know why at the moment, and I haven't been to concerned with
it either, since it is easier to just run the ISA bus at 13 --> 16MHz.
However this may not be an option with your PCI <--> ISA bridge on the
Alpha PCI units. I should look into it someday...

Perhaps Alan can shed some light on this, seeing as he has a soft spot
for slow hardware, especially the stone age 3c501 cards.  :-)

Paul.

home help back first fref pref prev next nref lref last post