aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_scsi.c
diff options
context:
space:
mode:
authorJames Smart <james.smart@emulex.com>2011-02-16 12:39:57 -0500
committerJames Bottomley <James.Bottomley@suse.de>2011-02-18 16:35:52 -0500
commitab56dc2e1d32556971e0729b3a6c37e0ff3104a6 (patch)
tree181e6ec72607f191b88aa7f0a56a4c00211c9aee /drivers/scsi/lpfc/lpfc_scsi.c
parent924941444b481fc862b2de5e1dd7692ca85274d7 (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.c14
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;