diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_els.c')
| -rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index cfe533bc979..f19e9b6f9f1 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c @@ -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);  |