diff options
author | James Smart <james.smart@emulex.com> | 2013-03-01 16:37:14 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-04-09 18:20:28 -0400 |
commit | e5771b4dc07447bef32a26dfa9a162af86039c07 (patch) | |
tree | a5fa8adf6f2cfdfce0ddc7970554bc3099830eff /drivers/scsi/lpfc | |
parent | 25aee4070aaac9937a2b88eca3a4333552755130 (diff) |
[SCSI] lpfc 8.3.38: Fixed OXID reuse issue.
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_attr.c | 8 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c index 97921dcd8626..cbd3a88a2963 100644 --- a/drivers/scsi/lpfc/lpfc_attr.c +++ b/drivers/scsi/lpfc/lpfc_attr.c | |||
@@ -2306,7 +2306,13 @@ int lpfc_enable_rrq; | |||
2306 | module_param(lpfc_enable_rrq, int, S_IRUGO); | 2306 | module_param(lpfc_enable_rrq, int, S_IRUGO); |
2307 | MODULE_PARM_DESC(lpfc_enable_rrq, "Enable RRQ functionality"); | 2307 | MODULE_PARM_DESC(lpfc_enable_rrq, "Enable RRQ functionality"); |
2308 | lpfc_param_show(enable_rrq); | 2308 | lpfc_param_show(enable_rrq); |
2309 | lpfc_param_init(enable_rrq, 0, 0, 1); | 2309 | /* |
2310 | # lpfc_enable_rrq: Track XRI/OXID reuse after IO failures | ||
2311 | # 0x0 = disabled, XRI/OXID use not tracked. | ||
2312 | # 0x1 = XRI/OXID reuse is timed with ratov, RRQ sent. | ||
2313 | # 0x2 = XRI/OXID reuse is timed with ratov, No RRQ sent. | ||
2314 | */ | ||
2315 | lpfc_param_init(enable_rrq, 2, 0, 2); | ||
2310 | static DEVICE_ATTR(lpfc_enable_rrq, S_IRUGO, lpfc_enable_rrq_show, NULL); | 2316 | static DEVICE_ATTR(lpfc_enable_rrq, S_IRUGO, lpfc_enable_rrq_show, NULL); |
2311 | 2317 | ||
2312 | /* | 2318 | /* |
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 57cb974af1fb..5fade546f4f3 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c | |||
@@ -872,14 +872,16 @@ lpfc_set_rrq_active(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp, | |||
872 | xritag, rxid, ndlp->nlp_DID, send_rrq); | 872 | xritag, rxid, ndlp->nlp_DID, send_rrq); |
873 | return -EINVAL; | 873 | return -EINVAL; |
874 | } | 874 | } |
875 | rrq->send_rrq = send_rrq; | 875 | if (phba->cfg_enable_rrq == 1) |
876 | rrq->send_rrq = send_rrq; | ||
877 | else | ||
878 | rrq->send_rrq = 0; | ||
876 | rrq->xritag = xritag; | 879 | rrq->xritag = xritag; |
877 | rrq->rrq_stop_time = jiffies + HZ * (phba->fc_ratov + 1); | 880 | rrq->rrq_stop_time = jiffies + HZ * (phba->fc_ratov + 1); |
878 | rrq->ndlp = ndlp; | 881 | rrq->ndlp = ndlp; |
879 | rrq->nlp_DID = ndlp->nlp_DID; | 882 | rrq->nlp_DID = ndlp->nlp_DID; |
880 | rrq->vport = ndlp->vport; | 883 | rrq->vport = ndlp->vport; |
881 | rrq->rxid = rxid; | 884 | rrq->rxid = rxid; |
882 | rrq->send_rrq = send_rrq; | ||
883 | spin_lock_irqsave(&phba->hbalock, iflags); | 885 | spin_lock_irqsave(&phba->hbalock, iflags); |
884 | empty = list_empty(&phba->active_rrq_list); | 886 | empty = list_empty(&phba->active_rrq_list); |
885 | list_add_tail(&rrq->list, &phba->active_rrq_list); | 887 | list_add_tail(&rrq->list, &phba->active_rrq_list); |