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

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

Signed-off-by: default avatarArmen Baloyan <armen.baloyan@qlogic.com>
Signed-off-by: default avatarSaurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent fabbb8df
...@@ -1956,6 +1956,8 @@ qlafx00_fx_disc(scsi_qla_host_t *vha, fc_port_t *fcport, uint16_t fx_type) ...@@ -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, ...@@ -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;
......
...@@ -510,8 +510,11 @@ struct mr_data_fx00 { ...@@ -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
......
...@@ -2876,6 +2876,13 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -2876,6 +2876,13 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
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 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -2895,9 +2902,6 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment