]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Fix bug with driver processing an els command using 16Gb FC Adapter (CR 126345)
authorVaios Papadimitriou <vaios.papadimitriou@emulex.com>
Tue, 8 May 2012 22:01:23 +0000 (17:01 -0500)
committerMaxim Uvarov <maxim.uvarov@oracle.com>
Wed, 9 May 2012 00:01:23 +0000 (17:01 -0700)
ELS echo fails on an LPe16000 adapter because the driver was not setting up
the ulpContext correctly. The ulpContext is now properly set from the rpi_ids
table for SLI4 devices.

commit id: 3ef6d24cd9f473518dd7941e86cc2a5f8992eed0

Signed-off-by: Maxim Uvarov <maxim.uvarov@oracle.com>
drivers/scsi/lpfc/lpfc_bsg.c
drivers/scsi/lpfc/lpfc_sli.c

index 5de35c68d8adb36e3bc1da3ecf0a471eeeeba921..5813218a3deb3796fa6fd7e5155aca8a816aaf50 100644 (file)
@@ -590,7 +590,10 @@ lpfc_bsg_rport_els(struct fc_bsg_job *job)
        }
        cmdiocbq->iocb.un.elsreq64.bdl.bdeSize =
                (request_nseg + reply_nseg) * sizeof(struct ulp_bde64);
-       cmdiocbq->iocb.ulpContext = rpi;
+       if (phba->sli_rev == LPFC_SLI_REV4)
+               cmdiocbq->iocb.ulpContext = phba->sli4_hba.rpi_ids[rpi];
+       else
+               cmdiocbq->iocb.ulpContext = rpi;
        cmdiocbq->iocb_flag |= LPFC_IO_LIBDFC;
        cmdiocbq->context1 = NULL;
        cmdiocbq->context2 = NULL;
index d3b0474c0411092a0746b9c7253dd61c14cbc286..089807fe717d4c67494fd2d75851f9aafdfb47ab 100644 (file)
@@ -7763,7 +7763,7 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
                                bf_set(wqe_ct, &wqe->els_req.wqe_com, 1);
                                bf_set(wqe_ctxt_tag, &wqe->els_req.wqe_com,
                                        phba->vpi_ids[phba->pport->vpi]);
-                       } else if (iocbq->context1) {
+                       } else if (pcmd && iocbq->context1) {
                                bf_set(wqe_ct, &wqe->els_req.wqe_com, 0);
                                bf_set(wqe_ctxt_tag, &wqe->els_req.wqe_com,
                                        phba->sli4_hba.rpi_ids[ndlp->nlp_rpi]);