aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_gbl.h1
-rw-r--r--drivers/scsi/qla2xxx/qla_gs.c24
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c76
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c15
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c12
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c59
-rw-r--r--drivers/scsi/qla2xxx/qla_version.h2
8 files changed, 107 insertions, 84 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index e83e4a34725a..05f4f2a378eb 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -1602,6 +1602,7 @@ typedef struct fc_port {
1602 1602
1603#define CT_REJECT_RESPONSE 0x8001 1603#define CT_REJECT_RESPONSE 0x8001
1604#define CT_ACCEPT_RESPONSE 0x8002 1604#define CT_ACCEPT_RESPONSE 0x8002
1605#define CT_REASON_INVALID_COMMAND_CODE 0x01
1605#define CT_REASON_CANNOT_PERFORM 0x09 1606#define CT_REASON_CANNOT_PERFORM 0x09
1606#define CT_EXPL_ALREADY_REGISTERED 0x10 1607#define CT_EXPL_ALREADY_REGISTERED 0x10
1607 1608
@@ -2103,6 +2104,7 @@ typedef struct scsi_qla_host {
2103 uint32_t msi_enabled :1; 2104 uint32_t msi_enabled :1;
2104 uint32_t msix_enabled :1; 2105 uint32_t msix_enabled :1;
2105 uint32_t disable_serdes :1; 2106 uint32_t disable_serdes :1;
2107 uint32_t gpsc_supported :1;
2106 } flags; 2108 } flags;
2107 2109
2108 atomic_t loop_state; 2110 atomic_t loop_state;
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index f8bddec4fe85..74544ae4b0e2 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -45,7 +45,6 @@ extern void qla2x00_update_fcports(scsi_qla_host_t *);
45extern int qla2x00_abort_isp(scsi_qla_host_t *); 45extern int qla2x00_abort_isp(scsi_qla_host_t *);
46 46
47extern void qla2x00_update_fcport(scsi_qla_host_t *, fc_port_t *); 47extern void qla2x00_update_fcport(scsi_qla_host_t *, fc_port_t *);
48extern void qla2x00_reg_remote_port(scsi_qla_host_t *, fc_port_t *);
49 48
50extern void qla2x00_alloc_fw_dump(scsi_qla_host_t *); 49extern void qla2x00_alloc_fw_dump(scsi_qla_host_t *);
51extern void qla2x00_try_to_stop_firmware(scsi_qla_host_t *); 50extern void qla2x00_try_to_stop_firmware(scsi_qla_host_t *);
diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
index 97fbc62ec669..ec5b2dd90d6a 100644
--- a/drivers/scsi/qla2xxx/qla_gs.c
+++ b/drivers/scsi/qla2xxx/qla_gs.c
@@ -127,8 +127,8 @@ qla2x00_chk_ms_status(scsi_qla_host_t *ha, ms_iocb_entry_t *ms_pkt,
127 ha->host_no, routine, ms_pkt->entry_status)); 127 ha->host_no, routine, ms_pkt->entry_status));
128 } else { 128 } else {
129 if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) 129 if (IS_QLA24XX(ha) || IS_QLA54XX(ha))
130 comp_status = 130 comp_status = le16_to_cpu(
131 ((struct ct_entry_24xx *)ms_pkt)->comp_status; 131 ((struct ct_entry_24xx *)ms_pkt)->comp_status);
132 else 132 else
133 comp_status = le16_to_cpu(ms_pkt->status); 133 comp_status = le16_to_cpu(ms_pkt->status);
134 switch (comp_status) { 134 switch (comp_status) {
@@ -143,6 +143,7 @@ qla2x00_chk_ms_status(scsi_qla_host_t *ha, ms_iocb_entry_t *ms_pkt,
143 DEBUG2_3(qla2x00_dump_buffer( 143 DEBUG2_3(qla2x00_dump_buffer(
144 (uint8_t *)&ct_rsp->header, 144 (uint8_t *)&ct_rsp->header,
145 sizeof(struct ct_rsp_hdr))); 145 sizeof(struct ct_rsp_hdr)));
146 rval = QLA_INVALID_COMMAND;
146 } else 147 } else
147 rval = QLA_SUCCESS; 148 rval = QLA_SUCCESS;
148 break; 149 break;
@@ -1683,7 +1684,7 @@ qla2x00_gfpn_id(scsi_qla_host_t *ha, sw_info_t *list)
1683 memset(list[i].fabric_port_name, 0, WWN_SIZE); 1684 memset(list[i].fabric_port_name, 0, WWN_SIZE);
1684 1685
1685 /* Prepare common MS IOCB */ 1686 /* Prepare common MS IOCB */
1686 ms_pkt = qla2x00_prep_ms_iocb(ha, GFPN_ID_REQ_SIZE, 1687 ms_pkt = ha->isp_ops.prep_ms_iocb(ha, GFPN_ID_REQ_SIZE,
1687 GFPN_ID_RSP_SIZE); 1688 GFPN_ID_RSP_SIZE);
1688 1689
1689 /* Prepare CT request */ 1690 /* Prepare CT request */
@@ -1784,6 +1785,8 @@ qla2x00_gpsc(scsi_qla_host_t *ha, sw_info_t *list)
1784 1785
1785 if (!IS_QLA24XX(ha) && !IS_QLA54XX(ha)) 1786 if (!IS_QLA24XX(ha) && !IS_QLA54XX(ha))
1786 return QLA_FUNCTION_FAILED; 1787 return QLA_FUNCTION_FAILED;
1788 if (!ha->flags.gpsc_supported)
1789 return QLA_FUNCTION_FAILED;
1787 1790
1788 rval = qla2x00_mgmt_svr_login(ha); 1791 rval = qla2x00_mgmt_svr_login(ha);
1789 if (rval) 1792 if (rval)
@@ -1813,8 +1816,19 @@ qla2x00_gpsc(scsi_qla_host_t *ha, sw_info_t *list)
1813 /*EMPTY*/ 1816 /*EMPTY*/
1814 DEBUG2_3(printk("scsi(%ld): GPSC issue IOCB " 1817 DEBUG2_3(printk("scsi(%ld): GPSC issue IOCB "
1815 "failed (%d).\n", ha->host_no, rval)); 1818 "failed (%d).\n", ha->host_no, rval));
1816 } else if (qla2x00_chk_ms_status(ha, ms_pkt, ct_rsp, 1819 } else if ((rval = qla2x00_chk_ms_status(ha, ms_pkt, ct_rsp,
1817 "GPSC") != QLA_SUCCESS) { 1820 "GPSC")) != QLA_SUCCESS) {
1821 /* FM command unsupported? */
1822 if (rval == QLA_INVALID_COMMAND &&
1823 ct_rsp->header.reason_code ==
1824 CT_REASON_INVALID_COMMAND_CODE) {
1825 DEBUG2(printk("scsi(%ld): GPSC command "
1826 "unsupported, disabling query...\n",
1827 ha->host_no));
1828 ha->flags.gpsc_supported = 0;
1829 rval = QLA_FUNCTION_FAILED;
1830 break;
1831 }
1818 rval = QLA_FUNCTION_FAILED; 1832 rval = QLA_FUNCTION_FAILED;
1819 } else { 1833 } else {
1820 /* Save portname */ 1834 /* Save portname */
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index ef87d81935d2..98c01cd5e1a8 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -2065,40 +2065,7 @@ qla2x00_iidma_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
2065 } 2065 }
2066} 2066}
2067 2067
2068/* 2068static void
2069 * qla2x00_update_fcport
2070 * Updates device on list.
2071 *
2072 * Input:
2073 * ha = adapter block pointer.
2074 * fcport = port structure pointer.
2075 *
2076 * Return:
2077 * 0 - Success
2078 * BIT_0 - error
2079 *
2080 * Context:
2081 * Kernel context.
2082 */
2083void
2084qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
2085{
2086 fcport->ha = ha;
2087 fcport->login_retry = 0;
2088 fcport->port_login_retry_count = ha->port_down_retry_count *
2089 PORT_RETRY_TIME;
2090 atomic_set(&fcport->port_down_timer, ha->port_down_retry_count *
2091 PORT_RETRY_TIME);
2092 fcport->flags &= ~FCF_LOGIN_NEEDED;
2093
2094 qla2x00_iidma_fcport(ha, fcport);
2095
2096 atomic_set(&fcport->state, FCS_ONLINE);
2097
2098 qla2x00_reg_remote_port(ha, fcport);
2099}
2100
2101void
2102qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport) 2069qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport)
2103{ 2070{
2104 struct fc_rport_identifiers rport_ids; 2071 struct fc_rport_identifiers rport_ids;
@@ -2141,6 +2108,39 @@ qla2x00_reg_remote_port(scsi_qla_host_t *ha, fc_port_t *fcport)
2141} 2108}
2142 2109
2143/* 2110/*
2111 * qla2x00_update_fcport
2112 * Updates device on list.
2113 *
2114 * Input:
2115 * ha = adapter block pointer.
2116 * fcport = port structure pointer.
2117 *
2118 * Return:
2119 * 0 - Success
2120 * BIT_0 - error
2121 *
2122 * Context:
2123 * Kernel context.
2124 */
2125void
2126qla2x00_update_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
2127{
2128 fcport->ha = ha;
2129 fcport->login_retry = 0;
2130 fcport->port_login_retry_count = ha->port_down_retry_count *
2131 PORT_RETRY_TIME;
2132 atomic_set(&fcport->port_down_timer, ha->port_down_retry_count *
2133 PORT_RETRY_TIME);
2134 fcport->flags &= ~FCF_LOGIN_NEEDED;
2135
2136 qla2x00_iidma_fcport(ha, fcport);
2137
2138 atomic_set(&fcport->state, FCS_ONLINE);
2139
2140 qla2x00_reg_remote_port(ha, fcport);
2141}
2142
2143/*
2144 * qla2x00_configure_fabric 2144 * qla2x00_configure_fabric
2145 * Setup SNS devices with loop ID's. 2145 * Setup SNS devices with loop ID's.
2146 * 2146 *
@@ -3380,9 +3380,11 @@ qla24xx_nvram_config(scsi_qla_host_t *ha)
3380 3380
3381 /* Set host adapter parameters. */ 3381 /* Set host adapter parameters. */
3382 ha->flags.disable_risc_code_load = 0; 3382 ha->flags.disable_risc_code_load = 0;
3383 ha->flags.enable_lip_reset = 1; 3383 ha->flags.enable_lip_reset = 0;
3384 ha->flags.enable_lip_full_login = 1; 3384 ha->flags.enable_lip_full_login =
3385 ha->flags.enable_target_reset = 1; 3385 le32_to_cpu(nv->host_p) & BIT_10 ? 1: 0;
3386 ha->flags.enable_target_reset =
3387 le32_to_cpu(nv->host_p) & BIT_11 ? 1: 0;
3386 ha->flags.enable_led_scheme = 0; 3388 ha->flags.enable_led_scheme = 0;
3387 ha->flags.disable_serdes = le32_to_cpu(nv->host_p) & BIT_5 ? 1: 0; 3389 ha->flags.disable_serdes = le32_to_cpu(nv->host_p) & BIT_5 ? 1: 0;
3388 3390
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index c948a8ce7232..d4885616cd39 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -130,11 +130,11 @@ qla2300_intr_handler(int irq, void *dev_id)
130 if (stat & HSR_RISC_PAUSED) { 130 if (stat & HSR_RISC_PAUSED) {
131 hccr = RD_REG_WORD(&reg->hccr); 131 hccr = RD_REG_WORD(&reg->hccr);
132 if (hccr & (BIT_15 | BIT_13 | BIT_11 | BIT_8)) 132 if (hccr & (BIT_15 | BIT_13 | BIT_11 | BIT_8))
133 qla_printk(KERN_INFO, ha, 133 qla_printk(KERN_INFO, ha, "Parity error -- "
134 "Parity error -- HCCR=%x.\n", hccr); 134 "HCCR=%x, Dumping firmware!\n", hccr);
135 else 135 else
136 qla_printk(KERN_INFO, ha, 136 qla_printk(KERN_INFO, ha, "RISC paused -- "
137 "RISC paused -- HCCR=%x.\n", hccr); 137 "HCCR=%x, Dumping firmware!\n", hccr);
138 138
139 /* 139 /*
140 * Issue a "HARD" reset in order for the RISC 140 * Issue a "HARD" reset in order for the RISC
@@ -143,6 +143,8 @@ qla2300_intr_handler(int irq, void *dev_id)
143 */ 143 */
144 WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC); 144 WRT_REG_WORD(&reg->hccr, HCCR_RESET_RISC);
145 RD_REG_WORD(&reg->hccr); 145 RD_REG_WORD(&reg->hccr);
146
147 ha->isp_ops.fw_dump(ha, 1);
146 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 148 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
147 break; 149 break;
148 } else if ((stat & HSR_RISC_INT) == 0) 150 } else if ((stat & HSR_RISC_INT) == 0)
@@ -467,6 +469,8 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
467 set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags); 469 set_bit(RESET_MARKER_NEEDED, &ha->dpc_flags);
468 } 470 }
469 set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags); 471 set_bit(REGISTER_FC4_NEEDED, &ha->dpc_flags);
472
473 ha->flags.gpsc_supported = 1;
470 break; 474 break;
471 475
472 case MBA_CHG_IN_CONNECTION: /* Change in connection mode */ 476 case MBA_CHG_IN_CONNECTION: /* Change in connection mode */
@@ -1444,8 +1448,7 @@ qla24xx_intr_handler(int irq, void *dev_id)
1444 1448
1445 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, " 1449 qla_printk(KERN_INFO, ha, "RISC paused -- HCCR=%x, "
1446 "Dumping firmware!\n", hccr); 1450 "Dumping firmware!\n", hccr);
1447 qla24xx_fw_dump(ha, 1); 1451 ha->isp_ops.fw_dump(ha, 1);
1448
1449 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags); 1452 set_bit(ISP_ABORT_NEEDED, &ha->dpc_flags);
1450 break; 1453 break;
1451 } else if ((stat & HSRX_RISC_INT) == 0) 1454 } else if ((stat & HSRX_RISC_INT) == 0)
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index c6f0cdf4cdc4..83376f6ac3db 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -1323,9 +1323,9 @@ qla2x00_lip_reset(scsi_qla_host_t *ha)
1323 1323
1324 if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) { 1324 if (IS_QLA24XX(ha) || IS_QLA54XX(ha)) {
1325 mcp->mb[0] = MBC_LIP_FULL_LOGIN; 1325 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
1326 mcp->mb[1] = BIT_0; 1326 mcp->mb[1] = BIT_6;
1327 mcp->mb[2] = 0xff; 1327 mcp->mb[2] = 0;
1328 mcp->mb[3] = 0; 1328 mcp->mb[3] = ha->loop_reset_delay;
1329 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1329 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1330 } else { 1330 } else {
1331 mcp->mb[0] = MBC_LIP_RESET; 1331 mcp->mb[0] = MBC_LIP_RESET;
@@ -1807,8 +1807,8 @@ qla2x00_full_login_lip(scsi_qla_host_t *ha)
1807 ha->host_no)); 1807 ha->host_no));
1808 1808
1809 mcp->mb[0] = MBC_LIP_FULL_LOGIN; 1809 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
1810 mcp->mb[1] = 0; 1810 mcp->mb[1] = IS_QLA24XX(ha) || IS_QLA54XX(ha) ? BIT_3: 0;
1811 mcp->mb[2] = 0xff; 1811 mcp->mb[2] = 0;
1812 mcp->mb[3] = 0; 1812 mcp->mb[3] = 0;
1813 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0; 1813 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1814 mcp->in_mb = MBX_0; 1814 mcp->in_mb = MBX_0;
@@ -2470,7 +2470,7 @@ qla2x00_trace_control(scsi_qla_host_t *ha, uint16_t ctrl, dma_addr_t eft_dma,
2470 mcp->mb[4] = LSW(MSD(eft_dma)); 2470 mcp->mb[4] = LSW(MSD(eft_dma));
2471 mcp->mb[5] = MSW(MSD(eft_dma)); 2471 mcp->mb[5] = MSW(MSD(eft_dma));
2472 mcp->mb[6] = buffers; 2472 mcp->mb[6] = buffers;
2473 mcp->mb[7] = buffers; 2473 mcp->mb[7] = 0;
2474 mcp->out_mb |= MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2; 2474 mcp->out_mb |= MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2;
2475 } 2475 }
2476 mcp->tov = 30; 2476 mcp->tov = 30;
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 6f161d3f661b..68f5d24b938b 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -1037,48 +1037,49 @@ eh_host_reset_lock:
1037static int 1037static int
1038qla2x00_loop_reset(scsi_qla_host_t *ha) 1038qla2x00_loop_reset(scsi_qla_host_t *ha)
1039{ 1039{
1040 int status = QLA_SUCCESS; 1040 int ret;
1041 struct fc_port *fcport; 1041 struct fc_port *fcport;
1042 1042
1043 if (ha->flags.enable_lip_full_login) {
1044 ret = qla2x00_full_login_lip(ha);
1045 if (ret != QLA_SUCCESS) {
1046 DEBUG2_3(printk("%s(%ld): bus_reset failed: "
1047 "full_login_lip=%d.\n", __func__, ha->host_no,
1048 ret));
1049 }
1050 atomic_set(&ha->loop_state, LOOP_DOWN);
1051 atomic_set(&ha->loop_down_timer, LOOP_DOWN_TIME);
1052 qla2x00_mark_all_devices_lost(ha, 0);
1053 qla2x00_wait_for_loop_ready(ha);
1054 }
1055
1043 if (ha->flags.enable_lip_reset) { 1056 if (ha->flags.enable_lip_reset) {
1044 status = qla2x00_lip_reset(ha); 1057 ret = qla2x00_lip_reset(ha);
1058 if (ret != QLA_SUCCESS) {
1059 DEBUG2_3(printk("%s(%ld): bus_reset failed: "
1060 "lip_reset=%d.\n", __func__, ha->host_no, ret));
1061 }
1062 qla2x00_wait_for_loop_ready(ha);
1045 } 1063 }
1046 1064
1047 if (status == QLA_SUCCESS && ha->flags.enable_target_reset) { 1065 if (ha->flags.enable_target_reset) {
1048 list_for_each_entry(fcport, &ha->fcports, list) { 1066 list_for_each_entry(fcport, &ha->fcports, list) {
1049 if (fcport->port_type != FCT_TARGET) 1067 if (fcport->port_type != FCT_TARGET)
1050 continue; 1068 continue;
1051 1069
1052 status = qla2x00_device_reset(ha, fcport); 1070 ret = qla2x00_device_reset(ha, fcport);
1053 if (status != QLA_SUCCESS) 1071 if (ret != QLA_SUCCESS) {
1054 break; 1072 DEBUG2_3(printk("%s(%ld): bus_reset failed: "
1073 "target_reset=%d d_id=%x.\n", __func__,
1074 ha->host_no, ret, fcport->d_id.b24));
1075 }
1055 } 1076 }
1056 } 1077 }
1057 1078
1058 if (status == QLA_SUCCESS &&
1059 ((!ha->flags.enable_target_reset &&
1060 !ha->flags.enable_lip_reset) ||
1061 ha->flags.enable_lip_full_login)) {
1062
1063 status = qla2x00_full_login_lip(ha);
1064 }
1065
1066 /* Issue marker command only when we are going to start the I/O */ 1079 /* Issue marker command only when we are going to start the I/O */
1067 ha->marker_needed = 1; 1080 ha->marker_needed = 1;
1068 1081
1069 if (status) { 1082 return QLA_SUCCESS;
1070 /* Empty */
1071 DEBUG2_3(printk("%s(%ld): **** FAILED ****\n",
1072 __func__,
1073 ha->host_no));
1074 } else {
1075 /* Empty */
1076 DEBUG3(printk("%s(%ld): exiting normally.\n",
1077 __func__,
1078 ha->host_no));
1079 }
1080
1081 return(status);
1082} 1083}
1083 1084
1084/* 1085/*
@@ -1413,7 +1414,9 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
1413 1414
1414 sht = &qla2x00_driver_template; 1415 sht = &qla2x00_driver_template;
1415 if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 || 1416 if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 ||
1416 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432) 1417 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432 ||
1418 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP5422 ||
1419 pdev->device == PCI_DEVICE_ID_QLOGIC_ISP5432)
1417 sht = &qla24xx_driver_template; 1420 sht = &qla24xx_driver_template;
1418 host = scsi_host_alloc(sht, sizeof(scsi_qla_host_t)); 1421 host = scsi_host_alloc(sht, sizeof(scsi_qla_host_t));
1419 if (host == NULL) { 1422 if (host == NULL) {
diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h
index 1fa0bce6b24e..459e0d6bd2b4 100644
--- a/drivers/scsi/qla2xxx/qla_version.h
+++ b/drivers/scsi/qla2xxx/qla_version.h
@@ -7,7 +7,7 @@
7/* 7/*
8 * Driver version 8 * Driver version
9 */ 9 */
10#define QLA2XXX_VERSION "8.01.07-k3" 10#define QLA2XXX_VERSION "8.01.07-k4"
11 11
12#define QLA_DRIVER_MAJOR_VER 8 12#define QLA_DRIVER_MAJOR_VER 8
13#define QLA_DRIVER_MINOR_VER 1 13#define QLA_DRIVER_MINOR_VER 1