From: Armen Baloyan <[email protected]>

Signed-off-by: Armen Baloyan <[email protected]>
Signed-off-by: Saurav Kashyap <[email protected]>
---
 drivers/scsi/qla2xxx/qla_mr.c |    5 ++---
 drivers/scsi/qla2xxx/qla_mr.h |    3 +++
 drivers/scsi/qla2xxx/qla_os.c |   10 +++++++---
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_mr.c b/drivers/scsi/qla2xxx/qla_mr.c
index 27b8af8..f4c5d74 100644
--- a/drivers/scsi/qla2xxx/qla_mr.c
+++ b/drivers/scsi/qla2xxx/qla_mr.c
@@ -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,
                    sizeof(vha->hw->mr.fru_serial_num));
                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) {
                struct port_info_data *pinfo =
                    (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;
        response_t *lptr;
 
-       if (!vha->flags.online)
-               return;
-
        while (RD_REG_DWORD((void __iomem *)&(rsp->ring_ptr->signature)) !=
            RESPONSE_PROCESSED) {
                lptr = rsp->ring_ptr;
diff --git a/drivers/scsi/qla2xxx/qla_mr.h b/drivers/scsi/qla2xxx/qla_mr.h
index 982f7d3..772860b 100644
--- a/drivers/scsi/qla2xxx/qla_mr.h
+++ b/drivers/scsi/qla2xxx/qla_mr.h
@@ -510,8 +510,11 @@ struct mr_data_fx00 {
        uint16_t fw_critemp_timer_tick;
        uint32_t old_aenmbx0_state;
        uint32_t critical_temperature;
+       bool extended_io_enabled;
 };
 
+#define QLAFX00_EXTENDED_IO_EN_MASK    0x20
+
 /*
  * SoC Junction Temperature is stored in
  * bits 9:1 of SoC Junction Temperature Register
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 7a81ede..e1808b9 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2876,6 +2876,13 @@ skip_dpc:
 
        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);
        if (ret)
                goto probe_failed;
@@ -2896,9 +2903,6 @@ skip_dpc:
 
        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,
                        &base_vha->hw->mr.fcport, FXDISC_GET_PORT_INFO);
 
                /* Register system information */
-- 
1.7.7

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to