edk2/MdeModulePkg/Bus
Paul Grimes 1a261da766 MdeModulePkg/UsbMassStorageDxe: Add retry mechanism to UsbMassReadBlocks
Add a retry mechanism to UsbMassReadBlocks() to improve robustness
when reading from USB mass storage devices. Some USB devices may
experience transient failures during read operations that can be
recovered by resetting the device and retrying.

The implementation:
- Saves original buffer parameters (Buffer, Lba, BufferSize)
- Attempts the read operation up to 4 times (initial + 3 retries)
- Resets the device via UsbMassReset() before each retry
- Restores buffer parameters before each retry attempt

This change is compliant with USB Mass Storage Class Bulk-Only
Transport Spec Rev 1.0:
- Section 5.3.4: Defines Reset Recovery procedure
- Section 3.1: States device is ready for next CBW after reset

Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Jacek Kolakowski <jacek.kolakowski@intel.com>
Signed-off-by: Paul Grimes <Paul.Grimes@amd.com>
2026-01-30 07:02:52 +00:00
..
Ata MdeModulePkg: Define PCD for SATA ready for operation timeout. 2025-11-22 17:01:23 +00:00
I2c/I2cDxe MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Isa MdeModulePkg : Clear keyboard queue buffer after reading 2025-10-09 08:02:51 +00:00
Pci MdeModulePkg: PciBusDxe: Degrade MEM64 to PMEM64 when bridge lacks MEM64 2026-01-30 04:53:05 +00:00
Scsi MdeModulePkg/Bus: Remove ScsiPassThruProtocolGuid 2025-11-23 18:40:59 +00:00
Sd MdeModulePkg: Update ReceiveData and SendData function description 2024-03-13 02:48:38 +00:00
Spi MdeModulePkg: SpiNorFlash update FillWriteBuffer headers. 2025-11-24 10:07:21 +01:00
Ufs MdeModulePkg/UfsPassThruDxe:Fix Ufs DM Command issue 2025-12-24 06:41:24 +00:00
Usb MdeModulePkg/UsbMassStorageDxe: Add retry mechanism to UsbMassReadBlocks 2026-01-30 07:02:52 +00:00