diff options
author | James Smart <James.Smart@Emulex.Com> | 2008-02-08 18:49:39 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-02-11 18:52:57 -0500 |
commit | 1b32f6aa9935ab88eac0d608a4b06369f5d9064a (patch) | |
tree | dfca777d4fcd442d33643536963c259a15d67662 /drivers/scsi/lpfc/lpfc_els.c | |
parent | e47c9093531d3406a8ae38acca4ce207ef70cc0e (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.c | 14 |
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); |