Commit 25594c6b authored by Jamie Wellnitz's avatar Jamie Wellnitz Committed by James Bottomley

[SCSI] lpfc 8.1.2: Code cleanup of lpfc_mbx_cmpl_config_link

Code cleanup of lpfc_mbx_cmpl_config_link
Signed-off-by: default avatarJamie Wellnitz <Jamie.Wellnitz@emulex.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 367c2713
...@@ -538,80 +538,59 @@ lpfc_mbx_cmpl_clear_la(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb) ...@@ -538,80 +538,59 @@ lpfc_mbx_cmpl_clear_la(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
} }
static void static void
lpfc_mbx_cmpl_config_link(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb) lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
{ {
struct lpfc_sli *psli; struct lpfc_sli *psli = &phba->sli;
MAILBOX_t *mb; int rc;
psli = &phba->sli;
mb = &pmb->mb;
/* Check for error */
if (mb->mbxStatus) {
/* CONFIG_LINK mbox error <mbxStatus> state <hba_state> */
lpfc_printf_log(phba, KERN_ERR, LOG_MBOX,
"%d:0306 CONFIG_LINK mbxStatus error x%x "
"HBA state x%x\n",
phba->brd_no, mb->mbxStatus, phba->hba_state);
lpfc_linkdown(phba); if (pmb->mb.mbxStatus)
phba->hba_state = LPFC_HBA_ERROR;
goto out; goto out;
}
if (phba->hba_state == LPFC_LOCAL_CFG_LINK) { mempool_free(pmb, phba->mbox_mem_pool);
if (phba->fc_topology == TOPOLOGY_LOOP) {
/* If we are public loop and L bit was set */ if (phba->fc_topology == TOPOLOGY_LOOP &&
if ((phba->fc_flag & FC_PUBLIC_LOOP) && phba->fc_flag & FC_PUBLIC_LOOP &&
!(phba->fc_flag & FC_LBIT)) { !(phba->fc_flag & FC_LBIT)) {
/* Need to wait for FAN - use discovery timer /* Need to wait for FAN - use discovery timer
* for timeout. hba_state is identically * for timeout. hba_state is identically
* LPFC_LOCAL_CFG_LINK while waiting for FAN * LPFC_LOCAL_CFG_LINK while waiting for FAN
*/ */
lpfc_set_disctmo(phba); lpfc_set_disctmo(phba);
mempool_free( pmb, phba->mbox_mem_pool); return;
return;
}
} }
/* Start discovery by sending a FLOGI hba_state is identically /* Start discovery by sending a FLOGI. hba_state is identically
* LPFC_FLOGI while waiting for FLOGI cmpl * LPFC_FLOGI while waiting for FLOGI cmpl
*/ */
phba->hba_state = LPFC_FLOGI; phba->hba_state = LPFC_FLOGI;
lpfc_set_disctmo(phba); lpfc_set_disctmo(phba);
lpfc_initial_flogi(phba); lpfc_initial_flogi(phba);
mempool_free( pmb, phba->mbox_mem_pool); return;
return;
}
if (phba->hba_state == LPFC_FABRIC_CFG_LINK) {
mempool_free( pmb, phba->mbox_mem_pool);
return;
}
out: out:
/* CONFIG_LINK bad hba state <hba_state> */ lpfc_printf_log(phba, KERN_ERR, LOG_MBOX,
lpfc_printf_log(phba, "%d:0306 CONFIG_LINK mbxStatus error x%x "
KERN_ERR, "HBA state x%x\n",
LOG_DISCOVERY, phba->brd_no, pmb->mb.mbxStatus, phba->hba_state);
lpfc_linkdown(phba);
phba->hba_state = LPFC_HBA_ERROR;
lpfc_printf_log(phba, KERN_ERR, LOG_DISCOVERY,
"%d:0200 CONFIG_LINK bad hba state x%x\n", "%d:0200 CONFIG_LINK bad hba state x%x\n",
phba->brd_no, phba->hba_state); phba->brd_no, phba->hba_state);
if (phba->hba_state != LPFC_CLEAR_LA) { lpfc_clear_la(phba, pmb);
lpfc_clear_la(phba, pmb); pmb->mbox_cmpl = lpfc_mbx_cmpl_clear_la;
pmb->mbox_cmpl = lpfc_mbx_cmpl_clear_la; rc = lpfc_sli_issue_mbox(phba, pmb, (MBX_NOWAIT | MBX_STOP_IOCB));
if (lpfc_sli_issue_mbox(phba, pmb, (MBX_NOWAIT | MBX_STOP_IOCB)) if (rc == MBX_NOT_FINISHED) {
== MBX_NOT_FINISHED) { mempool_free(pmb, phba->mbox_mem_pool);
mempool_free( pmb, phba->mbox_mem_pool); lpfc_disc_flush_list(phba);
lpfc_disc_flush_list(phba); psli->ring[(psli->ip_ring)].flag &= ~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->ip_ring)].flag &= psli->ring[(psli->fcp_ring)].flag &= ~LPFC_STOP_IOCB_EVENT;
~LPFC_STOP_IOCB_EVENT; psli->ring[(psli->next_ring)].flag &= ~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->fcp_ring)].flag &= phba->hba_state = LPFC_HBA_READY;
~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->next_ring)].flag &=
~LPFC_STOP_IOCB_EVENT;
phba->hba_state = LPFC_HBA_READY;
}
} else {
mempool_free( pmb, phba->mbox_mem_pool);
} }
return; return;
} }
...@@ -765,7 +744,7 @@ lpfc_mbx_process_link_up(struct lpfc_hba *phba, READ_LA_VAR *la) ...@@ -765,7 +744,7 @@ lpfc_mbx_process_link_up(struct lpfc_hba *phba, READ_LA_VAR *la)
if (cfglink_mbox) { if (cfglink_mbox) {
phba->hba_state = LPFC_LOCAL_CFG_LINK; phba->hba_state = LPFC_LOCAL_CFG_LINK;
lpfc_config_link(phba, cfglink_mbox); lpfc_config_link(phba, cfglink_mbox);
cfglink_mbox->mbox_cmpl = lpfc_mbx_cmpl_config_link; cfglink_mbox->mbox_cmpl = lpfc_mbx_cmpl_local_config_link;
lpfc_sli_issue_mbox(phba, cfglink_mbox, lpfc_sli_issue_mbox(phba, cfglink_mbox,
(MBX_NOWAIT | MBX_STOP_IOCB)); (MBX_NOWAIT | MBX_STOP_IOCB));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment