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

Commit 444786d7 authored by Andrew Vasquez's avatar Andrew Vasquez Committed by James Bottomley
Browse files

[SCSI] qla2xxx: Use proper request/response queues with MQ instantiations.



Original code would inadvertanly place I/Os on the default
request-queue.  Also, correctly pass in the proper MSI-X vector
during response-queue initialization.

Signed-off-by: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent d63ab533
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -187,7 +187,6 @@ struct req_que;
 * SCSI Request Block
 */
typedef struct srb {
	struct scsi_qla_host *vha;	/* HA the SP is queued on */
	struct req_que *que;
	struct fc_port *fcport;

+5 −7
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ void qla2x00_build_scsi_iocbs_32(srb_t *sp, cmd_entry_t *cmd_pkt,
		return;
	}

	vha = sp->vha;
	vha = sp->fcport->vha;
	req = sp->que;

	cmd_pkt->control_flags |= cpu_to_le16(qla2x00_get_cmd_direction(sp));
@@ -234,7 +234,7 @@ void qla2x00_build_scsi_iocbs_64(srb_t *sp, cmd_entry_t *cmd_pkt,
		return;
	}

	vha = sp->vha;
	vha = sp->fcport->vha;
	req = sp->que;

	cmd_pkt->control_flags |= cpu_to_le16(qla2x00_get_cmd_direction(sp));
@@ -294,7 +294,7 @@ qla2x00_start_scsi(srb_t *sp)

	/* Setup device pointers. */
	ret = 0;
	vha = sp->vha;
	vha = sp->fcport->vha;
	ha = vha->hw;
	reg = &ha->iobase->isp;
	cmd = sp->cmd;
@@ -353,7 +353,6 @@ qla2x00_start_scsi(srb_t *sp)
	/* Build command packet */
	req->current_outstanding_cmd = handle;
	req->outstanding_cmds[handle] = sp;
	sp->vha = vha;
	sp->que = req;
	sp->cmd->host_scribble = (unsigned char *)(unsigned long)handle;
	req->cnt -= req_cnt;
@@ -656,7 +655,7 @@ qla24xx_build_scsi_iocbs(srb_t *sp, struct cmd_type_7 *cmd_pkt,
		return;
	}

	vha = sp->vha;
	vha = sp->fcport->vha;
	req = sp->que;

	/* Set transfer direction */
@@ -723,7 +722,7 @@ qla24xx_start_scsi(srb_t *sp)
	struct req_que *req = NULL;
	struct rsp_que *rsp = NULL;
	struct scsi_cmnd *cmd = sp->cmd;
	struct scsi_qla_host *vha = sp->vha;
	struct scsi_qla_host *vha = sp->fcport->vha;
	struct qla_hw_data *ha = vha->hw;
	uint16_t que_id;

@@ -791,7 +790,6 @@ qla24xx_start_scsi(srb_t *sp)
	/* Build command packet. */
	req->current_outstanding_cmd = handle;
	req->outstanding_cmds[handle] = sp;
	sp->vha = vha;
	sp->cmd->host_scribble = (unsigned char *)(unsigned long)handle;
	req->cnt -= req_cnt;

+1 −1
Original line number Diff line number Diff line
@@ -2026,7 +2026,7 @@ qla2x00_get_rsp_host(struct rsp_que *rsp)
		if (pkt && pkt->handle < MAX_OUTSTANDING_COMMANDS) {
			sp = req->outstanding_cmds[pkt->handle];
			if (sp)
				vha = sp->vha;
				vha = sp->fcport->vha;
		}
	}
	if (!vha)
+1 −1
Original line number Diff line number Diff line
@@ -3145,7 +3145,7 @@ qla25xx_init_rsp_que(struct scsi_qla_host *vha, struct rsp_que *rsp,
	mcp->mb[7] = LSW(MSD(rsp->dma));
	mcp->mb[5] = rsp->length;
	mcp->mb[11] = rsp->vp_idx;
	mcp->mb[14] = rsp->msix->vector;
	mcp->mb[14] = rsp->msix->entry;
	mcp->mb[13] = rsp->rid;

	reg = (struct device_reg_25xxmq *)((void *)(ha->mqiobase) +
+3 −1
Original line number Diff line number Diff line
@@ -614,8 +614,10 @@ qla25xx_create_req_que(struct qla_hw_data *ha, uint16_t options,
	req->vp_idx = vp_idx;
	req->qos = qos;

	if (ha->rsp_q_map[rsp_que])
	if (ha->rsp_q_map[rsp_que]) {
		req->rsp = ha->rsp_q_map[rsp_que];
		req->rsp->req = req;
	}
	/* Use alternate PCI bus number */
	if (MSB(req->rid))
		options |= BIT_4;
Loading