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

Commit 1fe19ee4 authored by Armen Baloyan's avatar Armen Baloyan Committed by James Bottomley
Browse files

[SCSI] qla2xxx: Add changes to support extended IOs for ISPFX00

parent fabbb8df
Loading
Loading
Loading
Loading
+2 −3
Original line number Original line Diff line number Diff line
@@ -1956,6 +1956,8 @@ qlafx00_fx_disc(scsi_qla_host_t *vha, fc_port_t *fcport, uint16_t fx_type)
		memcpy(&vha->hw->mr.fru_serial_num, pinfo->fru_serial_num,
		memcpy(&vha->hw->mr.fru_serial_num, pinfo->fru_serial_num,
		    sizeof(vha->hw->mr.fru_serial_num));
		    sizeof(vha->hw->mr.fru_serial_num));
		vha->hw->mr.critical_temperature = pinfo->nominal_temp_value;
		vha->hw->mr.critical_temperature = pinfo->nominal_temp_value;
		ha->mr.extended_io_enabled = (pinfo->enabled_capabilities &
		    QLAFX00_EXTENDED_IO_EN_MASK) != 0;
	} else if (fx_type == FXDISC_GET_PORT_INFO) {
	} else if (fx_type == FXDISC_GET_PORT_INFO) {
		struct port_info_data *pinfo =
		struct port_info_data *pinfo =
		    (struct port_info_data *) fdisc->u.fxiocb.rsp_addr;
		    (struct port_info_data *) fdisc->u.fxiocb.rsp_addr;
@@ -2799,9 +2801,6 @@ qlafx00_process_response_queue(struct scsi_qla_host *vha,
	struct sts_entry_fx00 *pkt;
	struct sts_entry_fx00 *pkt;
	response_t *lptr;
	response_t *lptr;


	if (!vha->flags.online)
		return;

	while (RD_REG_DWORD((void __iomem *)&(rsp->ring_ptr->signature)) !=
	while (RD_REG_DWORD((void __iomem *)&(rsp->ring_ptr->signature)) !=
	    RESPONSE_PROCESSED) {
	    RESPONSE_PROCESSED) {
		lptr = rsp->ring_ptr;
		lptr = rsp->ring_ptr;
+3 −0
Original line number Original line Diff line number Diff line
@@ -510,8 +510,11 @@ struct mr_data_fx00 {
	uint16_t fw_critemp_timer_tick;
	uint16_t fw_critemp_timer_tick;
	uint32_t old_aenmbx0_state;
	uint32_t old_aenmbx0_state;
	uint32_t critical_temperature;
	uint32_t critical_temperature;
	bool extended_io_enabled;
};
};


#define QLAFX00_EXTENDED_IO_EN_MASK    0x20

/*
/*
 * SoC Junction Temperature is stored in
 * SoC Junction Temperature is stored in
 * bits 9:1 of SoC Junction Temperature Register
 * bits 9:1 of SoC Junction Temperature Register
+7 −3
Original line number Original line Diff line number Diff line
@@ -2876,6 +2876,13 @@ skip_dpc:


	ha->isp_ops->enable_intrs(ha);
	ha->isp_ops->enable_intrs(ha);


	if (IS_QLAFX00(ha)) {
		ret = qlafx00_fx_disc(base_vha,
			&base_vha->hw->mr.fcport, FXDISC_GET_CONFIG_INFO);
		host->sg_tablesize = (ha->mr.extended_io_enabled) ?
		    QLA_SG_ALL : 128;
	}

	ret = scsi_add_host(host, &pdev->dev);
	ret = scsi_add_host(host, &pdev->dev);
	if (ret)
	if (ret)
		goto probe_failed;
		goto probe_failed;
@@ -2895,9 +2902,6 @@ skip_dpc:
	qla2x00_alloc_sysfs_attr(base_vha);
	qla2x00_alloc_sysfs_attr(base_vha);


	if (IS_QLAFX00(ha)) {
	if (IS_QLAFX00(ha)) {
		ret = qlafx00_fx_disc(base_vha,
			&base_vha->hw->mr.fcport, FXDISC_GET_CONFIG_INFO);

		ret = qlafx00_fx_disc(base_vha,
		ret = qlafx00_fx_disc(base_vha,
			&base_vha->hw->mr.fcport, FXDISC_GET_PORT_INFO);
			&base_vha->hw->mr.fcport, FXDISC_GET_PORT_INFO);