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.

Reply via email to