SCSI Miniport Data Transfer restrictions for IDE Controllers

Greetings,

I ran across an article in the WinNT knowledge base (Q134908) titled “SCSI
Miniport Data Transfer restrictions for IDE Controllers”. Basically, the
article states that “The current implementation for SCSI miniports does not
allow an IDE controller to transfer both PIO and busmater DMA intermixed on
a single channel.” This is interesting, because our controller is designed
to do just that.

Under Windows NT (4.0), with Service Pack 6 installed, our driver installs
and works just fine.

Unfortunately, we have had a series of unrepeatable/random errors in porting
our driver to Windows 2000. Mostly, these went away when we began to leave
the Srb->DataTransferLength alone after a successful transfer (instead of
clearing it to zero as is done under WinNT).

After finding the above article we modified the code to only use DMA,
instead of mixing PIO and DMA, but it seemed to make no difference. I’ve
combed the DDK for WinNT and Win2k, I’ve searched the internet, but I can’t
find any follow-up to this article, or even any discussion.

Does anybody out there know anything about this restriction?

On the off chance that it makes any difference, I’ll let you know that (when
mixing PIO and DMA on the same channel) we are setting:

hwInitializationData.MapBuffers = TRUE; // For legacy data
transfer
hwInitializationData.NeedPhysicalAddresses = TRUE; // To do DMA
transfer
ConfigInfo->Master = TRUE; // Support
Master DMA

Could this be confusing the OS?

Any Ideas Appreciated!

–Christine


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

SCSI Miniport Data Transfer restrictions for IDE ControllersSorry, but why touch this field at all?

Mostly, these went away when we began to leave the Srb->DataTransferLength alone after a successful transfer (instead of clearing it to zero as is done under WinNT).


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