GetScatterGatherList with linked list of MDLs

GetScatterGatherList with linked list of MDLs

Post by Frank van » Thu, 07 Oct 2004 16:35:12


Hi,

Is there someone who could confirm that I can use GetScatterGatherList with
a linked list of MDLs. I tried it under windows 2000 and windows XP. Both of
them are not working. The next field pointers of the MDLs are valid, but
GetSGL is only taking the first MDL. I use DDK 2600.1106. When I look at the
DmaAdapter->Version, it's version 1 (I expected version 2 under windows XP).

What other option do I have when GetSGL can not work with a linked list of
MDLs. I don't think that it's possible to call GetSGL multiple times for ONE
dma operation (locked resources etc.). Do I have to split the memory up into
workable pieces (< 64 MB) and then do multiple dma operations?!

TIA,
Frank
 
 
 

GetScatterGatherList with linked list of MDLs

Post by icrashedag » Sun, 10 Oct 2004 02:53:52

Frank,

This text is straight from the 3790 DDK GetScatterGatherList()
description:

"This routine can handle chained MDLs, provided that the total number
of map registers required by all chained MDLs does not exceed the
number available."

I don't have the 2600 DDK installed, but you may want to see if it has
something like this in its GetSGL() description.

Maybe you need to ask for more map registers when you ask for the DMA
adapter object also...

David

 
 
 

GetScatterGatherList with linked list of MDLs

Post by Maxim S. S » Sun, 10 Oct 2004 08:17:31


Say ScatterGather = TRUE in your DEVICE_DESCRIPTION. This is the default.
ScatterGather = FALSE is only used if you want the lower layers to use the
bounce buffers for your DMA.

--
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
XXXX@XXXXX.COM
http://www.yqcomputer.com/
 
 
 

GetScatterGatherList with linked list of MDLs

Post by Frank van » Tue, 12 Oct 2004 17:32:46

this parameter is already explicitly set at true in my driver.

Frank
 
 
 

GetScatterGatherList with linked list of MDLs

Post by Frank van » Tue, 12 Oct 2004 17:48:58

Hi David,

I see the same text in the 2600.1106 DDK. So it should work. Maybe I do
something wrong with linking the MDLs together. I have two MDLs and the
first one has the address of the second MDL in it's Next field. This is all
I do to make a link list. Is this enough, or should I update more fields
(bytecount for example). Can you post a fragment of your code where you make
the chain of MDLs and call the SGL?

TIA,
Frank