diff options
author | James Smart <james.smart@emulex.com> | 2011-10-10 21:32:10 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-10-16 12:28:48 -0400 |
commit | 73d91e503a60bd164b636258ae9f558b72010602 (patch) | |
tree | dc319fbf3cb55fc8d011720d5c13f1b814ae8539 /drivers/scsi/lpfc/lpfc_els.c | |
parent | 8d6f5cea12e5eebdaca94b3a3a4bd4f12e83d85d (diff) |
[SCSI] lpfc 8.3.27: Miscellanous logic and interface fixes
Miscellanous logic and interface fixes
- Fix lpfc_init_vfi_cmpl to check the interface type for interface type 0
before parsing the results.
- Cast uint32_t values that are multiplied to uint64_t before the
multiplication.
- Instead of "break" statement when PCI read returned error, use the goto
statement to the end of the routine after setting return value
- moved the msleep(10) to the beginning of the wait loop for checking the
SLIPort_Status register
- Added the code to follow the existing wait for SLIPort_Status register RDY,
ERR, and RN bits to be set by the port before proceeding to perform PCI
function reset.
- Do not override ulpCt_h and ulpCt_l for SLI 4 ports.
- For vport delete, call lpfc_nlp_put when the vport's vpi state is not
marked with VPI_REGISTERED.
- Added missed fields into the driver's Controller Attributes Structure
- Changed ringing EQ/CQ/RQ doorbell register to be dependent on the size
of the queue.
- Return -EACCES in issue_reset if cfg_enable_hba_reset is zero.
- Added new logging flag LOG_FCP_UNDER 0x00040000 to qualify underrun logging.
- Add a check in the fabric name display routine to display 0 if the port
state is <= FLOGI.
- Add a check to the switch statement in lpfc_decode_firmware_rev to check
for an 'X'.
Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_els.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index 727c793422f2..445826a4c981 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -3386,7 +3386,14 @@ lpfc_cmpl_els_logo_acc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
3386 | cmdiocb->context1 = NULL; | 3386 | cmdiocb->context1 = NULL; |
3387 | } | 3387 | } |
3388 | } | 3388 | } |
3389 | |||
3390 | /* | ||
3391 | * The driver received a LOGO from the rport and has ACK'd it. | ||
3392 | * At this point, the driver is done so release the IOCB and | ||
3393 | * remove the ndlp reference. | ||
3394 | */ | ||
3389 | lpfc_els_free_iocb(phba, cmdiocb); | 3395 | lpfc_els_free_iocb(phba, cmdiocb); |
3396 | lpfc_nlp_put(ndlp); | ||
3390 | return; | 3397 | return; |
3391 | } | 3398 | } |
3392 | 3399 | ||
@@ -7257,16 +7264,11 @@ lpfc_issue_els_fdisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, | |||
7257 | icmd->un.elsreq64.myID = 0; | 7264 | icmd->un.elsreq64.myID = 0; |
7258 | icmd->un.elsreq64.fl = 1; | 7265 | icmd->un.elsreq64.fl = 1; |
7259 | 7266 | ||
7260 | if ((phba->sli_rev == LPFC_SLI_REV4) && | 7267 | /* |
7261 | (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) == | 7268 | * SLI3 ports require a different context type value than SLI4. |
7262 | LPFC_SLI_INTF_IF_TYPE_0)) { | 7269 | * Catch SLI3 ports here and override the prep. |
7263 | /* FDISC needs to be 1 for WQE VPI */ | 7270 | */ |
7264 | elsiocb->iocb.ulpCt_h = (SLI4_CT_VPI >> 1) & 1; | 7271 | if (phba->sli_rev == LPFC_SLI_REV3) { |
7265 | elsiocb->iocb.ulpCt_l = SLI4_CT_VPI & 1 ; | ||
7266 | /* Set the ulpContext to the vpi */ | ||
7267 | elsiocb->iocb.ulpContext = phba->vpi_ids[vport->vpi]; | ||
7268 | } else { | ||
7269 | /* For FDISC, Let FDISC rsp set the NPortID for this VPI */ | ||
7270 | icmd->ulpCt_h = 1; | 7272 | icmd->ulpCt_h = 1; |
7271 | icmd->ulpCt_l = 0; | 7273 | icmd->ulpCt_l = 0; |
7272 | } | 7274 | } |