[SCSI] lpfc 8.3.35: Fix error with fabric service parameters causing performance...
[firefly-linux-kernel-4.4.55.git] / drivers / scsi / lpfc / lpfc_els.c
index cfe533bc97909cbda098734e3a4e2e99cee1de85..f19e9b6f9f133de56e484bc275109377dbc58664 100644 (file)
@@ -809,6 +809,8 @@ lpfc_cmpl_els_flogi_nport(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
        phba->fc_ratov = FF_DEF_RATOV;
        rc = memcmp(&vport->fc_portname, &sp->portName,
                    sizeof(vport->fc_portname));
+       memcpy(&phba->fc_fabparam, sp, sizeof(struct serv_parm));
+
        if (rc >= 0) {
                /* This side will initiate the PLOGI */
                spin_lock_irq(shost->host_lock);
@@ -3160,7 +3162,8 @@ lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
                                retry = 1;
                                break;
                        }
-                       if (cmd == ELS_CMD_PLOGI) {
+                       if ((cmd == ELS_CMD_PLOGI) ||
+                           (cmd == ELS_CMD_PRLI)) {
                                delay = 1000;
                                maxretry = lpfc_max_els_tries + 1;
                                retry = 1;
@@ -3305,7 +3308,7 @@ lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
                        ndlp->nlp_prev_state = ndlp->nlp_state;
                        if (cmd == ELS_CMD_PRLI)
                                lpfc_nlp_set_state(vport, ndlp,
-                                       NLP_STE_REG_LOGIN_ISSUE);
+                                       NLP_STE_PRLI_ISSUE);
                        else
                                lpfc_nlp_set_state(vport, ndlp,
                                        NLP_STE_NPR_NODE);