No, thats wrong. Its not about servicing the interrupt, its about access to
the bus.
The cards are busmasters, so the rings and data get pushed into memory
directly from the controller. A 32-bit PCI bus is only a 1GB bus...but not
really because you cant burst continuously so you can never achieve
sustained throughtput of 1Gb.. The data must be output to system ram, but
the card must "get" the bus before it can transfer, and there are other
devices on the bus. The "buffer" is to handle the backup, ie the time that
the card cant transfer data to ram because it doesnt have the bus because
another card or your ide controller has it. The larger the buffer, the
longer the hold-off period before you have to abort frames. If you fill the
buffer, you have to dump the frame and clear the buffer for the next one
because there is nowhere to store the bits. On a 64 bit, 66mhz bus (its 8
times faster than 32bit), you can burst data out and you only need the bus
1/8th of the time. On a 32bit bus, you need more buffer space because you
need the bus all the time to keep up with the data, which is not actually
possible.
Ring failures are local issues (ie you must service data faster than it
comes in), but thats not hard with todays processors. but having large
rings will not alleviate bus failures.
As an example, you can do T1 on a PCI bus with almost no buffer (maybe 64
bytes) because the bus is so much faster then the transfer rate that there
is very little chance of falling behind. At 1Gb its much different.
Dennis
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/