mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-18 19:21:26 +00:00
qla2x00t-32gbit: Inline the qla2x00_fcport_event_handler() function
Instead of calling qla2x00_fcport_event_handler() and letting the switch statement inside that function decide which other function to call, call the latter function directly. Remove the event member from the event_arg structure because it is no longer needed. Remove the qla_handle_els_plogi_done() function because it is never called. [ commit 897def2004213636ffe2e9ee6a75660c5b53b03d upstream ] git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@8552 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -2381,22 +2381,6 @@ enum login_state { /* FW control Target side */
|
||||
DSC_LS_LOGO_PEND,
|
||||
};
|
||||
|
||||
enum fcport_mgt_event {
|
||||
FCME_RELOGIN = 1,
|
||||
FCME_RSCN,
|
||||
FCME_PLOGI_DONE, /* Initiator side sent LLIOCB */
|
||||
FCME_PRLI_DONE,
|
||||
FCME_GNL_DONE,
|
||||
FCME_GPSC_DONE,
|
||||
FCME_GPDB_DONE,
|
||||
FCME_GPNID_DONE,
|
||||
FCME_GFFID_DONE,
|
||||
FCME_ADISC_DONE,
|
||||
FCME_GNNID_DONE,
|
||||
FCME_GFPNID_DONE,
|
||||
FCME_ELS_PLOGI_DONE,
|
||||
};
|
||||
|
||||
enum rscn_addr_format {
|
||||
RSCN_PORT_ADDR,
|
||||
RSCN_AREA_ADDR,
|
||||
@@ -2515,7 +2499,6 @@ typedef struct fc_port {
|
||||
#define QLA_FCPORT_FOUND 2
|
||||
|
||||
struct event_arg {
|
||||
enum fcport_mgt_event event;
|
||||
fc_port_t *fcport;
|
||||
srb_t *sp;
|
||||
port_id_t id;
|
||||
|
||||
@@ -98,7 +98,11 @@ extern int qla2x00_init_rings(scsi_qla_host_t *);
|
||||
extern struct qla_qpair *qla2xxx_create_qpair(struct scsi_qla_host *,
|
||||
int, int, bool);
|
||||
extern int qla2xxx_delete_qpair(struct scsi_qla_host *, struct qla_qpair *);
|
||||
void qla2x00_fcport_event_handler(scsi_qla_host_t *, struct event_arg *);
|
||||
void qla2x00_handle_rscn(scsi_qla_host_t *vha, struct event_arg *ea);
|
||||
void qla24xx_handle_plogi_done_event(struct scsi_qla_host *vha,
|
||||
struct event_arg *ea);
|
||||
void qla24xx_handle_relogin_event(scsi_qla_host_t *vha,
|
||||
struct event_arg *ea);
|
||||
int qla24xx_async_gpdb(struct scsi_qla_host *, fc_port_t *, u8);
|
||||
int qla24xx_async_prli(struct scsi_qla_host *, fc_port_t *);
|
||||
int qla24xx_async_notify_ack(scsi_qla_host_t *, fc_port_t *,
|
||||
|
||||
@@ -3030,11 +3030,10 @@ static void qla24xx_async_gpsc_sp_done(srb_t *sp, int res)
|
||||
be16_to_cpu(ct_rsp->rsp.gpsc.speed));
|
||||
}
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.event = FCME_GPSC_DONE;
|
||||
ea.rc = res;
|
||||
ea.fcport = fcport;
|
||||
ea.sp = sp;
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_gpsc_event(vha, &ea);
|
||||
|
||||
done:
|
||||
sp->free(sp);
|
||||
@@ -3278,7 +3277,6 @@ static void qla2x00_async_gpnid_sp_done(srb_t *sp, int res)
|
||||
ea.sp = sp;
|
||||
ea.id = be_to_port_id(ct_req->req.port_id.port_id);
|
||||
ea.rc = res;
|
||||
ea.event = FCME_GPNID_DONE;
|
||||
|
||||
spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags);
|
||||
list_del(&sp->elem);
|
||||
@@ -3297,7 +3295,7 @@ static void qla2x00_async_gpnid_sp_done(srb_t *sp, int res)
|
||||
return;
|
||||
}
|
||||
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_gpnid_event(vha, &ea);
|
||||
|
||||
e = qla2x00_alloc_work(vha, QLA_EVT_UNMAP);
|
||||
if (!e) {
|
||||
@@ -3475,9 +3473,8 @@ void qla24xx_async_gffid_sp_done(srb_t *sp, int res)
|
||||
ea.sp = sp;
|
||||
ea.fcport = sp->fcport;
|
||||
ea.rc = res;
|
||||
ea.event = FCME_GFFID_DONE;
|
||||
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_gffid_event(vha, &ea);
|
||||
sp->free(sp);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,8 +36,8 @@ static struct qla_chip_state_84xx *qla84xx_get_chip(struct scsi_qla_host *);
|
||||
static int qla84xx_init_chip(scsi_qla_host_t *);
|
||||
static int qla25xx_init_queues(struct qla_hw_data *);
|
||||
static int qla24xx_post_prli_work(struct scsi_qla_host*, fc_port_t *);
|
||||
static void qla24xx_handle_plogi_done_event(struct scsi_qla_host *,
|
||||
struct event_arg *);
|
||||
static void qla24xx_handle_gpdb_event(scsi_qla_host_t *vha,
|
||||
struct event_arg *ea);
|
||||
static void qla24xx_handle_prli_done_event(struct scsi_qla_host *,
|
||||
struct event_arg *);
|
||||
static void __qla24xx_handle_gpdb_event(scsi_qla_host_t *, struct event_arg *);
|
||||
@@ -260,14 +260,13 @@ static void qla2x00_async_login_sp_done(srb_t *sp, int res)
|
||||
|
||||
if (!test_bit(UNLOADING, &vha->dpc_flags)) {
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.event = FCME_PLOGI_DONE;
|
||||
ea.fcport = sp->fcport;
|
||||
ea.data[0] = lio->u.logio.data[0];
|
||||
ea.data[1] = lio->u.logio.data[1];
|
||||
ea.iop[0] = lio->u.logio.iop[0];
|
||||
ea.iop[1] = lio->u.logio.iop[1];
|
||||
ea.sp = sp;
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_plogi_done_event(vha, &ea);
|
||||
}
|
||||
|
||||
sp->free(sp);
|
||||
@@ -535,7 +534,6 @@ static void qla2x00_async_adisc_sp_done(srb_t *sp, int res)
|
||||
sp->fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE);
|
||||
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.event = FCME_ADISC_DONE;
|
||||
ea.rc = res;
|
||||
ea.data[0] = lio->u.logio.data[0];
|
||||
ea.data[1] = lio->u.logio.data[1];
|
||||
@@ -544,7 +542,7 @@ static void qla2x00_async_adisc_sp_done(srb_t *sp, int res)
|
||||
ea.fcport = sp->fcport;
|
||||
ea.sp = sp;
|
||||
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_adisc_event(vha, &ea);
|
||||
|
||||
sp->free(sp);
|
||||
}
|
||||
@@ -953,7 +951,6 @@ static void qla24xx_async_gnl_sp_done(srb_t *sp, int res)
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.sp = sp;
|
||||
ea.rc = res;
|
||||
ea.event = FCME_GNL_DONE;
|
||||
|
||||
if (sp->u.iocb_cmd.u.mbx.in_mb[1] >=
|
||||
sizeof(struct get_name_list_extended)) {
|
||||
@@ -992,7 +989,7 @@ static void qla24xx_async_gnl_sp_done(srb_t *sp, int res)
|
||||
spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
|
||||
ea.fcport = fcport;
|
||||
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_gnl_done_event(vha, &ea);
|
||||
}
|
||||
|
||||
/* create new fcport if fw has knowledge of new sessions */
|
||||
@@ -1136,11 +1133,10 @@ static void qla24xx_async_gpdb_sp_done(srb_t *sp, int res)
|
||||
|
||||
fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE);
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.event = FCME_GPDB_DONE;
|
||||
ea.fcport = fcport;
|
||||
ea.sp = sp;
|
||||
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_gpdb_event(vha, &ea);
|
||||
|
||||
dma_pool_free(ha->s_dma_pool, sp->u.iocb_cmd.u.mbx.in,
|
||||
sp->u.iocb_cmd.u.mbx.in_dma);
|
||||
@@ -1174,7 +1170,6 @@ static void qla2x00_async_prli_sp_done(srb_t *sp, int res)
|
||||
|
||||
if (!test_bit(UNLOADING, &vha->dpc_flags)) {
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.event = FCME_PRLI_DONE;
|
||||
ea.fcport = sp->fcport;
|
||||
ea.data[0] = lio->u.logio.data[0];
|
||||
ea.data[1] = lio->u.logio.data[1];
|
||||
@@ -1182,7 +1177,7 @@ static void qla2x00_async_prli_sp_done(srb_t *sp, int res)
|
||||
ea.iop[1] = lio->u.logio.iop[1];
|
||||
ea.sp = sp;
|
||||
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_prli_done_event(vha, &ea);
|
||||
}
|
||||
|
||||
sp->free(sp);
|
||||
@@ -1645,12 +1640,34 @@ int qla24xx_post_newsess_work(struct scsi_qla_host *vha, port_id_t *id,
|
||||
return qla2x00_post_work(vha, e);
|
||||
}
|
||||
|
||||
static
|
||||
void qla2x00_handle_rscn(scsi_qla_host_t *vha, struct event_arg *ea)
|
||||
{
|
||||
fc_port_t *fcport;
|
||||
unsigned long flags;
|
||||
|
||||
fcport = qla2x00_find_fcport_by_nportid(vha, &ea->id, 1);
|
||||
if (fcport) {
|
||||
fcport->scan_needed = 1;
|
||||
fcport->rscn_gen++;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&vha->work_lock, flags);
|
||||
if (vha->scan.scan_flags == 0) {
|
||||
ql_dbg(ql_dbg_disc, vha, 0xffff, "%s: schedule\n", __func__);
|
||||
vha->scan.scan_flags |= SF_QUEUED;
|
||||
schedule_delayed_work(&vha->scan.scan_work, 5);
|
||||
}
|
||||
spin_unlock_irqrestore(&vha->work_lock, flags);
|
||||
}
|
||||
|
||||
void qla24xx_handle_relogin_event(scsi_qla_host_t *vha,
|
||||
struct event_arg *ea)
|
||||
{
|
||||
fc_port_t *fcport = ea->fcport;
|
||||
|
||||
if (test_bit(UNLOADING, &vha->dpc_flags))
|
||||
return;
|
||||
|
||||
ql_dbg(ql_dbg_disc, vha, 0x2102,
|
||||
"%s %s DS %d LS %d P %d del %d cnfl %p rscn %d|%d login %d|%d fl %x\n",
|
||||
__func__, wwn_to_str(fcport->port_name), fcport->disc_state,
|
||||
@@ -1781,10 +1798,9 @@ void qla_rscn_replay(fc_port_t *fcport)
|
||||
|
||||
if (fcport->scan_needed) {
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.event = FCME_RSCN;
|
||||
ea.id = fcport->d_id;
|
||||
ea.id.b.rsvd_1 = RSCN_PORT_ADDR;
|
||||
qla2x00_fcport_event_handler(fcport->vha, &ea);
|
||||
qla2x00_handle_rscn(fcport->vha, &ea);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1938,7 +1954,7 @@ qla24xx_handle_prli_done_event(struct scsi_qla_host *vha, struct event_arg *ea)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
qla24xx_handle_plogi_done_event(struct scsi_qla_host *vha, struct event_arg *ea)
|
||||
{
|
||||
port_id_t cid; /* conflict Nport id */
|
||||
|
||||
@@ -2762,8 +2762,7 @@ static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res)
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.fcport = fcport;
|
||||
ea.rc = res;
|
||||
ea.event = FCME_ELS_PLOGI_DONE;
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_plogi_done_event(vha, &ea);
|
||||
}
|
||||
|
||||
e = qla2x00_alloc_work(vha, QLA_EVT_UNMAP);
|
||||
|
||||
@@ -1130,10 +1130,9 @@ global_port_update:
|
||||
struct event_arg ea;
|
||||
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.event = FCME_RSCN;
|
||||
ea.id.b24 = rscn_entry;
|
||||
ea.id.b.rsvd_1 = rscn_entry >> 24;
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla2x00_handle_rscn(vha, &ea);
|
||||
qla2x00_post_aen_work(vha, FCH_EVT_RSCN, rscn_entry);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -5376,9 +5376,8 @@ void qla2x00_relogin(struct scsi_qla_host *vha)
|
||||
} else {
|
||||
if (vha->hw->current_topology != ISP_CFG_NL) {
|
||||
memset(&ea, 0, sizeof(ea));
|
||||
ea.event = FCME_RELOGIN;
|
||||
ea.fcport = fcport;
|
||||
qla2x00_fcport_event_handler(vha, &ea);
|
||||
qla24xx_handle_relogin_event(vha, &ea);
|
||||
} else if (vha->hw->current_topology ==
|
||||
ISP_CFG_NL) {
|
||||
fcport->login_retry--;
|
||||
|
||||
Reference in New Issue
Block a user