NVME_SQ *Sq;\r
NVME_CQ *Cq;\r
UINT16 QueueId;\r
+ UINT16 QueueSize;\r
UINT32 Bytes;\r
UINT16 Offset;\r
EFI_EVENT TimerEvent;\r
Prp = NULL;\r
TimerEvent = NULL;\r
Status = EFI_SUCCESS;\r
+ QueueSize = MIN (NVME_ASYNC_CSQ_SIZE, Private->Cap.Mqes) + 1;\r
\r
if (Packet->QueueType == NVME_ADMIN_QUEUE) {\r
QueueId = 0;\r
//\r
// Submission queue full check.\r
//\r
- if ((Private->SqTdbl[QueueId].Sqt + 1) % (NVME_ASYNC_CSQ_SIZE + 1) ==\r
+ if ((Private->SqTdbl[QueueId].Sqt + 1) % QueueSize ==\r
Private->AsyncSqHead) {\r
return EFI_NOT_READY;\r
}\r
//\r
if ((Event != NULL) && (QueueId != 0)) {\r
Private->SqTdbl[QueueId].Sqt =\r
- (Private->SqTdbl[QueueId].Sqt + 1) % (NVME_ASYNC_CSQ_SIZE + 1);\r
+ (Private->SqTdbl[QueueId].Sqt + 1) % QueueSize;\r
} else {\r
Private->SqTdbl[QueueId].Sqt ^= 1;\r
}\r