diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 23:32:16 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 23:32:16 -0400 |
commit | 6ec129c3a2f8b38bc37e42348470ccfcb7460146 (patch) | |
tree | 3f11a99b9680728951b371fe12b5e01b6fc545a4 /drivers/scsi/qla2xxx | |
parent | 01e73be3c8f254ef19d787f9b6757468175267eb (diff) | |
parent | b64ddf96456cde17be22bf74cafed381a29d58ba (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.c | 33 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 15 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 6 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_version.h | 2 |
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) | |||
130 | int | 130 | int |
131 | qla2100_pci_config(scsi_qla_host_t *ha) | 131 | qla2100_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) | |||
166 | int | 165 | int |
167 | qla2300_pci_config(scsi_qla_host_t *ha) | 166 | qla2300_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(®->ctrl_status, 0x0); | 215 | WRT_REG_WORD(®->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) | |||
253 | int | 251 | int |
254 | qla24xx_pci_config(scsi_qla_host_t *ha) | 252 | qla24xx_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); |
1728 | skip_msix: | 1728 | skip_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 | } | ||
1738 | skip_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); | |||
36 | MODULE_PARM_DESC(ql2xlogintimeout, | 36 | MODULE_PARM_DESC(ql2xlogintimeout, |
37 | "Login timeout value in seconds."); | 37 | "Login timeout value in seconds."); |
38 | 38 | ||
39 | int qlport_down_retry = 30; | 39 | int qlport_down_retry; |
40 | module_param(qlport_down_retry, int, S_IRUGO|S_IRUSR); | 40 | module_param(qlport_down_retry, int, S_IRUGO|S_IRUSR); |
41 | MODULE_PARM_DESC(qlport_down_retry, | 41 | MODULE_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 |