aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_els.c
diff options
context:
space:
mode:
authorJames Smart <James.Smart@Emulex.Com>2008-02-08 18:49:39 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-02-11 18:52:57 -0500
commit1b32f6aa9935ab88eac0d608a4b06369f5d9064a (patch)
treedfca777d4fcd442d33643536963c259a15d67662 /drivers/scsi/lpfc/lpfc_els.c
parente47c9093531d3406a8ae38acca4ce207ef70cc0e (diff)
[SCSI] lpfc 8.2.5 : Miscellaneous Fixes
Miscellaneous fixes: - Fix ERRATT flag which was overlapping - Allow RESTART mbx commands through when stopped. - Accept incoming PLOGI when connected to an N_Port. - Fix NPort to NPort pt2pt problems: ADISC and reg_vpi issues - Fix vport unloading error that erroneously cleaned up RSCN buffers - Fix memory leak during repeated unloads - in mbox handling - Fix link bounce vs FLOGI race conditions Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_els.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_els.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c
index 39268e6a1a05..60afc8028ff5 100644
--- a/drivers/scsi/lpfc/lpfc_els.c
+++ b/drivers/scsi/lpfc/lpfc_els.c
@@ -2046,7 +2046,8 @@ lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
2046 retry = 1; 2046 retry = 1;
2047 2047
2048 if ((cmd == ELS_CMD_FLOGI) && 2048 if ((cmd == ELS_CMD_FLOGI) &&
2049 (phba->fc_topology != TOPOLOGY_LOOP)) { 2049 (phba->fc_topology != TOPOLOGY_LOOP) &&
2050 !lpfc_error_lost_link(irsp)) {
2050 /* FLOGI retry policy */ 2051 /* FLOGI retry policy */
2051 retry = 1; 2052 retry = 1;
2052 maxretry = 48; 2053 maxretry = 48;
@@ -4091,8 +4092,15 @@ lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
4091 ndlp = lpfc_plogi_confirm_nport(phba, payload, ndlp); 4092 ndlp = lpfc_plogi_confirm_nport(phba, payload, ndlp);
4092 4093
4093 if (vport->port_state < LPFC_DISC_AUTH) { 4094 if (vport->port_state < LPFC_DISC_AUTH) {
4094 rjt_err = LSRJT_UNABLE_TPC; 4095 if (!(phba->pport->fc_flag & FC_PT2PT) ||
4095 break; 4096 (phba->pport->fc_flag & FC_PT2PT_PLOGI)) {
4097 rjt_err = LSRJT_UNABLE_TPC;
4098 break;
4099 }
4100 /* We get here, and drop thru, if we are PT2PT with
4101 * another NPort and the other side has initiated
4102 * the PLOGI before responding to our FLOGI.
4103 */
4096 } 4104 }
4097 4105
4098 shost = lpfc_shost_from_vport(vport); 4106 shost = lpfc_shost_from_vport(vport);