[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 21/26] Add overrides for MaxTransferLength and MaxPhysicalBreaks
From: Owen Smith <owen.smith@xxxxxxxxxx> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> --- src/xenvbd/adapter.c | 25 +++++++++++++++++++++++-- src/xenvbd/driver.h | 5 ++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/xenvbd/adapter.c b/src/xenvbd/adapter.c index c4fa9f6..945888d 100644 --- a/src/xenvbd/adapter.c +++ b/src/xenvbd/adapter.c @@ -1768,6 +1768,8 @@ AdapterHwFindAdapter( PDEVICE_OBJECT DeviceObject; PDEVICE_OBJECT PhysicalDeviceObject; PDEVICE_OBJECT LowerDeviceObject; + ULONG MaxTransferLength; + ULONG MaxPhysicalBreaks; NTSTATUS status; UNREFERENCED_PARAMETER(Context); @@ -1775,9 +1777,28 @@ AdapterHwFindAdapter( UNREFERENCED_PARAMETER(ArgumentString); UNREFERENCED_PARAMETER(Again); + // override settings + status = RegistryQueryDwordValue(DriverGetParametersKey(), + "MaxTransferLength", + &MaxTransferLength); + if (!NT_SUCCESS(status)) + MaxTransferLength = XENVBD_MAX_TRANSFER_LENGTH; + if ((MaxTransferLength & (PAGE_SIZE - 1)) != 0) + MaxTransferLength = XENVBD_MAX_TRANSFER_LENGTH; + + status = RegistryQueryDwordValue(DriverGetParametersKey(), + "MaxPhysicalBreaks", + &MaxPhysicalBreaks); + if (!NT_SUCCESS(status)) + MaxPhysicalBreaks = XENVBD_MAX_PHYSICAL_BREAKS; + + Verbose("MaxTransferLength: %u, MaxPhysicalBreaks: %u\n", + MaxTransferLength, + MaxPhysicalBreaks); + // setup config info - ConfigInfo->MaximumTransferLength = XENVBD_MAX_TRANSFER_LENGTH; - ConfigInfo->NumberOfPhysicalBreaks = XENVBD_MAX_PHYSICAL_BREAKS; + ConfigInfo->MaximumTransferLength = MaxTransferLength; + ConfigInfo->NumberOfPhysicalBreaks = MaxPhysicalBreaks; ConfigInfo->AlignmentMask = 0; // Byte-Aligned ConfigInfo->NumberOfBuses = 1; ConfigInfo->InitiatorBusId[0] = 1; diff --git a/src/xenvbd/driver.h b/src/xenvbd/driver.h index 73a4e11..aae3da1 100644 --- a/src/xenvbd/driver.h +++ b/src/xenvbd/driver.h @@ -35,9 +35,8 @@ #include <ntddk.h> #define XENVBD_MAX_TARGETS (255) -#define XENVBD_MAX_PAGES_PER_SRB (1024) -#define XENVBD_MAX_TRANSFER_LENGTH (XENVBD_MAX_PAGES_PER_SRB * PAGE_SIZE) -#define XENVBD_MAX_PHYSICAL_BREAKS (XENVBD_MAX_PAGES_PER_SRB - 1) +#define XENVBD_MAX_TRANSFER_LENGTH ((16 * 11) * PAGE_SIZE) // 1/2 ring of direct (or 1 indirect) +#define XENVBD_MAX_PHYSICAL_BREAKS ((16 * 11) - 1) // 1/2 ring of direct (or 1 indirect) extern VOID DriverSetAdapter( -- 2.8.3 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |