aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 23:32:16 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 23:32:16 -0400
commit6ec129c3a2f8b38bc37e42348470ccfcb7460146 (patch)
tree3f11a99b9680728951b371fe12b5e01b6fc545a4 /drivers/scsi/qla2xxx
parent01e73be3c8f254ef19d787f9b6757468175267eb (diff)
parentb64ddf96456cde17be22bf74cafed381a29d58ba (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (58 commits) [SCSI] zfcp: clear boxed flag on unit reopen. [SCSI] zfcp: clear adapter failed flag if an fsf request times out. [SCSI] zfcp: rework request ID management. [SCSI] zfcp: Fix deadlock between zfcp ERP and SCSI [SCSI] zfcp: Locking for req_no and req_seq_no [SCSI] zfcp: print S_ID and D_ID with 3 bytes [SCSI] ipr: Use PCI-E reset API for new ipr adapter [SCSI] qla2xxx: Update version number to 8.01.07-k7. [SCSI] qla2xxx: Add MSI support. [SCSI] qla2xxx: Correct pci_set_msi() usage semantics. [SCSI] qla2xxx: Attempt to stop firmware only if it had been previously executed. [SCSI] qla2xxx: Honor NVRAM port-down-retry-count settings. [SCSI] qla2xxx: Error-out during probe() if we're unable to complete HBA initialization. [SCSI] zfcp: Stop system after memory corruption [SCSI] mesh: cleanup variable usage in interrupt handler [SCSI] megaraid: replace yield() with cond_resched() [SCSI] megaraid: fix warnings when CONFIG_PROC_FS=n [SCSI] aacraid: correct SUN products to README [SCSI] aacraid: superfluous adapter reset for IBM 8 series ServeRAID controllers [SCSI] aacraid: kexec fix (reset interrupt handler) ...
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c33
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c15
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c6
-rw-r--r--drivers/scsi/qla2xxx/qla_version.h2
4 files changed, 33 insertions, 23 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 3e296ab845b6..db998d84cd40 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -130,18 +130,17 @@ qla2x00_initialize_adapter(scsi_qla_host_t *ha)
130int 130int
131qla2100_pci_config(scsi_qla_host_t *ha) 131qla2100_pci_config(scsi_qla_host_t *ha)
132{ 132{
133 uint16_t w, mwi; 133 int ret;
134 uint16_t w;
134 uint32_t d; 135 uint32_t d;
135 unsigned long flags; 136 unsigned long flags;
136 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; 137 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
137 138
138 pci_set_master(ha->pdev); 139 pci_set_master(ha->pdev);
139 mwi = 0; 140 ret = pci_set_mwi(ha->pdev);
140 if (pci_set_mwi(ha->pdev))
141 mwi = PCI_COMMAND_INVALIDATE;
142 141
143 pci_read_config_word(ha->pdev, PCI_COMMAND, &w); 142 pci_read_config_word(ha->pdev, PCI_COMMAND, &w);
144 w |= mwi | (PCI_COMMAND_PARITY | PCI_COMMAND_SERR); 143 w |= (PCI_COMMAND_PARITY | PCI_COMMAND_SERR);
145 pci_write_config_word(ha->pdev, PCI_COMMAND, w); 144 pci_write_config_word(ha->pdev, PCI_COMMAND, w);
146 145
147 /* Reset expansion ROM address decode enable */ 146 /* Reset expansion ROM address decode enable */
@@ -166,22 +165,22 @@ qla2100_pci_config(scsi_qla_host_t *ha)
166int 165int
167qla2300_pci_config(scsi_qla_host_t *ha) 166qla2300_pci_config(scsi_qla_host_t *ha)
168{ 167{
169 uint16_t w, mwi; 168 int ret;
169 uint16_t w;
170 uint32_t d; 170 uint32_t d;
171 unsigned long flags = 0; 171 unsigned long flags = 0;
172 uint32_t cnt; 172 uint32_t cnt;
173 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; 173 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
174 174
175 pci_set_master(ha->pdev); 175 pci_set_master(ha->pdev);
176 mwi = 0; 176 ret = pci_set_mwi(ha->pdev);
177 if (pci_set_mwi(ha->pdev))
178 mwi = PCI_COMMAND_INVALIDATE;
179 177
180 pci_read_config_word(ha->pdev, PCI_COMMAND, &w); 178 pci_read_config_word(ha->pdev, PCI_COMMAND, &w);
181 w |= mwi | (PCI_COMMAND_PARITY | PCI_COMMAND_SERR); 179 w |= (PCI_COMMAND_PARITY | PCI_COMMAND_SERR);
182 180
183 if (IS_QLA2322(ha) || IS_QLA6322(ha)) 181 if (IS_QLA2322(ha) || IS_QLA6322(ha))
184 w &= ~PCI_COMMAND_INTX_DISABLE; 182 w &= ~PCI_COMMAND_INTX_DISABLE;
183 pci_write_config_word(ha->pdev, PCI_COMMAND, w);
185 184
186 /* 185 /*
187 * If this is a 2300 card and not 2312, reset the 186 * If this is a 2300 card and not 2312, reset the
@@ -210,7 +209,7 @@ qla2300_pci_config(scsi_qla_host_t *ha)
210 ha->fb_rev = RD_FB_CMD_REG(ha, reg); 209 ha->fb_rev = RD_FB_CMD_REG(ha, reg);
211 210
212 if (ha->fb_rev == FPM_2300) 211 if (ha->fb_rev == FPM_2300)
213 w &= ~PCI_COMMAND_INVALIDATE; 212 pci_clear_mwi(ha->pdev);
214 213
215 /* Deselect FPM registers. */ 214 /* Deselect FPM registers. */
216 WRT_REG_WORD(&reg->ctrl_status, 0x0); 215 WRT_REG_WORD(&reg->ctrl_status, 0x0);
@@ -227,7 +226,6 @@ qla2300_pci_config(scsi_qla_host_t *ha)
227 226
228 spin_unlock_irqrestore(&ha->hardware_lock, flags); 227 spin_unlock_irqrestore(&ha->hardware_lock, flags);
229 } 228 }
230 pci_write_config_word(ha->pdev, PCI_COMMAND, w);
231 229
232 pci_write_config_byte(ha->pdev, PCI_LATENCY_TIMER, 0x80); 230 pci_write_config_byte(ha->pdev, PCI_LATENCY_TIMER, 0x80);
233 231
@@ -253,19 +251,18 @@ qla2300_pci_config(scsi_qla_host_t *ha)
253int 251int
254qla24xx_pci_config(scsi_qla_host_t *ha) 252qla24xx_pci_config(scsi_qla_host_t *ha)
255{ 253{
256 uint16_t w, mwi; 254 int ret;
255 uint16_t w;
257 uint32_t d; 256 uint32_t d;
258 unsigned long flags = 0; 257 unsigned long flags = 0;
259 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; 258 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
260 int pcix_cmd_reg, pcie_dctl_reg; 259 int pcix_cmd_reg, pcie_dctl_reg;
261 260
262 pci_set_master(ha->pdev); 261 pci_set_master(ha->pdev);
263 mwi = 0; 262 ret = pci_set_mwi(ha->pdev);
264 if (pci_set_mwi(ha->pdev))
265 mwi = PCI_COMMAND_INVALIDATE;
266 263
267 pci_read_config_word(ha->pdev, PCI_COMMAND, &w); 264 pci_read_config_word(ha->pdev, PCI_COMMAND, &w);
268 w |= mwi | (PCI_COMMAND_PARITY | PCI_COMMAND_SERR); 265 w |= (PCI_COMMAND_PARITY | PCI_COMMAND_SERR);
269 w &= ~PCI_COMMAND_INTX_DISABLE; 266 w &= ~PCI_COMMAND_INTX_DISABLE;
270 pci_write_config_word(ha->pdev, PCI_COMMAND, w); 267 pci_write_config_word(ha->pdev, PCI_COMMAND, w);
271 268
@@ -3931,6 +3928,8 @@ qla2x00_try_to_stop_firmware(scsi_qla_host_t *ha)
3931 3928
3932 if (!IS_QLA24XX(ha) && !IS_QLA54XX(ha)) 3929 if (!IS_QLA24XX(ha) && !IS_QLA54XX(ha))
3933 return; 3930 return;
3931 if (!ha->fw_major_version)
3932 return;
3934 3933
3935 ret = qla2x00_stop_firmware(ha); 3934 ret = qla2x00_stop_firmware(ha);
3936 for (retries = 5; ret != QLA_SUCCESS && retries ; retries--) { 3935 for (retries = 5; ret != QLA_SUCCESS && retries ; retries--) {
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index d4885616cd39..ca463469063d 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1726,6 +1726,17 @@ qla2x00_request_irqs(scsi_qla_host_t *ha)
1726 qla_printk(KERN_WARNING, ha, 1726 qla_printk(KERN_WARNING, ha,
1727 "MSI-X: Falling back-to INTa mode -- %d.\n", ret); 1727 "MSI-X: Falling back-to INTa mode -- %d.\n", ret);
1728skip_msix: 1728skip_msix:
1729
1730 if (!IS_QLA24XX(ha))
1731 goto skip_msi;
1732
1733 ret = pci_enable_msi(ha->pdev);
1734 if (!ret) {
1735 DEBUG2(qla_printk(KERN_INFO, ha, "MSI: Enabled.\n"));
1736 ha->flags.msi_enabled = 1;
1737 }
1738skip_msi:
1739
1729 ret = request_irq(ha->pdev->irq, ha->isp_ops.intr_handler, 1740 ret = request_irq(ha->pdev->irq, ha->isp_ops.intr_handler,
1730 IRQF_DISABLED|IRQF_SHARED, QLA2XXX_DRIVER_NAME, ha); 1741 IRQF_DISABLED|IRQF_SHARED, QLA2XXX_DRIVER_NAME, ha);
1731 if (!ret) { 1742 if (!ret) {
@@ -1746,6 +1757,8 @@ qla2x00_free_irqs(scsi_qla_host_t *ha)
1746 1757
1747 if (ha->flags.msix_enabled) 1758 if (ha->flags.msix_enabled)
1748 qla24xx_disable_msix(ha); 1759 qla24xx_disable_msix(ha);
1749 else if (ha->flags.inta_enabled) 1760 else if (ha->flags.inta_enabled) {
1750 free_irq(ha->host->irq, ha); 1761 free_irq(ha->host->irq, ha);
1762 pci_disable_msi(ha->pdev);
1763 }
1751} 1764}
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index b78919a318e2..dd076da86a46 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -36,7 +36,7 @@ module_param(ql2xlogintimeout, int, S_IRUGO|S_IRUSR);
36MODULE_PARM_DESC(ql2xlogintimeout, 36MODULE_PARM_DESC(ql2xlogintimeout,
37 "Login timeout value in seconds."); 37 "Login timeout value in seconds.");
38 38
39int qlport_down_retry = 30; 39int qlport_down_retry;
40module_param(qlport_down_retry, int, S_IRUGO|S_IRUSR); 40module_param(qlport_down_retry, int, S_IRUGO|S_IRUSR);
41MODULE_PARM_DESC(qlport_down_retry, 41MODULE_PARM_DESC(qlport_down_retry,
42 "Maximum number of command retries to a port that returns " 42 "Maximum number of command retries to a port that returns "
@@ -1577,9 +1577,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
1577 goto probe_failed; 1577 goto probe_failed;
1578 } 1578 }
1579 1579
1580 if (qla2x00_initialize_adapter(ha) && 1580 if (qla2x00_initialize_adapter(ha)) {
1581 !(ha->device_flags & DFLG_NO_CABLE)) {
1582
1583 qla_printk(KERN_WARNING, ha, 1581 qla_printk(KERN_WARNING, ha,
1584 "Failed to initialize adapter\n"); 1582 "Failed to initialize adapter\n");
1585 1583
diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h
index dc85495c337f..c375a4efbc71 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-k6" 10#define QLA2XXX_VERSION "8.01.07-k7"
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