From: Vaios Papadimitriou Date: Tue, 8 May 2012 22:01:23 +0000 (-0500) Subject: Fix bug with driver processing an els command using 16Gb FC Adapter (CR 126345) X-Git-Tag: v2.6.39-400.9.0~423^2~123^2~30 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=e4f2ad988b15e9ba2f41a5ee01d60c3bdb507de8;p=users%2Fjedix%2Flinux-maple.git Fix bug with driver processing an els command using 16Gb FC Adapter (CR 126345) 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 --- diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c index 5de35c68d8adb..5813218a3deb3 100644 --- a/drivers/scsi/lpfc/lpfc_bsg.c +++ b/drivers/scsi/lpfc/lpfc_bsg.c @@ -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; diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index d3b0474c04110..089807fe717d4 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c @@ -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]);