diff options
author | James Smart <james.smart@emulex.com> | 2011-02-16 12:39:57 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2011-02-18 16:35:52 -0500 |
commit | ab56dc2e1d32556971e0729b3a6c37e0ff3104a6 (patch) | |
tree | 181e6ec72607f191b88aa7f0a56a4c00211c9aee /drivers/scsi/lpfc/lpfc_scsi.c | |
parent | 924941444b481fc862b2de5e1dd7692ca85274d7 (diff) |
[SCSI] lpfc 8.3.21: Initialization and user interface changes
- Make link speed not supported by port message an error message.
- Add support for new SLI failure codes add sysfs parameter to reflect the
security setting and current state.
- Add all lpfc module parameters to the /sys/modules/lpfc/parameters directory.
[jejb: fix up compile failure]
Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_scsi.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_scsi.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index d482dfc951f3..1255b9d1b1b0 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c | |||
@@ -2508,6 +2508,15 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn, | |||
2508 | break; | 2508 | break; |
2509 | case IOSTAT_LOCAL_REJECT: | 2509 | case IOSTAT_LOCAL_REJECT: |
2510 | case IOSTAT_REMOTE_STOP: | 2510 | case IOSTAT_REMOTE_STOP: |
2511 | if (lpfc_cmd->result == IOERR_ELXSEC_KEY_UNWRAP_ERROR || | ||
2512 | lpfc_cmd->result == | ||
2513 | IOERR_ELXSEC_KEY_UNWRAP_COMPARE_ERROR || | ||
2514 | lpfc_cmd->result == IOERR_ELXSEC_CRYPTO_ERROR || | ||
2515 | lpfc_cmd->result == | ||
2516 | IOERR_ELXSEC_CRYPTO_COMPARE_ERROR) { | ||
2517 | cmd->result = ScsiResult(DID_NO_CONNECT, 0); | ||
2518 | break; | ||
2519 | } | ||
2511 | if (lpfc_cmd->result == IOERR_INVALID_RPI || | 2520 | if (lpfc_cmd->result == IOERR_INVALID_RPI || |
2512 | lpfc_cmd->result == IOERR_NO_RESOURCES || | 2521 | lpfc_cmd->result == IOERR_NO_RESOURCES || |
2513 | lpfc_cmd->result == IOERR_ABORT_REQUESTED || | 2522 | lpfc_cmd->result == IOERR_ABORT_REQUESTED || |
@@ -2515,7 +2524,6 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn, | |||
2515 | cmd->result = ScsiResult(DID_REQUEUE, 0); | 2524 | cmd->result = ScsiResult(DID_REQUEUE, 0); |
2516 | break; | 2525 | break; |
2517 | } | 2526 | } |
2518 | |||
2519 | if ((lpfc_cmd->result == IOERR_RX_DMA_FAILED || | 2527 | if ((lpfc_cmd->result == IOERR_RX_DMA_FAILED || |
2520 | lpfc_cmd->result == IOERR_TX_DMA_FAILED) && | 2528 | lpfc_cmd->result == IOERR_TX_DMA_FAILED) && |
2521 | pIocbOut->iocb.unsli3.sli3_bg.bgstat) { | 2529 | pIocbOut->iocb.unsli3.sli3_bg.bgstat) { |
@@ -2545,7 +2553,6 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn, | |||
2545 | lpfc_cmd->cur_iocbq.sli4_xritag, | 2553 | lpfc_cmd->cur_iocbq.sli4_xritag, |
2546 | 0, 0); | 2554 | 0, 0); |
2547 | } | 2555 | } |
2548 | |||
2549 | /* else: fall through */ | 2556 | /* else: fall through */ |
2550 | default: | 2557 | default: |
2551 | cmd->result = ScsiResult(DID_ERROR, 0); | 2558 | cmd->result = ScsiResult(DID_ERROR, 0); |
@@ -2556,9 +2563,8 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn, | |||
2556 | || (pnode->nlp_state != NLP_STE_MAPPED_NODE)) | 2563 | || (pnode->nlp_state != NLP_STE_MAPPED_NODE)) |
2557 | cmd->result = ScsiResult(DID_TRANSPORT_DISRUPTED, | 2564 | cmd->result = ScsiResult(DID_TRANSPORT_DISRUPTED, |
2558 | SAM_STAT_BUSY); | 2565 | SAM_STAT_BUSY); |
2559 | } else { | 2566 | } else |
2560 | cmd->result = ScsiResult(DID_OK, 0); | 2567 | cmd->result = ScsiResult(DID_OK, 0); |
2561 | } | ||
2562 | 2568 | ||
2563 | if (cmd->result || lpfc_cmd->fcp_rsp->rspSnsLen) { | 2569 | if (cmd->result || lpfc_cmd->fcp_rsp->rspSnsLen) { |
2564 | uint32_t *lp = (uint32_t *)cmd->sense_buffer; | 2570 | uint32_t *lp = (uint32_t *)cmd->sense_buffer; |