]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c
MdeModulePkg ScsiDiskDxe: Fix async request retry times info lost issue
[mirror_edk2.git] / MdeModulePkg / Bus / Scsi / ScsiDiskDxe / ScsiDisk.c
index ba7f5a5f77fc9b3e55fc410a5fce136e6cfb5b9c..4725cf45380c6df6e1b949a88b6dc2d7f9e70baa 100644 (file)
@@ -2692,6 +2692,7 @@ ScsiDiskAsyncReadSectors (
       Status = ScsiDiskAsyncRead10 (\r
                  ScsiDiskDevice,\r
                  Timeout,\r
+                 0,\r
                  PtrBuffer,\r
                  ByteCount,\r
                  (UINT32) Lba,\r
@@ -2703,6 +2704,7 @@ ScsiDiskAsyncReadSectors (
       Status = ScsiDiskAsyncRead16 (\r
                  ScsiDiskDevice,\r
                  Timeout,\r
+                 0,\r
                  PtrBuffer,\r
                  ByteCount,\r
                  Lba,\r
@@ -2853,6 +2855,7 @@ ScsiDiskAsyncWriteSectors (
       Status = ScsiDiskAsyncWrite10 (\r
                  ScsiDiskDevice,\r
                  Timeout,\r
+                 0,\r
                  PtrBuffer,\r
                  ByteCount,\r
                  (UINT32) Lba,\r
@@ -2864,6 +2867,7 @@ ScsiDiskAsyncWriteSectors (
       Status = ScsiDiskAsyncWrite16 (\r
                  ScsiDiskDevice,\r
                  Timeout,\r
+                 0,\r
                  PtrBuffer,\r
                  ByteCount,\r
                  Lba,\r
@@ -3527,6 +3531,7 @@ Retry:
       Status = ScsiDiskAsyncRead10 (\r
                  ScsiDiskDevice,\r
                  Request->Timeout,\r
+                 Request->TimesRetry,\r
                  Request->InBuffer,\r
                  Request->DataLength,\r
                  (UINT32) Request->StartLba,\r
@@ -3538,6 +3543,7 @@ Retry:
       Status = ScsiDiskAsyncRead16 (\r
                  ScsiDiskDevice,\r
                  Request->Timeout,\r
+                 Request->TimesRetry,\r
                  Request->InBuffer,\r
                  Request->DataLength,\r
                  Request->StartLba,\r
@@ -3559,6 +3565,7 @@ Retry:
         Status = ScsiDiskAsyncRead10 (\r
                    ScsiDiskDevice,\r
                    Request->Timeout,\r
+                   0,\r
                    Request->InBuffer + Request->SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize,\r
                    OldDataLength - Request->DataLength,\r
                    (UINT32) Request->StartLba + Request->SectorCount,\r
@@ -3570,6 +3577,7 @@ Retry:
         Status = ScsiDiskAsyncRead16 (\r
                    ScsiDiskDevice,\r
                    Request->Timeout,\r
+                   0,\r
                    Request->InBuffer + Request->SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize,\r
                    OldDataLength - Request->DataLength,\r
                    Request->StartLba + Request->SectorCount,\r
@@ -3591,6 +3599,7 @@ Retry:
       Status = ScsiDiskAsyncWrite10 (\r
                  ScsiDiskDevice,\r
                  Request->Timeout,\r
+                 Request->TimesRetry,\r
                  Request->OutBuffer,\r
                  Request->DataLength,\r
                  (UINT32) Request->StartLba,\r
@@ -3602,6 +3611,7 @@ Retry:
       Status = ScsiDiskAsyncWrite16 (\r
                  ScsiDiskDevice,\r
                  Request->Timeout,\r
+                 Request->TimesRetry,\r
                  Request->OutBuffer,\r
                  Request->DataLength,\r
                  Request->StartLba,\r
@@ -3623,6 +3633,7 @@ Retry:
         Status = ScsiDiskAsyncWrite10 (\r
                    ScsiDiskDevice,\r
                    Request->Timeout,\r
+                   0,\r
                    Request->OutBuffer + Request->SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize,\r
                    OldDataLength - Request->DataLength,\r
                    (UINT32) Request->StartLba + Request->SectorCount,\r
@@ -3634,6 +3645,7 @@ Retry:
         Status = ScsiDiskAsyncWrite16 (\r
                    ScsiDiskDevice,\r
                    Request->Timeout,\r
+                   0,\r
                    Request->OutBuffer + Request->SectorCount * ScsiDiskDevice->BlkIo.Media->BlockSize,\r
                    OldDataLength - Request->DataLength,\r
                    Request->StartLba + Request->SectorCount,\r
@@ -3670,6 +3682,7 @@ Exit:
 \r
   @param  ScsiDiskDevice     The pointer of ScsiDiskDevice.\r
   @param  Timeout            The time to complete the command.\r
+  @param  TimesRetry         The number of times the command has been retried.\r
   @param  DataBuffer         The buffer to fill with the read out data.\r
   @param  DataLength         The length of buffer.\r
   @param  StartLba           The start logic block address.\r
@@ -3688,6 +3701,7 @@ EFI_STATUS
 ScsiDiskAsyncRead10 (\r
   IN     SCSI_DISK_DEV         *ScsiDiskDevice,\r
   IN     UINT64                Timeout,\r
+  IN     UINT8                 TimesRetry,\r
      OUT UINT8                 *DataBuffer,\r
   IN     UINT32                DataLength,\r
   IN     UINT32                StartLba,\r
@@ -3717,6 +3731,7 @@ ScsiDiskAsyncRead10 (
 \r
   Request->ScsiDiskDevice  = ScsiDiskDevice;\r
   Request->Timeout         = Timeout;\r
+  Request->TimesRetry      = TimesRetry;\r
   Request->InBuffer        = DataBuffer;\r
   Request->DataLength      = DataLength;\r
   Request->StartLba        = StartLba;\r
@@ -3779,6 +3794,7 @@ ErrorExit:
 \r
   @param  ScsiDiskDevice     The pointer of ScsiDiskDevice.\r
   @param  Timeout            The time to complete the command.\r
+  @param  TimesRetry         The number of times the command has been retried.\r
   @param  DataBuffer         The buffer contains the data to write.\r
   @param  DataLength         The length of buffer.\r
   @param  StartLba           The start logic block address.\r
@@ -3797,6 +3813,7 @@ EFI_STATUS
 ScsiDiskAsyncWrite10 (\r
   IN     SCSI_DISK_DEV         *ScsiDiskDevice,\r
   IN     UINT64                Timeout,\r
+  IN     UINT8                 TimesRetry,\r
   IN     UINT8                 *DataBuffer,\r
   IN     UINT32                DataLength,\r
   IN     UINT32                StartLba,\r
@@ -3826,6 +3843,7 @@ ScsiDiskAsyncWrite10 (
 \r
   Request->ScsiDiskDevice  = ScsiDiskDevice;\r
   Request->Timeout         = Timeout;\r
+  Request->TimesRetry      = TimesRetry;\r
   Request->OutBuffer       = DataBuffer;\r
   Request->DataLength      = DataLength;\r
   Request->StartLba        = StartLba;\r
@@ -3888,6 +3906,7 @@ ErrorExit:
 \r
   @param  ScsiDiskDevice     The pointer of ScsiDiskDevice.\r
   @param  Timeout            The time to complete the command.\r
+  @param  TimesRetry         The number of times the command has been retried.\r
   @param  DataBuffer         The buffer to fill with the read out data.\r
   @param  DataLength         The length of buffer.\r
   @param  StartLba           The start logic block address.\r
@@ -3906,6 +3925,7 @@ EFI_STATUS
 ScsiDiskAsyncRead16 (\r
   IN     SCSI_DISK_DEV         *ScsiDiskDevice,\r
   IN     UINT64                Timeout,\r
+  IN     UINT8                 TimesRetry,\r
      OUT UINT8                 *DataBuffer,\r
   IN     UINT32                DataLength,\r
   IN     UINT64                StartLba,\r
@@ -3935,6 +3955,7 @@ ScsiDiskAsyncRead16 (
 \r
   Request->ScsiDiskDevice  = ScsiDiskDevice;\r
   Request->Timeout         = Timeout;\r
+  Request->TimesRetry      = TimesRetry;\r
   Request->InBuffer        = DataBuffer;\r
   Request->DataLength      = DataLength;\r
   Request->StartLba        = StartLba;\r
@@ -3997,6 +4018,7 @@ ErrorExit:
 \r
   @param  ScsiDiskDevice     The pointer of ScsiDiskDevice.\r
   @param  Timeout            The time to complete the command.\r
+  @param  TimesRetry         The number of times the command has been retried.\r
   @param  DataBuffer         The buffer contains the data to write.\r
   @param  DataLength         The length of buffer.\r
   @param  StartLba           The start logic block address.\r
@@ -4015,6 +4037,7 @@ EFI_STATUS
 ScsiDiskAsyncWrite16 (\r
   IN     SCSI_DISK_DEV         *ScsiDiskDevice,\r
   IN     UINT64                Timeout,\r
+  IN     UINT8                 TimesRetry,\r
   IN     UINT8                 *DataBuffer,\r
   IN     UINT32                DataLength,\r
   IN     UINT64                StartLba,\r
@@ -4044,6 +4067,7 @@ ScsiDiskAsyncWrite16 (
 \r
   Request->ScsiDiskDevice  = ScsiDiskDevice;\r
   Request->Timeout         = Timeout;\r
+  Request->TimesRetry      = TimesRetry;\r
   Request->OutBuffer       = DataBuffer;\r
   Request->DataLength      = DataLength;\r
   Request->StartLba        = StartLba;\r