1
0

scsi: qla2xxx: Use IOCB path to submit Control VP MBX command

Use IOCB patch to submit Control VP MBX command to reduce
bottle-neck for mbx interface.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Quinn Tran
2017-12-28 12:33:10 -08:00
committed by Martin K. Petersen
parent 5c25d45116
commit 2853192e15
7 changed files with 143 additions and 77 deletions

View File

@@ -1937,6 +1937,37 @@ qla24xx_nvme_iocb_entry(scsi_qla_host_t *vha, struct req_que *req, void *tsk)
sp->done(sp, ret);
}
static void qla_ctrlvp_completed(scsi_qla_host_t *vha, struct req_que *req,
struct vp_ctrl_entry_24xx *vce)
{
const char func[] = "CTRLVP-IOCB";
srb_t *sp;
int rval = QLA_SUCCESS;
sp = qla2x00_get_sp_from_handle(vha, func, req, vce);
if (!sp)
return;
if (vce->entry_status != 0) {
ql_dbg(ql_dbg_vport, vha, 0x10c4,
"%s: Failed to complete IOCB -- error status (%x)\n",
sp->name, vce->entry_status);
rval = QLA_FUNCTION_FAILED;
} else if (vce->comp_status != cpu_to_le16(CS_COMPLETE)) {
ql_dbg(ql_dbg_vport, vha, 0x10c5,
"%s: Failed to complete IOCB -- completion status (%x) vpidx %x\n",
sp->name, le16_to_cpu(vce->comp_status),
le16_to_cpu(vce->vp_idx_failed));
rval = QLA_FUNCTION_FAILED;
} else {
ql_dbg(ql_dbg_vport, vha, 0x10c6,
"Done %s.\n", __func__);
}
sp->rc = rval;
sp->done(sp, rval);
}
/**
* qla2x00_process_response_queue() - Process response queue entries.
* @ha: SCSI driver HA context
@@ -3001,6 +3032,10 @@ process_err:
qla24xx_mbx_iocb_entry(vha, rsp->req,
(struct mbx_24xx_entry *)pkt);
break;
case VP_CTRL_IOCB_TYPE:
qla_ctrlvp_completed(vha, rsp->req,
(struct vp_ctrl_entry_24xx *)pkt);
break;
default:
/* Type Not Supported. */
ql_dbg(ql_dbg_async, vha, 0x5042,