This message is from the T13 list server.
I believe on Intel host controllers, the Descriptor Table Pointer Register is updated to show the address of the PRD that the host is currently working on. If the register remains unchanged from the value initially written by software, that software could assume a worst-case scenario of no data transferred (and consequently retry the transfer). If the register has already incremented, then the idea is that software may assume that the data corresponding to the PRDs corresponding to prior addresses are completed. This would allow software to distinguish the case of "possibly no data transferred" versus "at least some data transferred" on a PRD granularity, which may be all you need. However, I am not aware of this being a standard so I can't recommend it as it may not be supported by other host controllers. Does anyone out there use this feature? Why is it important to distinguish between "no data transferred" versus "some data transferred"? If not "all data transferred" (which can be determined by ACTIVE=0), can't the device driver assume that something is wrong, and just redo the entire transfer? Thanks, T.E. Ooi. -----Original Message----- From: Hale Landis [mailto:[EMAIL PROTECTED]] Sent: Thursday, February 14, 2002 3:44 PM To: T13 List Server Subject: RE: [t13] a proposal - lets fix the DMA host problem This message is from the T13 list server. I am going to give up on trying to get any kind of reliable indication of how much data has been transferred by a host DMA engine. It is clear to me that many of you can not see the difference between status that says "the DMA engine is active" and status that says how much data has been transferred by that DMA engine. I can only assume you must have the same problem with those car fuel tank idiot lights and fuel tank gauges. The light tells you if the tank is not empty or if it is empty (the DMA engine is not active or it is active). The gauge tells you how much fuel is in the tank (how much data has been transferred by the DMA engine). If you want to build toy computers then don't provide the the "how much" status and continue to think that an "active" bit is all the host needs to determine how much of the host I/O buffer data has been used. But I will respond to a few specific comments... === On Wed, 13 Feb 2002 08:01:35 -0800, Eschmann, Michael K wrote: >When you first started this thread you said you wanted a simple state >machine that says something started moving, versus DMA PRD count hit, and >DMA PRD count exceeded? Adding a "something moved" indicator really doesn't >do what you are now saying, which is how much. I have tried for years to get host DMA engine to return the actual number of bytes transferred. But I have never been able to talk any host adapter designer into implementing the needed counter. So I am willing to live with something less (those XY bits I proposed). But it is clear that many people reading this just can't understand the difference between my XY bits and the existing DMA engine status bits. True there is some overlap in a few states of the two sets of bits but the existing status bits and my XY bits are really reporting different information to the host. === Subscribe/Unsubscribe instructions can be found at www.t13.org.
