From: Darren Trapp <darren.tr...@cavium.com>

Signed-off-by: Darren Trapp <darren.tr...@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madh...@cavium.com>
---
 drivers/scsi/qla2xxx/qla_isr.c  | 78 +++++++++++++++--------------------------
 drivers/scsi/qla2xxx/qla_nvme.c |  2 +-
 2 files changed, 29 insertions(+), 51 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 07c98eb911fd..7cacdc3408fa 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1838,31 +1838,23 @@ qla24xx_tm_iocb_entry(scsi_qla_host_t *vha, struct 
req_que *req, void *tsk)
        sp->done(sp, 0);
 }
 
-static void
-qla24xx_nvme_iocb_entry(scsi_qla_host_t *vha, struct req_que *req, void *tsk)
+static void qla24xx_nvme_iocb_entry(scsi_qla_host_t *vha, struct req_que *req,
+    void *tsk, srb_t *sp)
 {
-       const char func[] = "NVME-IOCB";
        fc_port_t *fcport;
-       srb_t *sp;
        struct srb_iocb *iocb;
        struct sts_entry_24xx *sts = (struct sts_entry_24xx *)tsk;
        uint16_t        state_flags;
        struct nvmefc_fcp_req *fd;
        uint16_t        ret = 0;
-       struct srb_iocb *nvme;
-
-       sp = qla2x00_get_sp_from_handle(vha, func, req, tsk);
-       if (!sp)
-               return;
 
        iocb = &sp->u.iocb_cmd;
        fcport = sp->fcport;
        iocb->u.nvme.comp_status = le16_to_cpu(sts->comp_status);
        state_flags  = le16_to_cpu(sts->state_flags);
        fd = iocb->u.nvme.desc;
-       nvme = &sp->u.iocb_cmd;
 
-       if (unlikely(nvme->u.nvme.aen_op))
+       if (unlikely(iocb->u.nvme.aen_op))
                atomic_dec(&sp->vha->hw->nvme_active_aen_cnt);
 
        /*
@@ -1896,45 +1888,30 @@ qla24xx_nvme_iocb_entry(scsi_qla_host_t *vha, struct 
req_que *req, void *tsk)
        fd->transferred_length = fd->payload_length -
            le32_to_cpu(sts->residual_len);
 
-       /*
-        * If transport error then Failure (HBA rejects request)
-        * otherwise transport will handle.
-        */
-       if (sts->entry_status) {
-               ql_log(ql_log_warn, fcport->vha, 0x5038,
-                   "NVME-%s error - hdl=%x entry-status(%x).\n",
-                   sp->name, sp->handle, sts->entry_status);
+       switch (le16_to_cpu(sts->comp_status)) {
+       case CS_COMPLETE:
+               ret = QLA_SUCCESS;
+               break;
+       case CS_ABORTED:
+       case CS_RESET:
+       case CS_PORT_UNAVAILABLE:
+       case CS_PORT_LOGGED_OUT:
+       case CS_PORT_BUSY:
+               ql_log(ql_log_warn, fcport->vha, 0x5060,
+                   "NVME-%s ERR Handling - hdl=%x completion status(%x) 
resid=%x  ox_id=%x\n",
+                   sp->name, sp->handle, sts->comp_status,
+                   le32_to_cpu(sts->residual_len), sts->ox_id);
+               fd->transferred_length = 0;
+               iocb->u.nvme.rsp_pyld_len = 0;
+               ret = QLA_ABORTED;
+               break;
+       default:
+               ql_log(ql_log_warn, fcport->vha, 0x5060,
+                   "NVME-%s error - hdl=%x completion status(%x) resid=%x  
ox_id=%x\n",
+                   sp->name, sp->handle, sts->comp_status,
+                   le32_to_cpu(sts->residual_len), sts->ox_id);
                ret = QLA_FUNCTION_FAILED;
-       } else  {
-               switch (le16_to_cpu(sts->comp_status)) {
-                       case CS_COMPLETE:
-                               ret = QLA_SUCCESS;
-                       break;
-
-                       case CS_RESET:
-                       case CS_PORT_UNAVAILABLE:
-                               fcport->nvme_flag |= NVME_FLAG_RESETTING;
-                               /* fall through */
-                       case CS_ABORTED:
-                       case CS_PORT_LOGGED_OUT:
-                       case CS_PORT_BUSY:
-                               ql_log(ql_log_warn, fcport->vha, 0x5060,
-                               "NVME-%s ERR Handling - hdl=%x completion 
status(%x) resid=%x  ox_id=%x\n",
-                               sp->name, sp->handle, sts->comp_status,
-                               le32_to_cpu(sts->residual_len), sts->ox_id);
-                               fd->transferred_length = 0;
-                               iocb->u.nvme.rsp_pyld_len = 0;
-                               ret = QLA_ABORTED;
-                       break;
-
-                       default:
-                               ql_log(ql_log_warn, fcport->vha, 0x5060,
-                               "NVME-%s error - hdl=%x completion status(%x) 
resid=%x  ox_id=%x\n",
-                               sp->name, sp->handle, sts->comp_status,
-                               le32_to_cpu(sts->residual_len), sts->ox_id);
-                               ret = QLA_FUNCTION_FAILED;
-                               break;
-               }
+               break;
        }
        sp->done(sp, ret);
 }
@@ -2462,7 +2439,8 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que 
*rsp, void *pkt)
 
        /* NVME completion. */
        if (sp->type == SRB_NVME_CMD) {
-               qla24xx_nvme_iocb_entry(vha, req, pkt);
+               req->outstanding_cmds[handle] = NULL;
+               qla24xx_nvme_iocb_entry(vha, req, pkt, sp);
                return;
        }
 
diff --git a/drivers/scsi/qla2xxx/qla_nvme.c b/drivers/scsi/qla2xxx/qla_nvme.c
index 57275bc9fe14..c5a963c2c86e 100644
--- a/drivers/scsi/qla2xxx/qla_nvme.c
+++ b/drivers/scsi/qla2xxx/qla_nvme.c
@@ -280,7 +280,7 @@ static void qla_nvme_poll(struct nvme_fc_local_port *lport, 
void *hw_queue_handl
        spin_unlock_irqrestore(&qpair->qp_lock, flags);
 }
 
-static int qla2x00_start_nvme_mq(srb_t *sp)
+static inline int qla2x00_start_nvme_mq(srb_t *sp)
 {
        unsigned long   flags;
        uint32_t        *clr_ptr;
-- 
2.12.0

Reply via email to