Re: WDF DMA use
- From: "Eliyas Yakub [MSFT]" <eliyasy@xxxxxxxxxxxxxxxxxxxx>
- Date: Thu, 31 May 2007 18:37:07 -0700
Yes it will coalesce it using map registers.
For scatter-gather DMA, map registers will be used only if the buffer lies outside the range of memory your hardware can access.
Yes, map registers are very precious resource. You can think of them as backup buffers allocated by the system to workaround hardware addressing limitations. The system can only allocate so many of those. The number of concurrent DMA transactions is constrained by the number of map registers system can provide. You can ask for large amount of map registers by specifying a big value in MaximumLength field, but the system may not provide everything you ask for. Based on what the system provides, you have to scale down your concurrency level. Take a look at the PCIDRV sample and the logic around WdfDmaEnablerCreate call.
Since you are using Packet based DMA, one think you should note is that you cannot initiate more than one DMA transactions concurrently. This is a limitation imposed by the DMA sub-system because of the way it waits for the map-registers to be made available. Framework has logic to enforce this limitation.
-Eliyas
.
- Prev by Date: Re: Can we use cpp to write WDM driver ?
- Next by Date: Re: Can we use cpp to write WDM driver ?
- Previous by thread: Re: Can we use cpp to write WDM driver ?
- Next by thread: Re: WDF DMA use
- Index(es):
Relevant Pages
|
Loading