scsi: qla2xxx: Cleanup for N2N code
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
a89f4f1e5f
commit
4ae5716b41
|
@ -4686,110 +4686,6 @@ qla2x00_configure_loop(scsi_qla_host_t *vha)
|
||||||
return (rval);
|
return (rval);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* N2N Login
|
|
||||||
* Updates Fibre Channel Device Database with local loop devices.
|
|
||||||
*
|
|
||||||
* Input:
|
|
||||||
* ha = adapter block pointer.
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
*/
|
|
||||||
static int qla24xx_n2n_handle_login(struct scsi_qla_host *vha,
|
|
||||||
fc_port_t *fcport)
|
|
||||||
{
|
|
||||||
struct qla_hw_data *ha = vha->hw;
|
|
||||||
int res = QLA_SUCCESS, rval;
|
|
||||||
int greater_wwpn = 0;
|
|
||||||
int logged_in = 0;
|
|
||||||
|
|
||||||
if (ha->current_topology != ISP_CFG_N)
|
|
||||||
return res;
|
|
||||||
|
|
||||||
if (wwn_to_u64(vha->port_name) >
|
|
||||||
wwn_to_u64(vha->n2n_port_name)) {
|
|
||||||
ql_dbg(ql_dbg_disc, vha, 0x2002,
|
|
||||||
"HBA WWPN is greater %llx > target %llx\n",
|
|
||||||
wwn_to_u64(vha->port_name),
|
|
||||||
wwn_to_u64(vha->n2n_port_name));
|
|
||||||
greater_wwpn = 1;
|
|
||||||
fcport->d_id.b24 = vha->n2n_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
fcport->loop_id = vha->loop_id;
|
|
||||||
fcport->fc4f_nvme = 0;
|
|
||||||
fcport->query = 1;
|
|
||||||
|
|
||||||
ql_dbg(ql_dbg_disc, vha, 0x4001,
|
|
||||||
"Initiate N2N login handler: HBA port_id=%06x loopid=%d\n",
|
|
||||||
fcport->d_id.b24, vha->loop_id);
|
|
||||||
|
|
||||||
/* Fill in member data. */
|
|
||||||
if (!greater_wwpn) {
|
|
||||||
rval = qla2x00_get_port_database(vha, fcport, 0);
|
|
||||||
ql_dbg(ql_dbg_disc, vha, 0x1051,
|
|
||||||
"Remote login-state (%x/%x) port_id=%06x loop_id=%x, rval=%d\n",
|
|
||||||
fcport->current_login_state, fcport->last_login_state,
|
|
||||||
fcport->d_id.b24, fcport->loop_id, rval);
|
|
||||||
|
|
||||||
if (((fcport->current_login_state & 0xf) == 0x4) ||
|
|
||||||
((fcport->current_login_state & 0xf) == 0x6))
|
|
||||||
logged_in = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (logged_in || greater_wwpn) {
|
|
||||||
if (!vha->nvme_local_port && vha->flags.nvme_enabled)
|
|
||||||
qla_nvme_register_hba(vha);
|
|
||||||
|
|
||||||
/* Set connected N_Port d_id */
|
|
||||||
if (vha->flags.nvme_enabled)
|
|
||||||
fcport->fc4f_nvme = 1;
|
|
||||||
|
|
||||||
fcport->scan_state = QLA_FCPORT_FOUND;
|
|
||||||
fcport->fw_login_state = DSC_LS_PORT_UNAVAIL;
|
|
||||||
fcport->disc_state = DSC_GNL;
|
|
||||||
fcport->n2n_flag = 1;
|
|
||||||
fcport->flags = 3;
|
|
||||||
vha->hw->flags.gpsc_supported = 0;
|
|
||||||
|
|
||||||
if (greater_wwpn) {
|
|
||||||
ql_dbg(ql_dbg_disc, vha, 0x20e5,
|
|
||||||
"%s %d PLOGI ELS %8phC\n",
|
|
||||||
__func__, __LINE__, fcport->port_name);
|
|
||||||
|
|
||||||
res = qla24xx_els_dcmd2_iocb(vha, ELS_DCMD_PLOGI,
|
|
||||||
fcport, fcport->d_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (res != QLA_SUCCESS) {
|
|
||||||
ql_log(ql_log_info, vha, 0xd04d,
|
|
||||||
"PLOGI Failed: portid=%06x - retrying\n",
|
|
||||||
fcport->d_id.b24);
|
|
||||||
res = QLA_SUCCESS;
|
|
||||||
} else {
|
|
||||||
/* State 0x6 means FCP PRLI complete */
|
|
||||||
if ((fcport->current_login_state & 0xf) == 0x6) {
|
|
||||||
ql_dbg(ql_dbg_disc, vha, 0x2118,
|
|
||||||
"%s %d %8phC post GPDB work\n",
|
|
||||||
__func__, __LINE__, fcport->port_name);
|
|
||||||
fcport->chip_reset =
|
|
||||||
vha->hw->base_qpair->chip_reset;
|
|
||||||
qla24xx_post_gpdb_work(vha, fcport, 0);
|
|
||||||
} else {
|
|
||||||
ql_dbg(ql_dbg_disc, vha, 0x2118,
|
|
||||||
"%s %d %8phC post NVMe PRLI\n",
|
|
||||||
__func__, __LINE__, fcport->port_name);
|
|
||||||
qla24xx_post_prli_work(vha, fcport);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* Wait for next database change */
|
|
||||||
set_bit(N2N_LOGIN_NEEDED, &vha->dpc_flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* qla2x00_configure_local_loop
|
* qla2x00_configure_local_loop
|
||||||
* Updates Fibre Channel Device Database with local loop devices.
|
* Updates Fibre Channel Device Database with local loop devices.
|
||||||
|
@ -4847,14 +4743,6 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha)
|
||||||
}
|
}
|
||||||
new_fcport->flags &= ~FCF_FABRIC_DEVICE;
|
new_fcport->flags &= ~FCF_FABRIC_DEVICE;
|
||||||
|
|
||||||
/* Inititae N2N login. */
|
|
||||||
if (test_and_clear_bit(N2N_LOGIN_NEEDED, &vha->dpc_flags)) {
|
|
||||||
rval = qla24xx_n2n_handle_login(vha, new_fcport);
|
|
||||||
if (rval != QLA_SUCCESS)
|
|
||||||
goto cleanup_allocation;
|
|
||||||
return QLA_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add devices to port list. */
|
/* Add devices to port list. */
|
||||||
id_iter = (char *)ha->gid_list;
|
id_iter = (char *)ha->gid_list;
|
||||||
for (index = 0; index < entries; index++) {
|
for (index = 0; index < entries; index++) {
|
||||||
|
|
|
@ -2567,26 +2567,6 @@ qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
|
||||||
sp->vha->qla_stats.control_requests++;
|
sp->vha->qla_stats.control_requests++;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
qla2x00_els_dcmd2_sp_free(void *data)
|
|
||||||
{
|
|
||||||
srb_t *sp = data;
|
|
||||||
struct srb_iocb *elsio = &sp->u.iocb_cmd;
|
|
||||||
|
|
||||||
if (elsio->u.els_plogi.els_plogi_pyld)
|
|
||||||
dma_free_coherent(&sp->vha->hw->pdev->dev, DMA_POOL_SIZE,
|
|
||||||
elsio->u.els_plogi.els_plogi_pyld,
|
|
||||||
elsio->u.els_plogi.els_plogi_pyld_dma);
|
|
||||||
|
|
||||||
if (elsio->u.els_plogi.els_resp_pyld)
|
|
||||||
dma_free_coherent(&sp->vha->hw->pdev->dev, DMA_POOL_SIZE,
|
|
||||||
elsio->u.els_plogi.els_resp_pyld,
|
|
||||||
elsio->u.els_plogi.els_resp_pyld_dma);
|
|
||||||
|
|
||||||
del_timer(&elsio->timer);
|
|
||||||
qla2x00_rel_sp(sp);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
qla2x00_els_dcmd2_iocb_timeout(void *data)
|
qla2x00_els_dcmd2_iocb_timeout(void *data)
|
||||||
{
|
{
|
||||||
|
@ -2648,10 +2628,6 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode,
|
||||||
}
|
}
|
||||||
|
|
||||||
elsio = &sp->u.iocb_cmd;
|
elsio = &sp->u.iocb_cmd;
|
||||||
fcport->d_id.b.domain = remote_did.b.domain;
|
|
||||||
fcport->d_id.b.area = remote_did.b.area;
|
|
||||||
fcport->d_id.b.al_pa = remote_did.b.al_pa;
|
|
||||||
|
|
||||||
ql_dbg(ql_dbg_io, vha, 0x3073,
|
ql_dbg(ql_dbg_io, vha, 0x3073,
|
||||||
"Enter: PLOGI portid=%06x\n", fcport->d_id.b24);
|
"Enter: PLOGI portid=%06x\n", fcport->d_id.b24);
|
||||||
|
|
||||||
|
@ -2664,7 +2640,6 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode,
|
||||||
qla2x00_init_timer(sp, ELS_DCMD_TIMEOUT);
|
qla2x00_init_timer(sp, ELS_DCMD_TIMEOUT);
|
||||||
|
|
||||||
sp->done = qla2x00_els_dcmd2_sp_done;
|
sp->done = qla2x00_els_dcmd2_sp_done;
|
||||||
sp->free = qla2x00_els_dcmd2_sp_free;
|
|
||||||
|
|
||||||
ptr = elsio->u.els_plogi.els_plogi_pyld =
|
ptr = elsio->u.els_plogi.els_plogi_pyld =
|
||||||
dma_alloc_coherent(&ha->pdev->dev, DMA_POOL_SIZE,
|
dma_alloc_coherent(&ha->pdev->dev, DMA_POOL_SIZE,
|
||||||
|
|
Loading…
Reference in New Issue