Storport minimport driver's MaximumTransferLength ( and MaximumSGList) usage

In my storport miniport driver, my settings to MaximumTransferLength and NumberOfPhysicalBreaks is not getting honored by storport driver !!

In my Storport Miniport Driver, I am setting
PPORT_CONFIGURATION_INFORMATION->
MaximumTransferLength = (255 - 1) * 4096;

PPORT_CONFIGURATION_INFORMATION->
NumberOfPhysicalBreaks = 255;

And in my miniport service registry key, I have set
HKLM\System\CurrentControlSet\services\MyServices\Parameters\Device\
MaximumSGList REG_DWORD 255.

When I run Iometer (or my win32 RAW Disk Read/Write Application as write thru and no intermediate Buffering ) with I/O size 64K or 128K (or above ), My Miniport driver never gets IoSize greater than 32K.

It looks like, Storport driver is splitting up request with IO Size larger than 32K , and always sends me max IO size 32 K (SG List max element always gets 8 !!)

I have tried with 128K maxtransfer length settings in registry and in my driver, still the result is same. I never get more than 32K size of IO even though user mode application IOmeter has issued one larger size read or write request.

Does anyone knows why Storport driver is splitting packets even though miniport supports large size packets? Is there any other settings which I am missing to set in miniport driver for maxIoSize ?

I will appreciate your response.

Thanks,
Parag


Get your own web address for just $1.99/1st yr. We’ll help. Yahoo! Small Business.

First, Storport does not use the registry setting - the PORT_CONFIG info should be enough; those registry parameters are SCSIport only. Second, we know that it transfers more than 32k - at this point I’m not sure what the issue is. Can you verify that you are using the latest Storport hotfix (923801) and that copying a normal file uses 64k transfers.

From: Parag Sanghvi [mailto:xxxxx@yahoo.com]
Sent: Thursday, October 12, 2006 5:28 PM
Subject: Storport minimport driver’s MaximumTransferLength ( and MaximumSGList) usage

In my storport miniport driver, my settings to MaximumTransferLength and NumberOfPhysicalBreaks is not getting honored by storport driver !!

In my Storport Miniport Driver, I am setting
PPORT_CONFIGURATION_INFORMATION->
MaximumTransferLength = (255 - 1) * 4096;

PPORT_CONFIGURATION_INFORMATION->
NumberOfPhysicalBreaks = 255;

And in my miniport service registry key, I have set
HKLM\System\CurrentControlSet\services\MyServices\Parameters\Device\
MaximumSGList REG_DWORD 255.

When I run Iometer (or my win32 RAW Disk Read/Write Application as write thru and no intermediate Buffering ) with I/O size 64K or 128K (or above ), My Miniport driver never gets IoSize greater than 32K.

It looks like, Storport driver is splitting up request with IO Size larger than 32K , and always sends me max IO size 32 K (SG List max element always gets 8 !!)

I have tried with 128K maxtransfer length settings in registry and in my driver, still the result is same. I never get more than 32K size of IO even though user mode application IOmeter has issued one larger size read or write request.

Does anyone knows why Storport driver is splitting packets even though miniport supports large size packets? Is there any other settings which I am missing to set in miniport driver for maxIoSize ?

I will appreciate your response.

Thanks,
Parag


Get your own web address for just $1.99/1st yr<%20http:/us.rd.yahoo.com/evt=43290/*http:/smallbusiness.yahoo.com/domains>. We’ll help. Yahoo! Small Businesshttp:</http:>.