[SCSI] lpfc 8.3.38: Fixed OXID reuse issue.
authorJames Smart <james.smart@emulex.com>
Fri, 1 Mar 2013 21:37:14 +0000 (16:37 -0500)
committerJames Bottomley <JBottomley@Parallels.com>
Tue, 9 Apr 2013 22:20:28 +0000 (15:20 -0700)
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_sli.c

index 97921dcd862695892867ea129c695d13e527140e..cbd3a88a2963489ff1a19db505955f8ff2a739af 100644 (file)
@@ -2306,7 +2306,13 @@ int lpfc_enable_rrq;
 module_param(lpfc_enable_rrq, int, S_IRUGO);
 MODULE_PARM_DESC(lpfc_enable_rrq, "Enable RRQ functionality");
 lpfc_param_show(enable_rrq);
-lpfc_param_init(enable_rrq, 0, 0, 1);
+/*
+# lpfc_enable_rrq: Track XRI/OXID reuse after IO failures
+#      0x0 = disabled, XRI/OXID use not tracked.
+#      0x1 = XRI/OXID reuse is timed with ratov, RRQ sent.
+#      0x2 = XRI/OXID reuse is timed with ratov, No RRQ sent.
+*/
+lpfc_param_init(enable_rrq, 2, 0, 2);
 static DEVICE_ATTR(lpfc_enable_rrq, S_IRUGO, lpfc_enable_rrq_show, NULL);
 
 /*
index 57cb974af1fb8c25bc1566889c690aa10702fc5d..5fade546f4f3dcf23cf0b64775af5caad7e97b55 100644 (file)
@@ -872,14 +872,16 @@ lpfc_set_rrq_active(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp,
                                xritag, rxid, ndlp->nlp_DID, send_rrq);
                return -EINVAL;
        }
-       rrq->send_rrq = send_rrq;
+       if (phba->cfg_enable_rrq == 1)
+               rrq->send_rrq = send_rrq;
+       else
+               rrq->send_rrq = 0;
        rrq->xritag = xritag;
        rrq->rrq_stop_time = jiffies + HZ * (phba->fc_ratov + 1);
        rrq->ndlp = ndlp;
        rrq->nlp_DID = ndlp->nlp_DID;
        rrq->vport = ndlp->vport;
        rrq->rxid = rxid;
-       rrq->send_rrq = send_rrq;
        spin_lock_irqsave(&phba->hbalock, iflags);
        empty = list_empty(&phba->active_rrq_list);
        list_add_tail(&rrq->list, &phba->active_rrq_list);