Using Host DMA for memory transfers in NDIS drivers

Hello,
I have a piece of hardware which forces me to copy frames coming
from NDIS into a continuous buffer,before sending them to the NIC to be
tranmitted. I’m considering using the PC’s DMA for this purpose. Has anyone
done this for an NDIS driver? Will it boost up the driver’s performance(or
save host cycles) significantly?

Arik


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

If you mean the system dma device, no even if you could get it to do system
memory to system memory transfers, it is at least one order of magnitude
slower than using the cpu to do the same thing. It also won’t work as the
device is only for copying data to/from the ISA bus.

Mark Roddy
Consultant
Hollis Technology Solutions
xxxxx@hollistech.com
www.hollistech.com
603-321-1032

“Arik Halperin” wrote in message news:xxxxx@ntdev…
>
> Hello,
> I have a piece of hardware which forces me to copy frames coming
> from NDIS into a continuous buffer,before sending them to the NIC to be
> tranmitted. I’m considering using the PC’s DMA for this purpose. Has
anyone
> done this for an NDIS driver? Will it boost up the driver’s performance(or
> save host cycles) significantly?
>
> Arik
>
> —
> You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
> To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
>


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

In general, the DMA model on Windows NT/2000/XP will provide you with
comparable performance to what you are doing now (worst case) and much
better performance (best case). The difference depends upon whether or not
there is underlying hardware mapping registers. If such registers exist,
the physical memory is described using mapping registers (a bit like virtual
memory, except for the peripheral bus) and the mapping register address is
what you provide to your device. If such registers do not exist, the HAL
simulates the map registers by allocating a physically contiguous buffer and
using that buffer as an intermediate location - which is essentially what
you are already doing.

Most x86 machines do not have hardware mapping registers (note the key word
“most”. They are sometimes present on high-end server-class machines where
performance is essential and the added cost of the mapping register hardware
is not a driving force in the design.)

Regards,

Tony

Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com
?
Hope to see you at the next OSR file systems class March 11, 2002 in Boston!

-----Original Message-----
From: Arik Halperin [mailto:xxxxx@envara.com]
Sent: Thursday, February 14, 2002 9:52 AM
To: NT Developers Interest List
Cc: Yossi Texerman
Subject: [ntdev] Using Host DMA for memory transfers in NDIS drivers

Hello,
I have a piece of hardware which forces me to copy frames coming
from NDIS into a continuous buffer,before sending them to the NIC to be
tranmitted. I’m considering using the PC’s DMA for this purpose. Has anyone
done this for an NDIS driver? Will it boost up the driver’s performance(or
save host cycles) significantly?

Arik


You are currently subscribed to ntdev as: xxxxx@osr.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

What kind of device is this? If it’s PCI then “system” (ie. slave) DMA
cannot be used (or maybe it can but will not help). PCI NICs usually
use busmaster DMA, which must be supported by the card itself.

What options do you have to access the memory on the NIC? PIO? Master
or slave DMA? Shared memory?

Stephan

On Thu, 14 Feb 2002 16:51:48 +0200, Arik Halperin
wrote:

>
>Hello,
> I have a piece of hardware which forces me to copy frames coming
>from NDIS into a continuous buffer,before sending them to the NIC to be
>tranmitted. I’m considering using the PC’s DMA for this purpose. Has anyone
>done this for an NDIS driver? Will it boost up the driver’s performance(or
>save host cycles) significantly?
>
>Arik


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com