[SCSI] lpfc 8.1.7: Correct the wait in attachment that delays for topology discovery
Correct the wait in attachment that delays for topology discovery Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
committed by
James Bottomley
parent
5e0b433855
commit
ce8b3ce55b
@@ -405,19 +405,26 @@ lpfc_config_port_post(struct lpfc_hba * phba)
|
|||||||
}
|
}
|
||||||
/* MBOX buffer will be freed in mbox compl */
|
/* MBOX buffer will be freed in mbox compl */
|
||||||
|
|
||||||
i = 0;
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
lpfc_discovery_wait(struct lpfc_hba *phba)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
while ((phba->hba_state != LPFC_HBA_READY) ||
|
while ((phba->hba_state != LPFC_HBA_READY) ||
|
||||||
(phba->num_disc_nodes) || (phba->fc_prli_sent) ||
|
(phba->num_disc_nodes) || (phba->fc_prli_sent) ||
|
||||||
((phba->fc_map_cnt == 0) && (i<2)) ||
|
((phba->fc_map_cnt == 0) && (i<2)) ||
|
||||||
(psli->sli_flag & LPFC_SLI_MBOX_ACTIVE)) {
|
(phba->sli.sli_flag & LPFC_SLI_MBOX_ACTIVE)) {
|
||||||
/* Check every second for 30 retries. */
|
/* Check every second for 30 retries. */
|
||||||
i++;
|
i++;
|
||||||
if (i > 30) {
|
if (i > 30) {
|
||||||
break;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
if ((i >= 15) && (phba->hba_state <= LPFC_LINK_DOWN)) {
|
if ((i >= 15) && (phba->hba_state <= LPFC_LINK_DOWN)) {
|
||||||
/* The link is down. Set linkdown timeout */
|
/* The link is down. Set linkdown timeout */
|
||||||
break;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delay for 1 second to give discovery time to complete. */
|
/* Delay for 1 second to give discovery time to complete. */
|
||||||
@@ -425,12 +432,7 @@ lpfc_config_port_post(struct lpfc_hba * phba)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Since num_disc_nodes keys off of PLOGI, delay a bit to let
|
return 0;
|
||||||
* any potential PRLIs to flush thru the SLI sub-system.
|
|
||||||
*/
|
|
||||||
msleep(50);
|
|
||||||
|
|
||||||
return (0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
@@ -1649,6 +1651,8 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
|
|||||||
goto out_free_irq;
|
goto out_free_irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lpfc_discovery_wait(phba);
|
||||||
|
|
||||||
if (phba->cfg_poll & DISABLE_FCP_RING_INT) {
|
if (phba->cfg_poll & DISABLE_FCP_RING_INT) {
|
||||||
spin_lock_irq(phba->host->host_lock);
|
spin_lock_irq(phba->host->host_lock);
|
||||||
lpfc_poll_start_timer(phba);
|
lpfc_poll_start_timer(phba);
|
||||||
|
Reference in New Issue
Block a user