diff options
author | James Smart <james.smart@emulex.com> | 2012-08-14 14:25:43 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-09-14 12:59:23 -0400 |
commit | e3d2b802ad4f4d405ec81c56cb099f0b29ba5bb1 (patch) | |
tree | 05273344edf6572608c930fea4ca464f2a140469 /drivers/scsi/lpfc/lpfc_ct.c | |
parent | 90695ee0e984ef425b9f5a9845314b925357ffdf (diff) |
[SCSI] lpfc 8.3.34: Fix parameter field in CQE to mask for LOCAL_REJECT status
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_ct.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_ct.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/scsi/lpfc/lpfc_ct.c b/drivers/scsi/lpfc/lpfc_ct.c index 93e96b3c9097..7ffabb7e3afa 100644 --- a/drivers/scsi/lpfc/lpfc_ct.c +++ b/drivers/scsi/lpfc/lpfc_ct.c | |||
@@ -104,7 +104,8 @@ lpfc_ct_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, | |||
104 | if (unlikely(icmd->ulpStatus == IOSTAT_NEED_BUFFER)) { | 104 | if (unlikely(icmd->ulpStatus == IOSTAT_NEED_BUFFER)) { |
105 | lpfc_sli_hbqbuf_add_hbqs(phba, LPFC_ELS_HBQ); | 105 | lpfc_sli_hbqbuf_add_hbqs(phba, LPFC_ELS_HBQ); |
106 | } else if ((icmd->ulpStatus == IOSTAT_LOCAL_REJECT) && | 106 | } else if ((icmd->ulpStatus == IOSTAT_LOCAL_REJECT) && |
107 | ((icmd->un.ulpWord[4] & 0xff) == IOERR_RCV_BUFFER_WAITING)) { | 107 | ((icmd->un.ulpWord[4] & IOERR_PARAM_MASK) == |
108 | IOERR_RCV_BUFFER_WAITING)) { | ||
108 | /* Not enough posted buffers; Try posting more buffers */ | 109 | /* Not enough posted buffers; Try posting more buffers */ |
109 | phba->fc_stat.NoRcvBuf++; | 110 | phba->fc_stat.NoRcvBuf++; |
110 | if (!(phba->sli3_options & LPFC_SLI3_HBQ_ENABLED)) | 111 | if (!(phba->sli3_options & LPFC_SLI3_HBQ_ENABLED)) |
@@ -633,7 +634,8 @@ lpfc_cmpl_ct_cmd_gid_ft(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
633 | /* Check for retry */ | 634 | /* Check for retry */ |
634 | if (vport->fc_ns_retry < LPFC_MAX_NS_RETRY) { | 635 | if (vport->fc_ns_retry < LPFC_MAX_NS_RETRY) { |
635 | if (irsp->ulpStatus != IOSTAT_LOCAL_REJECT || | 636 | if (irsp->ulpStatus != IOSTAT_LOCAL_REJECT || |
636 | irsp->un.ulpWord[4] != IOERR_NO_RESOURCES) | 637 | (irsp->un.ulpWord[4] && IOERR_PARAM_MASK) != |
638 | IOERR_NO_RESOURCES) | ||
637 | vport->fc_ns_retry++; | 639 | vport->fc_ns_retry++; |
638 | 640 | ||
639 | /* CT command is being retried */ | 641 | /* CT command is being retried */ |
@@ -783,7 +785,9 @@ lpfc_cmpl_ct_cmd_gff_id(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
783 | if (cmdiocb->retry < LPFC_MAX_NS_RETRY) { | 785 | if (cmdiocb->retry < LPFC_MAX_NS_RETRY) { |
784 | retry = 1; | 786 | retry = 1; |
785 | if (irsp->ulpStatus == IOSTAT_LOCAL_REJECT) { | 787 | if (irsp->ulpStatus == IOSTAT_LOCAL_REJECT) { |
786 | switch (irsp->un.ulpWord[4]) { | 788 | switch ((irsp->un.ulpWord[4] & |
789 | IOERR_PARAM_MASK)) { | ||
790 | |||
787 | case IOERR_NO_RESOURCES: | 791 | case IOERR_NO_RESOURCES: |
788 | /* We don't increment the retry | 792 | /* We don't increment the retry |
789 | * count for this case. | 793 | * count for this case. |
@@ -908,8 +912,10 @@ lpfc_cmpl_ct(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, | |||
908 | cmdcode, irsp->ulpStatus, irsp->un.ulpWord[4]); | 912 | cmdcode, irsp->ulpStatus, irsp->un.ulpWord[4]); |
909 | 913 | ||
910 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && | 914 | if ((irsp->ulpStatus == IOSTAT_LOCAL_REJECT) && |
911 | ((irsp->un.ulpWord[4] == IOERR_SLI_DOWN) || | 915 | (((irsp->un.ulpWord[4] & IOERR_PARAM_MASK) == |
912 | (irsp->un.ulpWord[4] == IOERR_SLI_ABORTED))) | 916 | IOERR_SLI_DOWN) || |
917 | ((irsp->un.ulpWord[4] & IOERR_PARAM_MASK) == | ||
918 | IOERR_SLI_ABORTED))) | ||
913 | goto out; | 919 | goto out; |
914 | 920 | ||
915 | retry = cmdiocb->retry; | 921 | retry = cmdiocb->retry; |