[SCSI] qla2xxx: Add changes to support extended IOs for ISPFX00
Signed-off-by: Armen Baloyan <armen.baloyan@qlogic.com> Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Родитель
fabbb8df8e
Коммит
1fe19ee488
|
@ -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;
|
||||||
|
|
|
@ -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 @@ 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);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче