Linksys Ether(not so)fast 10/100 Card

Nicholas Jenkins Nicholas.S.Jenkins@cdc.com
Tue Mar 2 13:04:24 1999


My two-cents' worth is below...but I think you may need to
contact Mr. Becker to get the definitive answer.

>
> I tried using v .90q of the tulip driver (I'm using the release
> version .90
> now) but it actually seems to slow down the Linksys card.  I
> guess what I'm
> asking: is playing with the registers like people are doing for
> the card bus
> card the way to try to improve performance?

While I have only a single ethernet card to work with, I believe that
the simple answer to this would be yes.  I say this, because not long
ago, I was having a difficulty similar to yours with my Cardbus card.
Therefore, I looked over all the code.  The only code related *AT ALL*
to performance was the csr0 setting.  So, if there is another way,
Mr. Becker's probably the only person who'll be able to answer that
question; but it would stand to reason that if there were another way
that he would have included that in his code.

>  If so what do the various
> register values correspond to?

Directly from lines 64-75 of tulip.c:

/*
  Set the bus performance register.
	Typical: Set 16 longword cache alignment, no burst limit.
	Cache alignment bits 15:14	     Burst length 13:8
		0000	No alignment  0x00000000 unlimited		0800 8 longwords
		4000	8  longwords		0100 1 longword		1000 16 longwords
		8000	16 longwords		0200 2 longwords	2000 32 longwords
		C000	32  longwords		0400 4 longwords
	Warning: many older 486 systems are broken and require setting 0x00A04800
	   8 longword cache alignment, 8 longword burst.
	ToDo: Non-Intel setting could be better.
*/

In short, the way to read this is:
1) start with "csr0=0x00A00000"
2) choose an appropriate cache alignment - say, for instance "C000" - 32
longwords
	(the largest cache alignment apparently available)
3) choose an appropriate burst limit - say, for instance "0000" - unlimited
	(the largest burst limit available), or "2000" - 32 longwords, to match
	your choice for cache alignment.
4) "Or" them all together -> "csr0 = 0x00A00000 | 0xC000 | 0x0000" or
	"csr0 = 0x00A00000 | 0xC000 | 0x2000", which is typically shortened to:
	"csr0 = 0x00A00000 | 0xE000" in postings.

BTW, although I don't know what all the options are in csr0 (write Mr.
Becker),
it seems that the two "base" csr0 values to start with are "0x00A00000" and
"0x01A00000".  And, from what it appears for postings (and personal
experience),
0x01A00000 you want to stay away from if you are using a Linksys card.

More than likely, if you go into /etc/pcmcia/config.opts and add a line for
your
Linksys card, with "csr0=0x00A0C000", you'll get the best performance
possible.

> Thanks in advance for any help,
> David Churchill
>
>

I just hope this was.  I didn't respond for several hours after I saw your
post,
as I thought someone more knowledgeable than myself might respond.  However,
as no
one has, I thought I would try to help as best I could.
-NICK