79 int chNo, wayNo, reqSlotTag;
99 for (wayNo = 0; wayNo <
USER_WAYS; wayNo++)
174 unsigned int reqSlotTag;
243 unsigned int reqSlotTag;
311 unsigned int prevReq, nextReq;
314 assert(!
"[WARNING] Wrong reqSlotTag [WARNING]");
390 unsigned int prevReq, nextReq;
393 assert(!
"[WARNING] Wrong reqSlotTag [WARNING]");
467 unsigned int prevReq, nextReq;
548void GetFromNandReqQ(
unsigned int chNo,
unsigned int wayNo,
unsigned int reqStatus,
unsigned int reqCode)
550 unsigned int reqSlotTag;
554 assert(!
"[WARNING] there is no request in Nand-req-queue[WARNING]");
unsigned int GetFromFreeReqQ()
Get a free request from the free request queue.
SLICE_REQUEST_QUEUE sliceReqQ
unsigned int blockedReqCnt
void SelectiveGetFromBlockedByRowAddrDepReqQ(unsigned int reqSlotTag, unsigned int chNo, unsigned int wayNo)
Remove the given request from the blockedByRowAddrDepReqQ.
void PutToFreeReqQ(unsigned int reqSlotTag)
Add the given request to the free request queue.
NVME_DMA_REQUEST_QUEUE nvmeDmaReqQ
unsigned int GetFromSliceReqQ()
Get a slice request from the slice request queue.
void PutToNandReqQ(unsigned int reqSlotTag, unsigned chNo, unsigned wayNo)
Add the given request to nandReqQ of the specified die.
void PutToBlockedByBufDepReqQ(unsigned int reqSlotTag)
Add the given request to blockedByBufDepReqQ.
void PutToNvmeDmaReqQ(unsigned int reqSlotTag)
Add the given request to the NVMe DMA request queue and update its status.
void GetFromNandReqQ(unsigned int chNo, unsigned int wayNo, unsigned int reqStatus, unsigned int reqCode)
Move the head request of the specified nandReqQ queue to freeReqQ.
void InitReqPool()
Initialize the request pool and the request queues.
unsigned int notCompletedNandReqCnt
void PutToBlockedByRowAddrDepReqQ(unsigned int reqSlotTag, unsigned int chNo, unsigned int wayNo)
Add the given request to blockedByRowAddrDepReqQ.
void SelectiveGetFromBlockedByBufDepReqQ(unsigned int reqSlotTag)
Remove the given request from the blockedByBufDepReqQ.
BLOCKED_BY_BUFFER_DEPENDENCY_REQUEST_QUEUE blockedByBufDepReqQ
void SelectiveGetFromNvmeDmaReqQ(unsigned int reqSlotTag)
Move the specified entry from the nvmeDmaReqQ to the freeReqQ.
void PutToSliceReqQ(unsigned int reqSlotTag)
Add the given request to the slice request queue.
NAND_REQUEST_QUEUE nandReqQ[USER_CHANNELS][USER_WAYS]
FREE_REQUEST_QUEUE freeReqQ
BLOCKED_BY_ROW_ADDR_DEPENDENCY_REQUEST_QUEUE blockedByRowAddrDepReqQ[USER_CHANNELS][USER_WAYS]
#define AVAILABLE_OUNTSTANDING_REQ_COUNT
#define REQ_SLOT_TAG_FAIL
#define REQ_SLOT_TAG_NONE
struct _REQ_POOL * P_REQ_POOL
void SyncAvailFreeReq()
Try release request entries by doing scheduling (both NVMe and NAND).
The request entries pool for both NVMe and NAND requests.
SSD_REQ_FORMAT reqPool[AVAILABLE_OUNTSTANDING_REQ_COUNT]