Commit 7ab5d6ec authored by Andrew Vasquez's avatar Andrew Vasquez Committed by James Bottomley

[PATCH] Updated qla2xxx driver.

-  Bump version number -> 8.00.00b10.

-  Use down() not down_interruptible() while waiting for mailbox
   completions.
  
        o down_interruptible() is the wrong thing to do here 
          (in case a signal hits you sooo do the wrong thing
          and corrupt the semaphore)
          (Arjan van de Ven arjanv_redhat.com)

-  Misc. ISP6312/ISP6322 changes:
  
        o Asynchronous IOCB handling is not available on 
          ISP6312 and ISP6322 type boards.
  
        o Firmware type (FLX) desgnation fix. 

-  Clean up some extraneous code:
  
        o Remove duplicate call to qla2x00_config_os().
        o Remove unused structure member rsvd in struct dev_id.

-  Create single module firmware loaders for each firmware image
   shipped with the driver (2/2).

-  Create single module firmware loaders for each firmware image
   shipped with the driver.

-  Resync with latest released firmware 3.02.21.
parent 1af8584c
...@@ -15,9 +15,27 @@ config SCSI_QLA22XX ...@@ -15,9 +15,27 @@ config SCSI_QLA22XX
---help--- ---help---
This driver supports the QLogic 22xx (ISP2200) host adapter family. This driver supports the QLogic 22xx (ISP2200) host adapter family.
config SCSI_QLA23XX config SCSI_QLA2300
tristate "QLogic ISP23xx host adapter family support" tristate "QLogic ISP2300 host adapter family support"
depends on SCSI_QLA2XXX_CONFIG depends on SCSI_QLA2XXX_CONFIG
---help--- ---help---
This driver supports the QLogic 23xx (ISP2300, ISP2312, ISP2322, This driver supports the QLogic 2300 (ISP2300, and ISP2312) host
ISP6312 and ISP6322) host adapter family. adapter family.
config SCSI_QLA2322
tristate "QLogic ISP2322 host adapter family support"
depends on SCSI_QLA2XXX_CONFIG
---help---
This driver supports the QLogic 2322 (ISP2322) host adapter family.
config SCSI_QLA6312
tristate "QLogic ISP6312 host adapter family support"
depends on SCSI_QLA2XXX_CONFIG
---help---
This driver supports the QLogic 6312 (ISP6312) host adapter family.
config SCSI_QLA6322
tristate "QLogic ISP6322 host adapter family support"
depends on SCSI_QLA2XXX_CONFIG
---help---
This driver supports the QLogic 6322 (ISP6322) host adapter family.
...@@ -5,8 +5,14 @@ qla2xxx-y := qla_os.o qla_init.o qla_mbx.o qla_iocb.o qla_isr.o qla_gs.o \ ...@@ -5,8 +5,14 @@ qla2xxx-y := qla_os.o qla_init.o qla_mbx.o qla_iocb.o qla_isr.o qla_gs.o \
qla2100-y := ql2100.o ql2100_fw.o qla2100-y := ql2100.o ql2100_fw.o
qla2200-y := ql2200.o ql2200_fw.o qla2200-y := ql2200.o ql2200_fw.o
qla2300-y := ql2300.o ql2300_fw.o ql2322_fw.o ql6312_fw.o ql6322_fw.o qla2300-y := ql2300.o ql2300_fw.o
qla2322-y := ql2322.o ql2322_fw.o
qla6312-y := ql6312.o ql6312_fw.o
qla6322-y := ql6322.o ql6322_fw.o
obj-$(CONFIG_SCSI_QLA21XX) += qla2xxx.o qla2100.o obj-$(CONFIG_SCSI_QLA21XX) += qla2xxx.o qla2100.o
obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o obj-$(CONFIG_SCSI_QLA22XX) += qla2xxx.o qla2200.o
obj-$(CONFIG_SCSI_QLA23XX) += qla2xxx.o qla2300.o obj-$(CONFIG_SCSI_QLA2300) += qla2xxx.o qla2300.o
obj-$(CONFIG_SCSI_QLA2322) += qla2xxx.o qla2322.o
obj-$(CONFIG_SCSI_QLA6312) += qla2xxx.o qla6312.o
obj-$(CONFIG_SCSI_QLA6322) += qla2xxx.o qla6322.o
/* /*
* QLogic ISP23XX device driver for Linux 2.6.x * QLogic ISP2300 device driver for Linux 2.6.x
* Copyright (C) 2003 Christoph Hellwig. * Copyright (C) 2003 Christoph Hellwig.
* Copyright (C) 2003 QLogic Corporation (www.qlogic.com) * Copyright (C) 2003 QLogic Corporation (www.qlogic.com)
* *
...@@ -15,45 +15,13 @@ ...@@ -15,45 +15,13 @@
static char qla_driver_name[] = "qla2300"; static char qla_driver_name[] = "qla2300";
/* 2300/2310/2312 Firmware. */
extern unsigned char fw2300ipx_version[]; extern unsigned char fw2300ipx_version[];
extern unsigned char fw2300ipx_version_str[]; extern unsigned char fw2300ipx_version_str[];
extern unsigned short fw2300ipx_addr01; extern unsigned short fw2300ipx_addr01;
extern unsigned short fw2300ipx_code01[]; extern unsigned short fw2300ipx_code01[];
extern unsigned short fw2300ipx_length01; extern unsigned short fw2300ipx_length01;
/* 2322 Firmware. */
extern unsigned char fw2322ipx_version[];
extern unsigned char fw2322ipx_version_str[];
extern unsigned short fw2322ipx_addr01;
extern unsigned short fw2322ipx_code01[];
extern unsigned short fw2322ipx_length01;
extern unsigned long rseqipx_code_addr01;
extern unsigned short rseqipx_code01[];
extern unsigned short rseqipx_code_length01;
extern unsigned long xseqipx_code_addr01;
extern unsigned short xseqipx_code01[];
extern unsigned short xseqipx_code_length01;
/* 6312 Firmware. */
extern unsigned char fw2300flx_version[];
extern unsigned char fw2300flx_version_str[];
extern unsigned short fw2300flx_addr01;
extern unsigned short fw2300flx_code01[];
extern unsigned short fw2300flx_length01;
/* 6322 Firmware. */
extern unsigned char fw2322flx_version[];
extern unsigned char fw2322flx_version_str[];
extern unsigned short fw2322flx_addr01;
extern unsigned short fw2322flx_code01[];
extern unsigned short fw2322flx_length01;
extern unsigned long rseqflx_code_addr01;
extern unsigned short rseqflx_code01[];
extern unsigned short rseqflx_code_length01;
extern unsigned long xseqflx_code_addr01;
extern unsigned short xseqflx_code01[];
extern unsigned short xseqflx_code_length01;
static struct qla_fw_info qla_fw_tbl[] = { static struct qla_fw_info qla_fw_tbl[] = {
/* Start of 23xx firmware list */
{ {
.addressing = FW_INFO_ADDR_NORMAL, .addressing = FW_INFO_ADDR_NORMAL,
.fwcode = &fw2300ipx_code01[0], .fwcode = &fw2300ipx_code01[0],
...@@ -61,57 +29,6 @@ static struct qla_fw_info qla_fw_tbl[] = { ...@@ -61,57 +29,6 @@ static struct qla_fw_info qla_fw_tbl[] = {
.fwstart = &fw2300ipx_addr01, .fwstart = &fw2300ipx_addr01,
}, },
{ FW_INFO_ADDR_NOMORE, }, { FW_INFO_ADDR_NOMORE, },
/* Start of 232x firmware list */
{
.addressing = FW_INFO_ADDR_NORMAL,
.fwcode = &fw2322ipx_code01[0],
.fwlen = &fw2322ipx_length01,
.fwstart = &fw2322ipx_addr01,
},
{
.addressing = FW_INFO_ADDR_EXTENDED,
.fwcode = &rseqipx_code01[0],
.fwlen = &rseqipx_code_length01,
.lfwstart = &rseqipx_code_addr01,
},
{
.addressing = FW_INFO_ADDR_EXTENDED,
.fwcode = &xseqipx_code01[0],
.fwlen = &xseqipx_code_length01,
.lfwstart = &xseqipx_code_addr01,
},
{ FW_INFO_ADDR_NOMORE, },
/* Start of 631x firmware list */
{
.addressing = FW_INFO_ADDR_NORMAL,
.fwcode = &fw2300flx_code01[0],
.fwlen = &fw2300flx_length01,
.fwstart = &fw2300flx_addr01,
},
{ FW_INFO_ADDR_NOMORE, },
/* Start of 632x firmware list */
{
.addressing = FW_INFO_ADDR_NORMAL,
.fwcode = &fw2322flx_code01[0],
.fwlen = &fw2322flx_length01,
.fwstart = &fw2322flx_addr01,
},
{
.addressing = FW_INFO_ADDR_EXTENDED,
.fwcode = &rseqflx_code01[0],
.fwlen = &rseqflx_code_length01,
.lfwstart = &rseqflx_code_addr01,
},
{
.addressing = FW_INFO_ADDR_EXTENDED,
.fwcode = &xseqflx_code01[0],
.fwlen = &xseqflx_code_length01,
.lfwstart = &xseqflx_code_addr01,
},
{ FW_INFO_ADDR_NOMORE, },
}; };
static struct qla_board_info qla_board_tbl[] = { static struct qla_board_info qla_board_tbl[] = {
...@@ -125,21 +42,6 @@ static struct qla_board_info qla_board_tbl[] = { ...@@ -125,21 +42,6 @@ static struct qla_board_info qla_board_tbl[] = {
.isp_name = "ISP2312", .isp_name = "ISP2312",
.fw_info = qla_fw_tbl, .fw_info = qla_fw_tbl,
}, },
{
.drv_name = qla_driver_name,
.isp_name = "ISP2322",
.fw_info = &qla_fw_tbl[2],
},
{
.drv_name = qla_driver_name,
.isp_name = "ISP6312",
.fw_info = &qla_fw_tbl[6],
},
{
.drv_name = qla_driver_name,
.isp_name = "ISP6322",
.fw_info = &qla_fw_tbl[8],
},
}; };
static struct pci_device_id qla2300_pci_tbl[] = { static struct pci_device_id qla2300_pci_tbl[] = {
...@@ -157,27 +59,6 @@ static struct pci_device_id qla2300_pci_tbl[] = { ...@@ -157,27 +59,6 @@ static struct pci_device_id qla2300_pci_tbl[] = {
.subdevice = PCI_ANY_ID, .subdevice = PCI_ANY_ID,
.driver_data = (unsigned long)&qla_board_tbl[1], .driver_data = (unsigned long)&qla_board_tbl[1],
}, },
{
.vendor = PCI_VENDOR_ID_QLOGIC,
.device = PCI_DEVICE_ID_QLOGIC_ISP2322,
.subvendor = PCI_ANY_ID,
.subdevice = PCI_ANY_ID,
.driver_data = (unsigned long)&qla_board_tbl[2],
},
{
.vendor = PCI_VENDOR_ID_QLOGIC,
.device = PCI_DEVICE_ID_QLOGIC_ISP6312,
.subvendor = PCI_ANY_ID,
.subdevice = PCI_ANY_ID,
.driver_data = (unsigned long)&qla_board_tbl[3],
},
{
.vendor = PCI_VENDOR_ID_QLOGIC,
.device = PCI_DEVICE_ID_QLOGIC_ISP6322,
.subvendor = PCI_ANY_ID,
.subdevice = PCI_ANY_ID,
.driver_data = (unsigned long)&qla_board_tbl[4],
},
{0, 0}, {0, 0},
}; };
MODULE_DEVICE_TABLE(pci, qla2300_pci_tbl); MODULE_DEVICE_TABLE(pci, qla2300_pci_tbl);
...@@ -218,5 +99,5 @@ module_init(qla2300_init); ...@@ -218,5 +99,5 @@ module_init(qla2300_init);
module_exit(qla2300_exit); module_exit(qla2300_exit);
MODULE_AUTHOR("QLogic Corporation"); MODULE_AUTHOR("QLogic Corporation");
MODULE_DESCRIPTION("QLogic ISP23xx FC-SCSI Host Bus Adapter driver"); MODULE_DESCRIPTION("QLogic ISP2300 FC-SCSI Host Bus Adapter driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
/*
* QLogic ISP2322 device driver for Linux 2.6.x
* Copyright (C) 2003 QLogic Corporation (www.qlogic.com)
*
* Released under GPL v2.
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/pci.h>
#include "qla_os.h"
#include "qla_def.h"
static char qla_driver_name[] = "qla2322";
extern unsigned char fw2322ipx_version[];
extern unsigned char fw2322ipx_version_str[];
extern unsigned short fw2322ipx_addr01;
extern unsigned short fw2322ipx_code01[];
extern unsigned short fw2322ipx_length01;
extern unsigned long rseqipx_code_addr01;
extern unsigned short rseqipx_code01[];
extern unsigned short rseqipx_code_length01;
extern unsigned long xseqipx_code_addr01;
extern unsigned short xseqipx_code01[];
extern unsigned short xseqipx_code_length01;
static struct qla_fw_info qla_fw_tbl[] = {
{
.addressing = FW_INFO_ADDR_NORMAL,
.fwcode = &fw2322ipx_code01[0],
.fwlen = &fw2322ipx_length01,
.fwstart = &fw2322ipx_addr01,
},
{
.addressing = FW_INFO_ADDR_EXTENDED,
.fwcode = &rseqipx_code01[0],
.fwlen = &rseqipx_code_length01,
.lfwstart = &rseqipx_code_addr01,
},
{
.addressing = FW_INFO_ADDR_EXTENDED,
.fwcode = &xseqipx_code01[0],
.fwlen = &xseqipx_code_length01,
.lfwstart = &xseqipx_code_addr01,
},
{ FW_INFO_ADDR_NOMORE, },
};
static struct qla_board_info qla_board_tbl[] = {
{
.drv_name = qla_driver_name,
.isp_name = "ISP2322",
.fw_info = qla_fw_tbl,
},
};
static struct pci_device_id qla2322_pci_tbl[] = {
{
.vendor = PCI_VENDOR_ID_QLOGIC,
.device = PCI_DEVICE_ID_QLOGIC_ISP2322,
.subvendor = PCI_ANY_ID,
.subdevice = PCI_ANY_ID,
.driver_data = (unsigned long)&qla_board_tbl[0],
},
{0, 0},
};
MODULE_DEVICE_TABLE(pci, qla2322_pci_tbl);
static int __devinit
qla2322_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
{
return qla2x00_probe_one(pdev,
(struct qla_board_info *)id->driver_data);
}
static void __devexit
qla2322_remove_one(struct pci_dev *pdev)
{
qla2x00_remove_one(pdev);
}
static struct pci_driver qla2322_pci_driver = {
.name = "qla2322",
.id_table = qla2322_pci_tbl,
.probe = qla2322_probe_one,
.remove = __devexit_p(qla2322_remove_one),
};
static int __init
qla2322_init(void)
{
return pci_module_init(&qla2322_pci_driver);
}
static void __exit
qla2322_exit(void)
{
pci_unregister_driver(&qla2322_pci_driver);
}
module_init(qla2322_init);
module_exit(qla2322_exit);
MODULE_AUTHOR("QLogic Corporation");
MODULE_DESCRIPTION("QLogic ISP2322 FC-SCSI Host Bus Adapter driver");
MODULE_LICENSE("GPL");
/*
* QLogic ISP6312 device driver for Linux 2.6.x
* Copyright (C) 2003 QLogic Corporation (www.qlogic.com)
*
* Released under GPL v2.
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/pci.h>
#include "qla_os.h"
#include "qla_def.h"
static char qla_driver_name[] = "qla6312";
extern unsigned char fw2300flx_version[];
extern unsigned char fw2300flx_version_str[];
extern unsigned short fw2300flx_addr01;
extern unsigned short fw2300flx_code01[];
extern unsigned short fw2300flx_length01;
static struct qla_fw_info qla_fw_tbl[] = {
{
.addressing = FW_INFO_ADDR_NORMAL,
.fwcode = &fw2300flx_code01[0],
.fwlen = &fw2300flx_length01,
.fwstart = &fw2300flx_addr01,
},
{ FW_INFO_ADDR_NOMORE, },
};
static struct qla_board_info qla_board_tbl[] = {
{
.drv_name = qla_driver_name,
.isp_name = "ISP6312",
.fw_info = qla_fw_tbl,
},
};
static struct pci_device_id qla6312_pci_tbl[] = {
{
.vendor = PCI_VENDOR_ID_QLOGIC,
.device = PCI_DEVICE_ID_QLOGIC_ISP6312,
.subvendor = PCI_ANY_ID,
.subdevice = PCI_ANY_ID,
.driver_data = (unsigned long)&qla_board_tbl[0],
},
{0, 0},
};
MODULE_DEVICE_TABLE(pci, qla6312_pci_tbl);
static int __devinit
qla6312_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
{
return qla2x00_probe_one(pdev,
(struct qla_board_info *)id->driver_data);
}
static void __devexit
qla6312_remove_one(struct pci_dev *pdev)
{
qla2x00_remove_one(pdev);
}
static struct pci_driver qla6312_pci_driver = {
.name = "qla6312",
.id_table = qla6312_pci_tbl,
.probe = qla6312_probe_one,
.remove = __devexit_p(qla6312_remove_one),
};
static int __init
qla6312_init(void)
{
return pci_module_init(&qla6312_pci_driver);
}
static void __exit
qla6312_exit(void)
{
pci_unregister_driver(&qla6312_pci_driver);
}
module_init(qla6312_init);
module_exit(qla6312_exit);
MODULE_AUTHOR("QLogic Corporation");
MODULE_DESCRIPTION("QLogic ISP6312 FC-SCSI Host Bus Adapter driver");
MODULE_LICENSE("GPL");
/*
* QLogic ISP6322 device driver for Linux 2.6.x
* Copyright (C) 2003 QLogic Corporation (www.qlogic.com)
*
* Released under GPL v2.
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/pci.h>
#include "qla_os.h"
#include "qla_def.h"
static char qla_driver_name[] = "qla6322";
extern unsigned char fw2322flx_version[];
extern unsigned char fw2322flx_version_str[];
extern unsigned short fw2322flx_addr01;
extern unsigned short fw2322flx_code01[];
extern unsigned short fw2322flx_length01;
extern unsigned long rseqflx_code_addr01;
extern unsigned short rseqflx_code01[];
extern unsigned short rseqflx_code_length01;
extern unsigned long xseqflx_code_addr01;
extern unsigned short xseqflx_code01[];
extern unsigned short xseqflx_code_length01;
static struct qla_fw_info qla_fw_tbl[] = {
{
.addressing = FW_INFO_ADDR_NORMAL,
.fwcode = &fw2322flx_code01[0],
.fwlen = &fw2322flx_length01,
.fwstart = &fw2322flx_addr01,
},
{
.addressing = FW_INFO_ADDR_EXTENDED,
.fwcode = &rseqflx_code01[0],
.fwlen = &rseqflx_code_length01,
.lfwstart = &rseqflx_code_addr01,
},
{
.addressing = FW_INFO_ADDR_EXTENDED,
.fwcode = &xseqflx_code01[0],
.fwlen = &xseqflx_code_length01,
.lfwstart = &xseqflx_code_addr01,
},
{ FW_INFO_ADDR_NOMORE, },
};
static struct qla_board_info qla_board_tbl[] = {
{
.drv_name = qla_driver_name,
.isp_name = "ISP6322",
.fw_info = qla_fw_tbl,
},
};
static struct pci_device_id qla6322_pci_tbl[] = {
{
.vendor = PCI_VENDOR_ID_QLOGIC,
.device = PCI_DEVICE_ID_QLOGIC_ISP6322,
.subvendor = PCI_ANY_ID,
.subdevice = PCI_ANY_ID,
.driver_data = (unsigned long)&qla_board_tbl[0],
},
{0, 0},
};
MODULE_DEVICE_TABLE(pci, qla6322_pci_tbl);
static int __devinit
qla6322_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
{
return qla2x00_probe_one(pdev,
(struct qla_board_info *)id->driver_data);
}
static void __devexit
qla6322_remove_one(struct pci_dev *pdev)
{
qla2x00_remove_one(pdev);
}
static struct pci_driver qla6322_pci_driver = {
.name = "qla6322",
.id_table = qla6322_pci_tbl,
.probe = qla6322_probe_one,
.remove = __devexit_p(qla6322_remove_one),
};
static int __init
qla6322_init(void)
{
return pci_module_init(&qla6322_pci_driver);
}
static void __exit
qla6322_exit(void)
{
pci_unregister_driver(&qla6322_pci_driver);
}
module_init(qla6322_init);
module_exit(qla6322_exit);
MODULE_AUTHOR("QLogic Corporation");
MODULE_DESCRIPTION("QLogic ISP6322 FC-SCSI Host Bus Adapter driver");
MODULE_LICENSE("GPL");
...@@ -53,23 +53,35 @@ ...@@ -53,23 +53,35 @@
#define IS_QLA2200(ha) 0 #define IS_QLA2200(ha) 0
#endif #endif
#if defined(CONFIG_SCSI_QLA23XX) || defined(CONFIG_SCSI_QLA23XX_MODULE) #if defined(CONFIG_SCSI_QLA2300) || defined(CONFIG_SCSI_QLA2300_MODULE)
#define IS_QLA2300(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2300) #define IS_QLA2300(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2300)
#define IS_QLA2312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2312) #define IS_QLA2312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2312)
#define IS_QLA2322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2322)
#define IS_QLA6312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6312)
#define IS_QLA6322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6322)
#define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \
IS_QLA6312(ha) || IS_QLA6322(ha))
#else #else
#define IS_QLA2300(ha) 0 #define IS_QLA2300(ha) 0
#define IS_QLA2312(ha) 0 #define IS_QLA2312(ha) 0
#endif
#if defined(CONFIG_SCSI_QLA2322) || defined(CONFIG_SCSI_QLA2322_MODULE)
#define IS_QLA2322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2322)
#else
#define IS_QLA2322(ha) 0 #define IS_QLA2322(ha) 0
#endif
#if defined(CONFIG_SCSI_QLA6312) || defined(CONFIG_SCSI_QLA6312_MODULE)
#define IS_QLA6312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6312)
#else
#define IS_QLA6312(ha) 0 #define IS_QLA6312(ha) 0
#endif
#if defined(CONFIG_SCSI_QLA6322) || defined(CONFIG_SCSI_QLA6322_MODULE)
#define IS_QLA6322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6322)
#else
#define IS_QLA6322(ha) 0 #define IS_QLA6322(ha) 0
#define IS_QLA23XX(ha) 0
#endif #endif
#define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \
IS_QLA6312(ha) || IS_QLA6322(ha))
/* /*
* Only non-ISP2[12]00 have extended addressing support in the firmware. * Only non-ISP2[12]00 have extended addressing support in the firmware.
*/ */
......
...@@ -1572,8 +1572,6 @@ qla2x00_configure_loop(scsi_qla_host_t *ha) ...@@ -1572,8 +1572,6 @@ qla2x00_configure_loop(scsi_qla_host_t *ha)
qla2x00_config_os(ha); qla2x00_config_os(ha);
qla2x00_config_os(ha);
/* If we found all devices then go ready */ /* If we found all devices then go ready */
if (!(test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags))) { if (!(test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags))) {
atomic_set(&ha->loop_state, LOOP_READY); atomic_set(&ha->loop_state, LOOP_READY);
...@@ -1632,7 +1630,6 @@ qla2x00_configure_local_loop(scsi_qla_host_t *ha) ...@@ -1632,7 +1630,6 @@ qla2x00_configure_local_loop(scsi_qla_host_t *ha)
uint8_t domain; uint8_t domain;
uint8_t loop_id_2100; /* ISP2100/ISP2200 -- 4 bytes. */ uint8_t loop_id_2100; /* ISP2100/ISP2200 -- 4 bytes. */
uint16_t loop_id; /* ISP23XX -- 6 bytes. */ uint16_t loop_id; /* ISP23XX -- 6 bytes. */
uint16_t rsvd; /* ISP2XXX -- 8 bytes. */
} *id_list; } *id_list;
#define MAX_ID_LIST_SIZE (sizeof(struct dev_id) * MAX_FIBRE_DEVICES) #define MAX_ID_LIST_SIZE (sizeof(struct dev_id) * MAX_FIBRE_DEVICES)
dma_addr_t id_list_dma; dma_addr_t id_list_dma;
...@@ -2805,6 +2802,7 @@ qla2x00_device_resync(scsi_qla_host_t *ha) ...@@ -2805,6 +2802,7 @@ qla2x00_device_resync(scsi_qla_host_t *ha)
switch (format) { switch (format) {
case 0: case 0:
if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && if (!IS_QLA2100(ha) && !IS_QLA2200(ha) &&
!IS_QLA6312(ha) && !IS_QLA6322(ha) &&
ha->flags.init_done) { ha->flags.init_done) {
/* Handle port RSCN via asyncronous IOCBs */ /* Handle port RSCN via asyncronous IOCBs */
rval2 = qla2x00_handle_port_rscn(ha, rscn_entry, rval2 = qla2x00_handle_port_rscn(ha, rscn_entry,
......
...@@ -545,8 +545,8 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint32_t mbx) ...@@ -545,8 +545,8 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint32_t mbx)
* us, create a new entry in our rscn fcports list and handle * us, create a new entry in our rscn fcports list and handle
* the event like an RSCN. * the event like an RSCN.
*/ */
if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA6312(ha) &&
ha->flags.init_done && mb[1] != 0xffff && !IS_QLA6322(ha) && ha->flags.init_done && mb[1] != 0xffff &&
((ha->operating_mode == P2P && mb[1] != 0) || ((ha->operating_mode == P2P && mb[1] != 0) ||
(ha->operating_mode != P2P && mb[1] != (ha->operating_mode != P2P && mb[1] !=
SNS_FIRST_LOOP_ID)) && (mb[2] == 6 || mb[2] == 7)) { SNS_FIRST_LOOP_ID)) && (mb[2] == 6 || mb[2] == 7)) {
...@@ -774,7 +774,8 @@ qla2x00_process_response_queue(struct scsi_qla_host *ha) ...@@ -774,7 +774,8 @@ qla2x00_process_response_queue(struct scsi_qla_host *ha)
qla2x00_ms_entry(ha, (ms_iocb_entry_t *)pkt); qla2x00_ms_entry(ha, (ms_iocb_entry_t *)pkt);
break; break;
case MBX_IOCB_TYPE: case MBX_IOCB_TYPE:
if (!IS_QLA2100(ha) && !IS_QLA2200(ha)) { if (!IS_QLA2100(ha) && !IS_QLA2200(ha) &&
!IS_QLA6312(ha) && !IS_QLA6322(ha)) {
if (pkt->sys_define == SOURCE_ASYNC_IOCB) { if (pkt->sys_define == SOURCE_ASYNC_IOCB) {
qla2x00_process_iodesc(ha, qla2x00_process_iodesc(ha,
(struct mbx_entry *)pkt); (struct mbx_entry *)pkt);
......
...@@ -175,7 +175,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *ha, mbx_cmd_t *mcp) ...@@ -175,7 +175,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *ha, mbx_cmd_t *mcp)
/* Wait for either the timer to expire /* Wait for either the timer to expire
* or the mbox completion interrupt * or the mbox completion interrupt
*/ */
down_interruptible(&ha->mbx_intr_sem); down(&ha->mbx_intr_sem);
DEBUG11(printk("qla2x00_mailbox_command:" DEBUG11(printk("qla2x00_mailbox_command:"
"waking up." "waking up."
......
...@@ -643,8 +643,7 @@ qla2x00_get_fw_version_str(struct scsi_qla_host *ha, char *str) ...@@ -643,8 +643,7 @@ qla2x00_get_fw_version_str(struct scsi_qla_host *ha, char *str)
ha->fw_minor_version, ha->fw_minor_version,
ha->fw_subminor_version); ha->fw_subminor_version);
/* Workaround till firmware fix. */ if (ha->fw_attributes & BIT_9) {
if (IS_QLA6312(ha) || IS_QLA6322(ha)) {
strcat(str, "FLX"); strcat(str, "FLX");
return (str); return (str);
} }
......
...@@ -19,9 +19,9 @@ ...@@ -19,9 +19,9 @@
/* /*
* Driver version * Driver version
*/ */
#define QLA2XXX_VERSION "8.00.00b8" #define QLA2XXX_VERSION "8.00.00b10"
#define QLA_DRIVER_MAJOR_VER 8 #define QLA_DRIVER_MAJOR_VER 8
#define QLA_DRIVER_MINOR_VER 0 #define QLA_DRIVER_MINOR_VER 0
#define QLA_DRIVER_PATCH_VER 0 #define QLA_DRIVER_PATCH_VER 0
#define QLA_DRIVER_BETA_VER 8 #define QLA_DRIVER_BETA_VER 10
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