- TransferredSize -= Increment;\r
- continue;\r
- } else {\r
- //\r
- // we try MaxTetry times for every bulk transfer\r
- //\r
- RetryTimes = MaxRetry;\r
- }\r
-\r
- BufferPtr += Increment;\r
- Remain -= Increment;\r
- if (Increment < BlockSize && TransferredSize <= *DataSize) {\r
- //\r
- // we get to the end of transter and transter size is\r
- // less than requriedsize\r
- //\r
- break;\r
- }\r
- }\r
-\r
- *DataSize = (UINT32) TransferredSize;\r
-\r
- return EFI_SUCCESS;\r
-\r
-ErrorExit:\r
- if (Direction == EfiUsbDataIn) {\r
- BotReportStatusCode (\r
- UsbBotDev->DevicePath,\r
- EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
- (EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_EC_INPUT_ERROR)\r
- );\r
- } else {\r
- BotReportStatusCode (\r
- UsbBotDev->DevicePath,\r
- EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
- (EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_EC_OUTPUT_ERROR)\r
- );\r
- }\r
-\r
- if ((Result & EFI_USB_ERR_STALL) == EFI_USB_ERR_STALL) {\r
- //\r
- // just endpoint stall happens\r
- //\r
- UsbClearEndpointHalt (\r
- UsbIo,\r
- EndpointAddr,\r
- &Result\r
- );\r
- }\r
-\r
- *DataSize = (UINT32) TransferredSize;\r