class TransferRequestProcessor
Defined at line 28 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.h
Owns and processes the UTP transfer request list.
Public Methods
zx::result<std::unique_ptr<TransferRequestProcessor>> Create (Ufs & ufs, zx::unowned_bti bti, const fdf::MmioView mmio, uint8_t entry_count)
Defined at line 30 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.h
void TransferRequestProcessor (RequestList request_list, Ufs & ufs, zx::unowned_bti bti, const fdf::MmioView mmio, uint32_t slot_count)
Defined at line 42 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.h
void ~TransferRequestProcessor ()
Defined at line 45 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.h
zx::result<> Init ()
Defined at line 71 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
template <class RequestType, class ResponseType>
zx::result<std::unique_ptr<ResponseType>> SendRequestUpiu (RequestType & request, uint8_t lun)
|SendRequestUpiu| allocates a slot for request UPIU and calls SendRequestUsingSlot.
This function is only ever used for admin commands.
Defined at line 73 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.h
template <class RequestType>
std::tuple<uint16_t, uint32_t> PreparePrdt (RequestType & request, uint8_t lun, uint8_t slot, const std::vector<zx_paddr_t> & buffer_phys, uint16_t response_offset, uint16_t response_length)
Defined at line 92 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.h
zx::result<uint8_t> ReserveAdminSlot ()
Allocate a slot to submit an Admin command. Use slot 31 to avoid conflicts with I/O commands.
Defined at line 98 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
uint32_t ProcessCompletionOfAdminRequests ()
Defined at line 396 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
uint32_t ProcessCompletionOfIoRequests ()
Defined at line 407 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
zx_time_t GetEarliestTimeoutDeadline ()
Find the earliest timeout deadline of the in-flight I/O.
Defined at line 423 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
zx::result<std::unique_ptr<ResponseUpiu>> SendScsiUpiuUsingSlot (ScsiCommandUpiu & request, uint8_t lun, uint8_t slot, std::optional<zx::unowned_vmo> data_vmo, IoCommand * io_cmd, bool is_sync)
Defined at line 108 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
zx::result<std::unique_ptr<ResponseUpiu>> SendScsiUpiu (ScsiCommandUpiu & request, uint8_t lun, std::optional<zx::unowned_vmo> data, IoCommand * io_cmd)
|SendScsiUpiu| allocates a slot for SCSI command UPIU and calls SendScsiUpiuUsingSlot.
If it is an admin command, the |io_cmd| is nullptr.
Defined at line 136 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
zx::result<std::unique_ptr<QueryResponseUpiu>> SendQueryRequestUpiu (QueryRequestUpiu & request)
This function is a wrapper function that sends a query request UPIU.
Defined at line 166 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
template <>
std::tuple<uint16_t, uint32_t> PreparePrdt<ufs::ScsiCommandUpiu> (ScsiCommandUpiu & request, uint8_t lun, uint8_t slot, const std::vector<zx_paddr_t> & buffer_phys, uint16_t response_offset, uint16_t response_length)
Defined at line 38 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
uint32_t GetInflightIoCount ()
Defined at line 109 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.h
template <class RequestType>
zx::result<void *> SendRequestUsingSlot (RequestType & request, uint8_t lun, uint8_t slot, std::optional<zx::unowned_vmo> data_vmo, IoCommand * io_cmd, bool is_sync)
Defined at line 180 of file ../../src/devices/block/drivers/ufs/transfer_request_processor.cc
Friends
class UfsTest