@@ -19,13 +19,6 @@
ULONG RhelDbgLevel = TRACE_LEVEL_NONE;
BOOLEAN IsCrashDumpMode;
-UNICODE_STRING ViostorServicePathUnicode =
- RTL_CONSTANT_STRING(VIOSTOR_SERVICE_NAME);
-
-UNICODE_STRING MaxTransferSizeUnicode =
- RTL_CONSTANT_STRING(MAX_TRANSFER_SIZE);
-
-
BOOLEAN
VirtIoHwInitialize(
IN PVOID DeviceExtension
@@ -98,12 +91,6 @@ CompleteSRB(
IN PSCSI_REQUEST_BLOCK Srb
);
-BOOLEAN
-GetMaxTransferSize(
- IN PVOID DeviceExtension
- );
-
-
ULONG
DriverEntry(
IN PVOID DriverObject,
@@ -292,32 +279,16 @@ VirtIoFindAdapter(
vq_sz = (sizeof(struct vring_virtqueue) + sizeof(PVOID) * pageNum);
if(adaptExt->dump_mode) {
- adaptExt->breaks_number = 8;
- adaptExt->queue_depth = 4;
+ ConfigInfo->NumberOfPhysicalBreaks = 8;
} else {
- if(GetMaxTransferSize(DeviceExtension)) {
- adaptExt->breaks_number = (adaptExt->transfer_size / 4);
- if(pageNum<= (adaptExt->breaks_number * 4)) {
- adaptExt->breaks_number = (pageNum / 4);
- }
- adaptExt->breaks_number = min(adaptExt->breaks_number, 64);
- adaptExt->breaks_number = max(adaptExt->breaks_number, 1);
- adaptExt->queue_depth = (pageNum / adaptExt->breaks_number) - 1;
- adaptExt->queue_depth = max(adaptExt->queue_depth, 1);
- } else {
- adaptExt->breaks_number = (pageNum / 2);
- adaptExt->breaks_number = min(adaptExt->breaks_number, 8);
- adaptExt->breaks_number = max(adaptExt->breaks_number, 1);
- adaptExt->queue_depth = 4;
- }
+ ConfigInfo->NumberOfPhysicalBreaks = 16;
}
- ConfigInfo->NumberOfPhysicalBreaks = adaptExt->breaks_number;
- ConfigInfo->MaximumTransferLength
- = ConfigInfo->NumberOfPhysicalBreaks * PAGE_SIZE;
+ ConfigInfo->MaximumTransferLength = ConfigInfo->NumberOfPhysicalBreaks * PAGE_SIZE;
+ adaptExt->queue_depth = pageNum / ConfigInfo->NumberOfPhysicalBreaks - 1;
RhelDbgPrint(TRACE_LEVEL_INFORMATION, ("breaks_number = %x queue_depth = %x\n",
- adaptExt->breaks_number,
+ ConfigInfo->NumberOfPhysicalBreaks,
adaptExt->queue_depth));
ptr = (ULONG_PTR)ScsiPortGetUncachedExtension(DeviceExtension, ConfigInfo, (PAGE_SIZE + vr_sz + vq_sz));
@@ -1000,67 +971,3 @@ CompleteSRB(
Srb->Lun);
#endif
}
-
-BOOLEAN
-GetMaxTransferSize(
- IN PVOID DeviceExtension
- )
-{
-
- NTSTATUS status;
- OBJECT_ATTRIBUTES oa;
- HANDLE keyHandle;
- RHEL_ULONG_VALUE_PARTIAL_INFO ulongValueInfo;
- ULONG ulongValueLength;
- PADAPTER_EXTENSION adaptExt;
-
- adaptExt = (PADAPTER_EXTENSION)DeviceExtension;
-
- InitializeObjectAttributes(&oa,
-&ViostorServicePathUnicode,
- OBJ_CASE_INSENSITIVE,
- NULL,
- NULL);
-
- status = ZwOpenKey(&keyHandle,
- KEY_READ,
-&oa);
-
- if (!NT_SUCCESS(status)) {
- RhelDbgPrint(TRACE_LEVEL_ERROR,
- ("ReadRegistryValues: Failed to open services key! 0x%x\n",
- status));
- return FALSE;
- }
-
- status = ZwQueryValueKey(keyHandle,
-&MaxTransferSizeUnicode,
- KeyValuePartialInformation,
-&ulongValueInfo,
- sizeof(ulongValueInfo),
-&ulongValueLength);
-
- if (!NT_SUCCESS(status)) {
- RhelDbgPrint(TRACE_LEVEL_ERROR,
- ("ReadRegistryValues: Failed to query %wZ value! 0x%x\n",
-&MaxTransferSizeUnicode, status));
- ZwClose(keyHandle);
- return FALSE;
- }
-
- ASSERT(ulongValueInfo.PartialInfo.Type == REG_SZ);
-
- switch(*ulongValueInfo.PartialInfo.Data) {
- case '0' : adaptExt->transfer_size = 64; break;
- case '1' : adaptExt->transfer_size = 128; break;
- case '2' : adaptExt->transfer_size = 256; break;
- default : adaptExt->transfer_size = 64; break;
- }
-
- RhelDbgPrint(TRACE_LEVEL_INFORMATION,
- ("%wZ set to %d\n",&MaxTransferSizeUnicode,
- adaptExt->transfer_size));
-
- ZwClose(keyHandle);
- return TRUE;
-}
@@ -50,10 +50,6 @@ typedef struct VirtIOBufferDescriptor VIO_SG, *PVIO_SG;
#define VIRTIO_MAX_SG (3+MAX_PHYS_SEGMENTS)
#define IO_PORT_LENGTH 0x40
-#define VIOSTOR_SERVICE_NAME L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\Viostor\\Parameters\\MaxTransferSize"
-#define MAX_TRANSFER_SIZE L"default"
-
-
#pragma pack(1)
typedef struct virtio_blk_config {
/* The capacity (in 512-byte sectors). */
@@ -94,19 +90,12 @@ typedef struct virtio_blk_req {
VIO_SG sg[VIRTIO_MAX_SG];
}blk_req, *pblk_req;
-typedef struct _RHEL_ULONG_VALUE_PARTIAL_INFO {
- KEY_VALUE_PARTIAL_INFORMATION PartialInfo;
- UCHAR Buffer[8];
-}RHEL_ULONG_VALUE_PARTIAL_INFO, *PRHEL_ULONG_VALUE_PARTIAL_INFO;
-
typedef struct _ADAPTER_EXTENSION {
ULONG_PTR device_base;
virtio_pci_vq_info pci_vq_info;
vring_virtqueue* virtqueue;
INQUIRYDATA inquiry_data;
blk_config info;
- ULONG breaks_number;
- ULONG transfer_size;
ULONG queue_depth;
BOOLEAN dump_mode;
}ADAPTER_EXTENSION, *PADAPTER_EXTENSION;
@@ -85,14 +85,6 @@ HKR,,TypesSupported,%REG_DWORD%,7
[pnpsafe_pci_addreg]
HKR, "Parameters\PnpInterface", "5", %REG_DWORD%, 0x00000001
HKR, "Parameters", "BusType", %REG_DWORD%, 0x00000001
-;HKR, "Parameters", "MaxTransferSize", %REG_DWORD%, 0x0000040
-
-HKR, "Parameters\MaxTransferSize", ParamDesc, 0, "Maximum Transfer Size"
-HKR, "Parameters\MaxTransferSize", type, 0, "enum"
-HKR, "Parameters\MaxTransferSize", default, 0, "0"
-HKR, "Parameters\MaxTransferSize\enum", "0", 0, "64 KB"
-HKR, "Parameters\MaxTransferSize\enum", "1", 0, "128 KB"
-HKR, "Parameters\MaxTransferSize\enum", "2", 0, "256 KB"
[Strings]
;
@@ -85,14 +85,6 @@ HKR,,TypesSupported,%REG_DWORD%,7
[pnpsafe_pci_addreg]
HKR, "Parameters\PnpInterface", "5", %REG_DWORD%, 0x00000001
HKR, "Parameters", "BusType", %REG_DWORD%, 0x00000001
-;HKR, "Parameters", "MaxTransferSize", %REG_DWORD%, 0x0000040
-
-HKR, "Parameters\MaxTransferSize", ParamDesc, 0, "Maximum Transfer Size"
-HKR, "Parameters\MaxTransferSize", type, 0, "enum"
-HKR, "Parameters\MaxTransferSize", default, 0, "0"
-HKR, "Parameters\MaxTransferSize\enum", "0", 0, "64 KB"
-HKR, "Parameters\MaxTransferSize\enum", "1", 0, "128 KB"
-HKR, "Parameters\MaxTransferSize\enum", "2", 0, "256 KB"
[Strings]
;