[ltp] cpu load on PCMCIA usage

Dean L. Hedin linux-thinkpad@linux-thinkpad.org
Wed, 13 Nov 2002 12:46:48 -0500


Yea, cardbus, that's the problem.  It all depends if your
PCMCIA controller supports cardbus. 

The snippet below explains the throughput side of things..
But what about the CPU load?  I suspect that the code is
using REP OUTST instructions to fill the ethernet card's
buffer.   In the normal 16 bit bus/10mb ethernet case this 
would happen only every so often.   But in the case of a 
16 bit bus/100mb ethernet, the CPU performs the REP OUTST 
to move the data, then the ethernet card imeadiately signals again
for more data.   The CPU thusly becomes I/O bounded. 

Kinda sucks huh?  If you do not have cardbus controller, no sense
in getting a 100mb ethernet card :)

If the ethernet card signals "empty buffer" with an interrupt, then
in this case you would want to set the ethernet card interrupt to
the LOWEST priority in the system.  This won't lighten the CPU load
but will ensure that other system interrupts get taken care of  ahead
of the ethernet card (which can't be filled fast enough anyhow).

So you may want to play with irqtune after all.

Here is the quote from the PCMCIA HOWTO:

"16-bit PCMCIA cards have a maximum performance of 1.5-2 MB/sec.  That
means that any 16-bit 100baseT card (i.e., any card that uses the
pcnet_cs, 3c574_cs, smc91c92_cs, or xirc2ps_cs
driver) will never achieve full 100baseT throughput.  Only CardBus
network adapters can fully exploit 100baseT data rates."