Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 982cc4be authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen
Browse files

scsi: qla2xxx: Use an on-stack completion in qla24xx_control_vp()



This patch reduces the size of struct srb.

Cc: Himanshu Madhani <hmadhani@marvell.com>
Cc: Giridhar Malavali <gmalavali@marvell.com>
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Acked-by: default avatarHimanshu Madhani <hmadhani@marvell.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 1956eee5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -545,7 +545,7 @@ typedef struct srb {
	u32 gen2;	/* scratch */
	int rc;
	int retry_count;
	struct completion comp;
	struct completion *comp;
	wait_queue_head_t *cwaitq;
	union {
		struct srb_iocb iocb_cmd;
+0 −1
Original line number Diff line number Diff line
@@ -2570,7 +2570,6 @@ void qla2x00_init_timer(srb_t *sp, unsigned long tmo)
	timer_setup(&sp->u.iocb_cmd.timer, qla2x00_sp_timeout, 0);
	sp->u.iocb_cmd.timer.expires = jiffies + tmo * HZ;
	sp->free = qla2x00_sp_free;
	init_completion(&sp->comp);
	if (IS_QLAFX00(sp->vha->hw) && sp->type == SRB_FXIOCB_DCMD)
		init_completion(&sp->u.iocb_cmd.u.fxiocb.fxiocb_comp);
	add_timer(&sp->u.iocb_cmd.timer);
+7 −2
Original line number Diff line number Diff line
@@ -905,7 +905,8 @@ static void qla_ctrlvp_sp_done(void *s, int res)
{
	struct srb *sp = s;

	complete(&sp->comp);
	if (sp->comp)
		complete(sp->comp);
	/* don't free sp here. Let the caller do the free */
}

@@ -922,6 +923,7 @@ int qla24xx_control_vp(scsi_qla_host_t *vha, int cmd)
	struct qla_hw_data *ha = vha->hw;
	int	vp_index = vha->vp_idx;
	struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
	DECLARE_COMPLETION_ONSTACK(comp);
	srb_t *sp;

	ql_dbg(ql_dbg_vport, vha, 0x10c1,
@@ -936,6 +938,7 @@ int qla24xx_control_vp(scsi_qla_host_t *vha, int cmd)

	sp->type = SRB_CTRL_VP;
	sp->name = "ctrl_vp";
	sp->comp = &comp;
	sp->done = qla_ctrlvp_sp_done;
	sp->u.iocb_cmd.timeout = qla2x00_async_iocb_timeout;
	qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
@@ -953,7 +956,9 @@ int qla24xx_control_vp(scsi_qla_host_t *vha, int cmd)
	ql_dbg(ql_dbg_vport, vha, 0x113f, "%s hndl %x submitted\n",
	    sp->name, sp->handle);

	wait_for_completion(&sp->comp);
	wait_for_completion(&comp);
	sp->comp = NULL;

	rval = sp->rc;
	switch (rval) {
	case QLA_FUNCTION_TIMEOUT: