[SCSI] libfc,fcoe,fnic: Separate rport and lport max retry counts
authorAbhijeet Joglekar <abjoglek@cisco.com>
Fri, 1 May 2009 17:01:26 +0000 (10:01 -0700)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Sat, 23 May 2009 20:44:18 +0000 (15:44 -0500)
This allows fnic to configure number of retries for lport and rport
separately.

Signed-off-by: Abhijeet Joglekar <abjoglek@cisco.com>
Acked-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/fcoe/fcoe.c
drivers/scsi/fnic/fnic_main.c
drivers/scsi/libfc/fc_rport.c
include/scsi/libfc.h

index d08121f246c39052abf37ad3372e78600276421d..6acb7778f5571d833259487616beb7f6fa2b14df 100644 (file)
@@ -146,6 +146,7 @@ static int fcoe_lport_config(struct fc_lport *lp)
        lp->link_up = 0;
        lp->qfull = 0;
        lp->max_retry_count = 3;
+       lp->max_rport_retry_count = 3;
        lp->e_d_tov = 2 * 1000; /* FC-FS default */
        lp->r_a_tov = 2 * 2 * 1000;
        lp->service_params = (FCP_SPPF_INIT_FCN | FCP_SPPF_RD_XRDY_DIS |
index 32ef6b87d8953142aa8bdd24092f7f2d77540c00..a84072865fc2615a7a9fcce47c48b94fe05f4592 100644 (file)
@@ -680,6 +680,7 @@ static int __devinit fnic_probe(struct pci_dev *pdev,
        }
 
        lp->max_retry_count = fnic->config.flogi_retries;
+       lp->max_rport_retry_count = fnic->config.plogi_retries;
        lp->service_params = (FCP_SPPF_INIT_FCN | FCP_SPPF_RD_XRDY_DIS |
                              FCP_SPPF_CONF_COMPL);
        if (fnic->config.flags & VFCF_FCP_SEQ_LVL_ERR)
index 3f5094ebc3975e4917d2a36a7e7adecbd1413ed4..7bfbff7e0efb256656d1ef6ce8a5e8ac68fa9c69 100644 (file)
@@ -478,7 +478,7 @@ static void fc_rport_error_retry(struct fc_rport *rport, struct fc_frame *fp)
        if (PTR_ERR(fp) == -FC_EX_CLOSED)
                return fc_rport_error(rport, fp);
 
-       if (rdata->retries < rdata->local_port->max_retry_count) {
+       if (rdata->retries < rdata->local_port->max_rport_retry_count) {
                FC_DEBUG_RPORT("Error %ld in state %s, retrying\n",
                               PTR_ERR(fp), fc_rport_state(rport));
                rdata->retries++;
index 45f9cc642c46572623eaf09568332edcd17f475c..ebdd9f4cf070da669c2b80a817c9b156e51f360e 100644 (file)
@@ -679,6 +679,7 @@ struct fc_lport {
        unsigned int            e_d_tov;
        unsigned int            r_a_tov;
        u8                      max_retry_count;
+       u8                      max_rport_retry_count;
        u16                     link_speed;
        u16                     link_supported_speeds;
        u16                     lro_xid;        /* max xid for fcoe lro */