aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_init.c
diff options
context:
space:
mode:
authorJames Smart <James.Smart@Emulex.Com>2006-12-02 13:34:56 -0500
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-12-03 10:31:04 -0500
commit4ff43246e45943200ae3233732adf8708c2faef6 (patch)
tree28204d5a11c4ca0de54c36a9e0bca9cfd3317f1c /drivers/scsi/lpfc/lpfc_init.c
parentc7743956f8cb7b496c05d8444050eba908662a14 (diff)
[SCSI] lpfc 8.1.11 : Add MSI (Message Signalled Interrupts) support
Add MSI (Message Signalled Interrupts) support Actual use must be enabled via the new module parameter "lpfc_use_msi" Defaults to no use Many thanks to Frederic Temporelli who implemented the initial patch. Signed-off-by: Frederic Temporelli <frederic.temporelli@ext.bull.net> Signed-off-by: James Smart <James.Smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_init.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 6b0718573ac5..71ee0cd32216 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -1653,6 +1653,14 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
1653 if (error) 1653 if (error)
1654 goto out_remove_host; 1654 goto out_remove_host;
1655 1655
1656 if (phba->cfg_use_msi) {
1657 error = pci_enable_msi(phba->pcidev);
1658 if (error)
1659 lpfc_printf_log(phba, KERN_INFO, LOG_INIT, "%d:0452 "
1660 "Enable MSI failed, continuing with "
1661 "IRQ\n", phba->brd_no);
1662 }
1663
1656 error = request_irq(phba->pcidev->irq, lpfc_intr_handler, IRQF_SHARED, 1664 error = request_irq(phba->pcidev->irq, lpfc_intr_handler, IRQF_SHARED,
1657 LPFC_DRIVER_NAME, phba); 1665 LPFC_DRIVER_NAME, phba);
1658 if (error) { 1666 if (error) {
@@ -1732,6 +1740,7 @@ out_free_irq:
1732 lpfc_stop_timer(phba); 1740 lpfc_stop_timer(phba);
1733 phba->work_hba_events = 0; 1741 phba->work_hba_events = 0;
1734 free_irq(phba->pcidev->irq, phba); 1742 free_irq(phba->pcidev->irq, phba);
1743 pci_disable_msi(phba->pcidev);
1735out_free_sysfs_attr: 1744out_free_sysfs_attr:
1736 lpfc_free_sysfs_attr(phba); 1745 lpfc_free_sysfs_attr(phba);
1737out_remove_host: 1746out_remove_host:
@@ -1798,6 +1807,7 @@ lpfc_pci_remove_one(struct pci_dev *pdev)
1798 1807
1799 /* Release the irq reservation */ 1808 /* Release the irq reservation */
1800 free_irq(phba->pcidev->irq, phba); 1809 free_irq(phba->pcidev->irq, phba);
1810 pci_disable_msi(phba->pcidev);
1801 1811
1802 lpfc_cleanup(phba, 0); 1812 lpfc_cleanup(phba, 0);
1803 lpfc_stop_timer(phba); 1813 lpfc_stop_timer(phba);