scsi: lpfc: Fix non-optimized ERSP handling
When processing an NVMe ERSP IU which didn't match the optimized CQE-only path, the status was being left to the WQE status. WQE status is non-zero as it is indicating a non-optimized completion that needs to be handled by the driver. Fix by clearing the status field when falling into the non-optimized case. Log message added to track optimized vs non-optimized debug. Link: https://lore.kernel.org/r/20210514195559.119853-3-jsmart2021@gmail.com Co-developed-by: Justin Tee <justin.tee@broadcom.com> Signed-off-by: Justin Tee <justin.tee@broadcom.com> Signed-off-by: James Smart <jsmart2021@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Родитель
01131e7aae
Коммит
fa21189db9
|
@ -1049,9 +1049,19 @@ lpfc_nvme_io_cmd_wqe_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pwqeIn,
|
|||
nCmd->transferred_length = wcqe->total_data_placed;
|
||||
nCmd->rcv_rsplen = wcqe->parameter;
|
||||
nCmd->status = 0;
|
||||
/* Sanity check */
|
||||
if (nCmd->rcv_rsplen == LPFC_NVME_ERSP_LEN)
|
||||
|
||||
/* Check if this is really an ERSP */
|
||||
if (nCmd->rcv_rsplen == LPFC_NVME_ERSP_LEN) {
|
||||
lpfc_ncmd->status = IOSTAT_SUCCESS;
|
||||
lpfc_ncmd->result = 0;
|
||||
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME,
|
||||
"6084 NVME Completion ERSP: "
|
||||
"xri %x placed x%x\n",
|
||||
lpfc_ncmd->cur_iocbq.sli4_xritag,
|
||||
wcqe->total_data_placed);
|
||||
break;
|
||||
}
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
|
||||
"6081 NVME Completion Protocol Error: "
|
||||
"xri %x status x%x result x%x "
|
||||
|
|
Загрузка…
Ссылка в новой задаче