aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc
diff options
context:
space:
mode:
authorJames Smart <james.smart@emulex.com>2013-03-01 16:37:14 -0500
committerJames Bottomley <JBottomley@Parallels.com>2013-04-09 18:20:28 -0400
commite5771b4dc07447bef32a26dfa9a162af86039c07 (patch)
treea5fa8adf6f2cfdfce0ddc7970554bc3099830eff /drivers/scsi/lpfc
parent25aee4070aaac9937a2b88eca3a4333552755130 (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.c8
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c6
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;
2306module_param(lpfc_enable_rrq, int, S_IRUGO); 2306module_param(lpfc_enable_rrq, int, S_IRUGO);
2307MODULE_PARM_DESC(lpfc_enable_rrq, "Enable RRQ functionality"); 2307MODULE_PARM_DESC(lpfc_enable_rrq, "Enable RRQ functionality");
2308lpfc_param_show(enable_rrq); 2308lpfc_param_show(enable_rrq);
2309lpfc_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*/
2315lpfc_param_init(enable_rrq, 2, 0, 2);
2310static DEVICE_ATTR(lpfc_enable_rrq, S_IRUGO, lpfc_enable_rrq_show, NULL); 2316static 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);